problem z MODE_TICKVALUE

O jezykach programowania w platformach i nie tylko.
forexsowicz91
Pasjonat
Pasjonat
Posty: 503
Rejestracja: 25 lis 2011, 17:55

problem z MODE_TICKVALUE

Nieprzeczytany post autor: forexsowicz91 »

hej, mam problem z funkcją MarketInfo a szczegółowo to z MODE_TICKVALUE
dla walut wyświetla poprawną wartość, natomiast dla indeksów, ropy itd. pokazuje zawsze wartość 0,01
kod pisałem sam kilka lat temu, może się coś pozmieniało, nie wiem...

Kod: Zaznacz cały

//---------------
string    Tickvaluetekst="Tick value = ";

   ObjectCreate("Tickvalue",OBJ_LABEL,0,0,0);
   ObjectSetText("Tickvalue",Tickvaluetekst,FontSize ,"Arial",kolor);
   ObjectSet("Tickvalue",OBJPROP_XDISTANCE,5);     
   ObjectSet("Tickvalue",OBJPROP_YDISTANCE,35);
   ObjectSetText("Tickvalue",Tickvaluetekst+DoubleToStr(MarketInfo(Symbol(),MODE_TICKVALUE),2));
//---------------

Awatar użytkownika
Mustafa
Pasjonat
Pasjonat
Posty: 769
Rejestracja: 20 lip 2010, 10:54

Re: problem z MODE_TICKVALUE

Nieprzeczytany post autor: Mustafa »

przy indeksach wartość kontraktu jest liczona inaczej
można to sprawdzić poprzez SYMBOL_TRADE_CALC_MODE

kiedyś używałem taką funkcję ale nie wiem czy nadal będzie działać

Kod: Zaznacz cały

//------------------------------------------------------------------------------------------------------
// wartość pipsa
//------------------------------------------------------------------------------------------------------
double PipsValue(string symbol, double lot_size){
   
   double Pips_Value;
   
   if(SymbolInfoInteger(symbol, SYMBOL_TRADE_CALC_MODE)==0){
      double point = SymbolInfoDouble(symbol, SYMBOL_POINT);
      int digits = SymbolInfoInteger(symbol, SYMBOL_DIGITS);
      int mn = 1;
      if(digits==5 || digits==3) mn = 10;
      
      Pips_Value = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE) * point / SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE)* mn; 
   }else{
      Pips_Value = SymbolInfoDouble(SymbolInfoString(symbol, SYMBOL_CURRENCY_BASE)+"PLN", SYMBOL_ASK) * SymbolInfoDouble(symbol, SYMBOL_TRADE_CONTRACT_SIZE);
      //dla konta w złotówkach "PLN"
   }
   
   Pips_Value  = NormalizeDouble(Pips_Value * lot_size, 2);

  return(Pips_Value);
}

Nie chodzi o to czy masz rację czy nie, tylko o to, co robisz kiedy masz rację lub jak się zachowujesz jeżeli racji nie masz.

Awatar użytkownika
Mustafa
Pasjonat
Pasjonat
Posty: 769
Rejestracja: 20 lip 2010, 10:54

Re: problem z MODE_TICKVALUE

Nieprzeczytany post autor: Mustafa »

https://www.mql5.com/en/docs/constants/ ... _calc_mode


SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE); Minimal price change
SymbolInfoDouble(Symbol(), SYMBOL_TRADE_CONTRACT_SIZE); Trade contract size
Nie chodzi o to czy masz rację czy nie, tylko o to, co robisz kiedy masz rację lub jak się zachowujesz jeżeli racji nie masz.

ODPOWIEDZ