SL ve Hesap Riskine dayalı para yönetimi LOT boyutu formülüne ihtiyacınız var! - sayfa 4

 
darelco :

... kodun bu bölümünde yeni derlemeyle ilgili bir sorun var (hata ---> 'MarketInfo' - geçersiz anahtar ifade türü) belki de MT4 600+ derlemesine kadar her şey yolundaydı ... ama o zamandan beri değil artık çalışma.

Yani, lütfen daha yeni bir sürüm yayınlayabilir misiniz ... tabii ki hala buralardaysanız.


bence değişirsen

                 switch ( MarketInfo( strSymbol, MODE_DIGITS ) )

ile

                 int dig=MarketInfo( strSymbol, MODE_DIGITS ) ;
                 switch ( dig )

tamam derlenecek

 
darelco :

... kodun bu bölümünde yeni derlemeyle ilgili bir sorun var (hata ---> 'MarketInfo' - geçersiz anahtar ifade türü) belki de MT4 600+ derlemesine kadar her şey yolundaydı ... ama o zamandan beri değil artık çalışma.

Yani, lütfen daha yeni bir sürüm yayınlayabilir misiniz ... tabii ki hala buralardaysanız.


   switch (( int )MarketInfo(strSymbol,MODE_DIGITS))
 

https://book.mql4.com/operators/switch

"İfade ve Parametrelerin değerleri yalnızca int türünün değerleri olabilir. İfade bir sabit, bir değişken, bir işlev çağrısı veya bir ifade olabilir. Her bir "durum" varyasyonu bir tamsayı sabiti, bir karakter ile işaretlenebilir. sabit veya sabit bir ifade. Sabit bir ifade, değişkenleri veya işlev çağrılarını içeremez."

 
angevoyageur :
   switch (( int )MarketInfo(strSymbol,MODE_DIGITS))

Bir kez daha, daha basit ve daha iyi bir çözüm buluyorsunuz.
 
GumRai :
Bir kez daha, daha basit ve daha iyi bir çözüm buluyorsunuz.
Hepimiz birbirimizden öğreniyoruz.
 
                 int dig=MarketInfo( strSymbol, MODE_DIGITS ) ;
                 switch ( dig )
veya
   switch (( int )MarketInfo(strSymbol,MODE_DIGITS))
veya nesne stili (işaretçi yayınları dışında çalışır)
   switch ( int (MarketInfo(strSymbol,MODE_DIGITS)) )
 

Farklı EA'mda şöyle yazıyor:

extern double       Risk_Percent                   = 3 ;
extern int          StopLoss                       = 5 0 ;

//+------------------------------------------------------------------+
  {
   double lot = MathCeil ( AccountFreeMargin () * Risk_Percent / 1000 ) / 100 ;
   if (lot< MarketInfo ( Symbol (), MODE_MINLOT ))lot= MarketInfo ( Symbol (), MODE_MINLOT );
   if (lot> MarketInfo ( Symbol (), MODE_MAXLOT ))lot= MarketInfo ( Symbol (), MODE_MAXLOT );
   return ( MathMin ( NormalizeDouble (lot,PipMultiplier),MaxLotSize));
  }
//+------------------------------------------------------------------+
   if ( _Digits == 5 || _Digits == 3 )PipMultiplier= 10 ;
   else PipMultiplier= 1 ;
   slippage=Slippage*PipMultiplier;
   if ( _Digits < 4 )
     {
      point= 0.01 ;
     }
   else
     {
      point= 0.0001 ;
     }
   return ( 0 );
//+------------------------------------------------------------------+

 
Sebastien Pelle : Farklı EA'mda şöyle yazıyor:

   double lot = MathCeil ( AccountFreeMargin () * Risk_Percent / 1000 ) /


  1. Serbest marjın riskiniz ile hiçbir ilgisi yoktur. Bu, komisyoncularınızın zararı durdurmasıdır (hesabınızın %50'si.)
  2. Konunun tamamını okuyup yazmamış olmalısınız. Özetlenmiş:
    • Durağı olması gereken yere yerleştirirsiniz - ticaret nedeninin artık geçerli olmadığı yere. Örneğin, bir destek sıçraması ticareti, durdurma desteğin altına düşer.
    • Hesap Bakiyesi * yüzde/100 = RISK = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot + CommissionPerLot) (Not OOP-OSL, SPREAD'i içerir ve DeltaPerLot genellikle 10$/pip civarındadır, ancak çiftin döviz kurlarını hesaba katar. hesap para biriminize kıyasla.)
    • TickValue'u tek başına KULLANMAYIN - DeltaPerLot
    • Partileri düzgün bir şekilde normalleştirmeli ve min ve max değerlerine göre kontrol etmelisiniz.
    • Stop out'tan kaçınmak için FreeMargin'i de kontrol etmelisiniz.
Neden: