EA'ya MaxTradesPerBar eklemeye yardımcı olun - sayfa 2

 
serpentsnoir :

megamix,

Hala oradaysanız, aradığınızı yapacak birkaç kod değişikliği önerebilirim. Hala ilgileniyorsanız bana bildirin.

Ardından hatasız olduğundan emin olmak için yeniden derleyin. Bunu aldığında bana haber ver, sonraki değişikliği yapıştırayım.

Anladım ve başarıyla derlendi teşekkürler sn.
 
megamixx :

Anladım ve başarıyla derlendi teşekkürler sn.


tamam iyi.

Ardından, bunun gibi bir kod bloğu var

 int openPositions()
{
//... blah...
}

tüm bloğu kopyalayın, hemen arkasına yapıştırın ve OpenTradesOnThisCandle olarak yeniden adlandırın

Ardından, hatasız olduğundan emin olmak için yeniden derleyin.

Şimdi işe gidiyorum, o yüzden daha sonraya kadar benden haber almayacaksın. Takılırsanız değişiklikleri gönderin.

 

Bu bloğu kopyaladı ve yeniden adlandırdı, şimdi şöyle görünüyor:

int OpenTradesOnThisCandle( )
{ int işlem =0;
for(int i=OrdersTotal()-1;i>=0;i--) // tüm emirleri ve pozisyonları tara...
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
(OrderMagicNumber() != MagicNumber) devam ederse;
if ( OrderSymbol()==Symbol() )
{
if ( OrderType() == OP_BUY ) op++;
if ( OrderType() == OP_SELL ) op++;
}
}
dönüş(op);
}

Umarım doğru yapmışımdır sn. Derledim ve uyarı dışında hata almadım:

" OpenTradesOnThisCandle " işlevine atıfta bulunulmuyor ve exp dosyasından kaldırılacak
0 hata(lar), 1 uyarı(lar)

 

İyi. Mesaj sadece bir uyarıdır ve yakında kaybolacaktır.

Şimdi oluşturduğunuz yeni alt programda MODE_TRADES gördüğünüz satırı MODE_HISTORY olarak değiştirin.

Şimdi bu iki if ifadesini OrderType() ile değiştirin.

 if ( OrderOpenTime () > Time[ 0 ]) op++;

Buna sahip olduğunuzda (ve aynı uyarıyı alacaksınız), hatasız olduğundan emin olmak için derleyin.

 
OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if ( OrderMagicNumber () != MagicNumber) continue ;
if ( OrderSymbol ()== Symbol () )
  1. İşlev dönüş değerleri nelerdir? Onları nasıl kullanırım? - MQL4 forumu
  2. Döngüde herhangi bir sunucu çağrısı varsa Geri sayım VE dönüş kodlarını kontrol etmelisiniz Döngüler ve Siparişleri Kapatma veya Silme - MQL4 forum
 

Blok şimdi böyle görünüyor:

int OpenTradesOnThisCandle( )
{ int işlem =0;
for(int i=OrdersTotal()-1;i>=0;i--) // tüm emirleri ve pozisyonları tara...
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
(OrderMagicNumber() != MagicNumber) devam ederse;
if ( OrderSymbol()==Symbol() )
{
if (OrderOpenTime() > Time[0]) op++;
if (OrderOpenTime() > Time[0]) op++;
}
}
dönüş(op);
}

Derlendi, 0 hata, 1 uyarı

 

Merhaba megamix,

Konuyu baştan okumadım ama...

1. Kod gönderirken SRC düğmesini kullanın

2. OrderSelect()'in dönüşü ya doğru ya da yanlıştır, bu yüzden OrderSelect() yazmanın doğru yolu budur,

 int OpenTradesOnThisCandle( )
  { 
   int op = 0 ;
   for ( int i = OrdersTotal () - 1 ;i >= 0 ; i-- ) // scan all orders and positions...
    {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) == true   // if order select is true ...
        && OrderMagicNumber () != MagicNumber                   // ... and magic number is our magic number ...
        && OrderSymbol ()      == Symbol () )                   // ... and symbol is chart symbol
        { 
         if ( OrderOpenTime () > Time[ 0 ]) op++;             
         if ( OrderOpenTime () > Time[ 0 ]) op++; 
        }
    } 
     return (op);
  }

:D

 
onewithzachy :

Merhaba megamix,

Konuyu baştan okumadım ama...

1. Kod gönderirken SRC düğmesini kullanın

2. OrderSelect()'in dönüşü ya doğru ya da yanlıştır, bu yüzden OrderSelect() yazmanın doğru yolu budur,

:D


Gönderme koduyla ilgili ipucu için teşekkürler. Mantıklı. 2. noktaya gelince, o beni adım adım ilerletirken ve sürecini bozmak istemediğinden gülmeyi erteleyeceğim. Çok takdir edildi!

 
megamixx :


Gönderme koduyla ilgili ipucu için teşekkürler. Mantıklı. 2. noktaya gelince, o beni adım adım ilerletirken ve sürecini bozmak istemediğinden gülmeyi erteleyeceğim. Çok takdir edildi!


şimdilik basit tutacağız. onewithzacky, dönüş kodlarını kontrol etmenin iyi bir alışkanlık olduğu konusunda haklı.

if (OrderOpenTime() > Time[0]) op++; <<== bunun sadece bir kez orada olması gerekiyor. Öyleyse bir tane çıkar.

Yapılması gereken bir sonraki şey, bu kodu bulmak ve hemen aşağıda çoğaltmaktır.

     if (TradesInThisSymbol > 0 ) 
     {
       return ( 0 );
     }

Sonra değiştir

(TradesInThisSymbol > 0)

ile

(OpenTradesOnThisCandle() > MaxTradesPerCandle)

Sonra derleyin - hata giderilmelidir.

 
serpentsnoir :


şimdilik basit tutacağız. onewithzacky, dönüş kodlarını kontrol etmenin iyi bir alışkanlık olduğu konusunda haklı.

if (OrderOpenTime() > Time[0]) op++; <<== bunun sadece bir kez orada olması gerekiyor. Öyleyse bir tane çıkar.

Yapılması gereken bir sonraki şey, bu kodu bulmak ve hemen aşağıda çoğaltmak.

Sonra değiştir

(TradesInThisSymbol > 0)

ile

(OpenTradesOnThisCandle() > MaxTradesPerCandle)

Sonra derleyin - hata giderilmelidir.


Tamamlandı.

Silinen kopya if (OrderOpenTime() > Time[0]) op++;

ve bulundu ve değişti

(TradesInThisSymbol > 0)

ile

(OpenTradesOnThisCandle() > MaxTradesPerCandle)

Bu konudaki yardımcı yardımlarınız için çok teşekkürler.

Neden: