Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1055

 
Igor Makanu :

Her şey açık, ancak tam puanlarda 2 fiyat arasındaki farkı doğru bir şekilde nasıl hesaplayabilirim?

Burada yuvarlamayı kullanabilirsiniz. Ve hangi yönde veya sadece bütün için, karar vermek size kalmış.

 int pips_profit = ( int ) MathFloor (OrderOpenPrice()-OrderClosePrice())/ _Point );
 
Igor Makanu :

ve bu doğru mu? sipariş döngüsünde, her zaman SymbolInfoDouble(OrderSymbol(), SYMBOL_POINT ); yeniden hesaplandı, çünkü OrderSymbol () her seferinde farklı mı olacak?

Yani orada görev biraz farklı - tüm semboller için puan olarak toplam kâr.

 
Konstantin Nikitin :

Burada yuvarlamayı kullanabilirsiniz. Ve hangi yönde veya sadece bütün için, karar vermek size kalmış.


evet, bu tür yapıları unuttum, Kim'in lot hesaplama fonksiyonlarında doğru bir yuvarlama vardı
fxsaber :

Yani orada görev biraz farklı - tüm semboller için puan olarak toplam kâr.

Tamam, ama neden const - const döngüde değişirse derleyici nasıl davranır?

Not: kod okunabilir, ancak kontrol etmeniz gerekiyor, hiç kullanmadım

 
Igor Makanu :

Tamam, ama neden const - const döngüde değişirse derleyici nasıl davranır?

Not: kod okunabilir, ancak kontrol etmeniz gerekiyor, hiç kullanmadım

Her adımda bir değişken oluşturulacaktır. const - bu adımda herhangi bir yerde değişiklik yapılması planlanmamıştır.

 
fxsaber :

Her adım bir değişken yaratacaktır. const - bu adımda herhangi bir yerde değişiklik yapılması planlanmamıştır.

adım, döngünün bir yinelemesi mi?

böyle bir yapının nasıl davranacağı hala net değil, kontrol etmek için bir komut dosyasına ihtiyacınız var

 
fxsaber :

Yani orada görev biraz farklı - tüm semboller için puan olarak toplam kâr.

peki o zaman

 short pipsProfitOrder = ( short ) MathFloor ( ( OrderProfit()+OrderSwap()+OrderCommission() ) / ( SymbolInfoDouble (_OrderSymbol(), SYMBOL_TRADE_TICK_VALUE )*OrderLots()) );

Bir pozisyonun puan farkını hesaplıyorum ama kendim için başvuruda sorun olmayacağını düşünüyorum.

 
Igor Makanu :

adım, döngünün bir yinelemesi mi?

Evet.

böyle bir yapının nasıl davranacağı hala net değil, kontrol etmek için bir komut dosyasına ihtiyacınız var

İşte değişken ömrün uygun kullanımına bir örnek

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

"Bir tüccar için LifeHack: Tanımlar üzerinde ForEach yoğurmak (#define)" makalesinin tartışılması

fxsaber , 2018.02.14 10:54

Performans ölçümü

 #define BENCH(A)                                                              \
{                                                                             \
   const ulong StartTime = GetMicrosecondCount ();                              \
  A;                                                                          \
   Print ( "Time[" + #A + "] = " + ( string )( GetMicrosecondCount () - StartTime)); \
}

double GetAsk()
{
   static MqlTick tick = { 0 };
  
   return ( SymbolInfoTick ( Symbol (),tick) ? tick.ask : 0 );
}

#define AMOUNT 1 e6

void OnStart ()
{
   double Sum = 0 ;
  
  BENCH( for ( int i = 0 ; i < AMOUNT; i++) Sum += GetAsk())
  BENCH( for ( int i = 0 ; i < AMOUNT; i++) Sum += SymbolInfoDouble ( _Symbol , SYMBOL_ASK ))
  
   Print (Sum);
}


Sonuç

 Time [ for (inti= 0 ;i<AMOUNT;i++)Sum+=GetAsk()] = 78952
Time [ for (inti= 0 ;i<AMOUNT;i++)Sum+= SymbolInfoDouble ( _Symbol , SYMBOL_ASK )] = 162606
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5

Konstantin Nikitin , 2019.06.04 19:58

peki o zaman

 short pipsProfitOrder = ( short ) MathFloor ( ( OrderProfit()+OrderSwap()+OrderCommission() ) / ( SymbolInfoDouble (_OrderSymbol(), SYMBOL_TRADE_TICK_VALUE )*OrderLots()) );

Bir pozisyonun puan farkını hesaplıyorum ama kendim için başvuruda sorun olmayacağını düşünüyorum.

Buna maliyetlerle birlikte CURRENT (kapanış anında değil) noktalarına dönüştürme denir.

 
fxsaber :

Buna maliyetlerle birlikte CURRENT (kapanış anında değil) noktalarına dönüştürme denir.

Bu yüzden karı puana çevirmesi gerekiyor. Kapalı pozisyonları hesaplarken, yine de bir noktanın değerinden ilerlemeniz gerekir. Puan cinsinden kâr, açılış fiyatları arasındaki puan farkına eşit olması gerekmez ve kapanışlar.

 
Konstantin Nikitin :

Bu yüzden karı puana çevirmesi gerekiyor.

Bazen kâr = OrderProfit() olarak kabul edilir.

Kapalı pozisyonları hesaplarken, yine de bir noktanın değerinden ilerlemeniz gerekir. Puan cinsinden kâr , açılış ve kapanış fiyatları arasındaki puan farkına eşit olmak zorunda değildir.

Kapanış anındaki pip değeri, ödeme anındaki pip değerine eşit değildir. Ayrıca, hesaplama sırasında sembol Piyasa İzleme'de olmayabilir.

Bu nedenle hem puanların değeri hem de kapanış anındaki değerleri hesaplanır.