Wartość pipsa i depozytu zabezpieczającego POMOCY

O jezykach programowania w platformach i nie tylko.
tosiek83
Bywalec
Bywalec
Posty: 16
Rejestracja: 24 mar 2008, 13:43

Wartość pipsa i depozytu zabezpieczającego POMOCY

Nieprzeczytany post autor: tosiek83 »

Witam
Napisałem sobie taki skrypt który oblicza wartość pipsa i wartość wymaganego depo do otwarcia danej wielkości pozycji. Tylko mam taki problem bo nie wiem jak go przerobić aby wyliczał wartość depo w walucie depozytu a nie jak jest w walucie bazowej. Do obliczenia wartości pipsa w PLN użyłem wartości TICKVALUE, no a w obliczaniu depo nie wiem jak to zrobić. Macie jakieś pomysły.

Kod: Zaznacz cały

void OnStart()
  {
     double lot = 0.01;
     string waluta_konta = AccountCurrency();
     string walutaBazowa = SymbolInfoString(Symbol(), SYMBOL_CURRENCY_BASE);
     Alert("");   
     Alert("Wartość pipsa dla ", lot ," lota: ",warPipsaPLN(lot),"  ",waluta_konta);
     Alert("Wartość depozytu aby otworzyć pozycję ", lot ," lota: ",wymaganyDepozyt(0.01)," ",walutaBazowa);
  }


//------FUNKCJA----------------------------------------
double wymaganyDepozyt(double lot)       //depo wyrażony w walucie bazowej
   {
      double depo = (100000*lot)/dzwignia_20_30();
      return DoubleToStr(depo,2);
   }
//------KONIEC-----------------------------------------



//------FUNKCJA----------------------------------------  
int dzwignia_20_30()       //dzwignia w zależności od symbolu
{
  if(Symbol()=="EURUSD" || Symbol()=="GBPUSD" || Symbol()=="USDJPY" || Symbol()=="USDCHF" || Symbol()=="USDCAD" ||
     Symbol()=="CADJPY" || Symbol()=="EURCAD" || Symbol()=="EURGBP" || Symbol()=="EURJPY" || Symbol()=="GBPCAD" || 
     Symbol()=="GBPJPY" || Symbol()=="CADCHF" || Symbol()=="EURCHF" || Symbol()=="GBPCHF" || Symbol()=="CHFJPY")
  {
      return 30;
  }
  else
  {
      return 20;
  }
} 
//------KONIEC-----------------------------------------


//------FUNKCJA----------------------------------------
double warPipsaPLN(double lot)      //wartość pipsa wyrażona w walucie depozytu
   {
      double tick = MarketInfo(Symbol(),MODE_TICKVALUE);
      double warP = 0.0001*100000*lot*tick;   
      return DoubleToStr(warP,2);
   }
//------KONIEC-----------------------------------------

tosiek83
Bywalec
Bywalec
Posty: 16
Rejestracja: 24 mar 2008, 13:43

Re: Wartość pipsa i depozytu zabezpieczającego POMOCY

Nieprzeczytany post autor: tosiek83 »

Witam
Nikt nie chciał pomóc, więc ogarnąłem to sam, mam nadzieje że dobrze mi to wyszło. Skrypt liczy wymagany depo, wartość pipsa i wartość spreadu dla pozycji o wielkości 0,01 lota w walucie depozytu. Jeśli coś jest nie tak to proszę o wyjaśnienie co nie tak zrobiłem, z góry dzięki. Pozdro

Kod: Zaznacz cały

#property indicator_chart_window

int start()
  {
   double lot = 0.01;
   string walutaKonta = AccountCurrency();

   Comment("Lot: ",lot,"   depozyt: ",wymaganyDepozytPLN(lot)," ",walutaKonta,"   pips: ",warPipsaPLN(lot)," ",walutaKonta,"   spread: ",warSpreadPLN(lot)," ",walutaKonta);
     
   return(0);
  }

int deinit()
{
   Comment("");
   return(0);
}

//------FUNKCJA----------------------------------------
double wymaganyDepozytPLN(double lot)       //depo wyrażony w walucie depozytu
   {
      double tick = MarketInfo(Symbol(),MODE_TICKVALUE);
      if(Digits==5) tick=tick;
      if(Digits==3) tick=tick/100;
      double cena = (Ask+Bid)/2;
      double depo = ((cena*100000*lot)/dzwignia_20_30())*tick;
      return NormalizeDouble(depo,2);
   }
//------KONIEC-----------------------------------------


//------FUNKCJA----------------------------------------  
int dzwignia_20_30()       //dzwignia w zależności od symbolu
{
  if(Symbol()=="EURUSD" || Symbol()=="GBPUSD" || Symbol()=="USDJPY" || Symbol()=="USDCHF" || Symbol()=="USDCAD" ||
     Symbol()=="CADJPY" || Symbol()=="EURCAD" || Symbol()=="EURGBP" || Symbol()=="EURJPY" || Symbol()=="GBPCAD" || 
     Symbol()=="GBPJPY" || Symbol()=="CADCHF" || Symbol()=="EURCHF" || Symbol()=="GBPCHF" || Symbol()=="CHFJPY")
  {
      return 30;
  }
  else
  {
      return 20;
  }
} 
//------KONIEC-----------------------------------------


//------FUNKCJA----------------------------------------
double warPipsaPLN(double lot)      //wartość pipsa wyrażona w walucie depozytu
   {
      double tick = MarketInfo(Symbol(),MODE_TICKVALUE);
      double warP = 0.0001*100000*lot*tick;   
      return NormalizeDouble(warP,2);
   }
//------KONIEC-----------------------------------------


//------FUNKCJA----------------------------------------
double warSpreadPLN(double lot)
   {
      double tick = MarketInfo(Symbol(),MODE_TICKVALUE);
      if(Digits==5) tick=tick;
      if(Digits==3) tick=tick/100;
      double warS = (Ask-Bid)*lot*100000*tick; 
      return NormalizeDouble(warS,2);
   }
//------KONIEC-----------------------------------------


Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 1677
Rejestracja: 30 lip 2019, 13:15

Re: Wartość pipsa i depozytu zabezpieczającego POMOCY

Nieprzeczytany post autor: ninjaproject »

Wskaźnik ma wartość jedynie dla ciebie i dla pewnych szczególnych parametrów brokera.
Czyli, tobie może do czegoś przydatny, poza tym, bezwartościowy.

Niestety, do pewnego momentu można początkującemu pomóc.
Potem, albo ucz się na płatnych kursach, albo sam kombinuj.
Wszystko jest w sieci.
https://www.mql4.com/
Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4.

grzegrzyw
Gaduła
Gaduła
Posty: 110
Rejestracja: 11 mar 2012, 19:43
Lokalizacja: Świebodzice

Re: Wartość pipsa i depozytu zabezpieczającego POMOCY

Nieprzeczytany post autor: grzegrzyw »

Nie sprawdzałem czy Twój skrypt działa poprawnie, ale do pokazywania wartości, który są zmienne w czasie, skrypty nie bardzo się nadają, bo są wykonywane tylko raz (w momencie wrzucania na wykres) i kończą swoje działanie. Lepszy do tego jest wskaźnik, który na bieżąco pokazuje aktualne wielkości. Załączam przykładowy wskaźnik, który pokazuje to co Cię interesuje, a do tego pokazuje też sporo innych parametrów.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

ODPOWIEDZ