EA için gereken basit kod (iki açık siparişi değiştirin) - sayfa 5

 
deVries :


Aynı pip ile hem Alış hem de Satış işlemleri için StopLoss'u değiştirmesini ister misiniz?

İstediğin buysa tekrar düşün ve neden bu şekilde değişmediğini anlayabilirsin....

Ayrıca, her yeni nokta ile işlemleri doğru yönde değiştirmeyin, değiştirmeye izin vermek için takip eden bir adım seçin (çok sayıda ticari bağlamda çok meşgul hatalardan kaçınmak için xx Puanı 10 veya daha fazlasını seçebilir)

"!" kodlamada değil gibi bir şey

Şu anda sadece TakeProfit'in her iki işlemde de değiştirilmesini istiyorum, StopLoss tüm işlem boyunca aynıdır (yine de mevcut test için).
 

Tamam, sorunu buldum. . . Yayılma, puan sayısı olarak döndürülür. . .

O halde bu satırları değiştirin. . .

 if ( OrderTakeProfit () > Candle23Open - ((TakeProfitModified - 1 ) * Point ) + Spread )       //  check if TakeProfit has already been modified
                   if (! OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (), Candle23Open - (TakeProfitModified * Point ) + Spread, 0 , Blue ))

buna . . .

 if ( OrderTakeProfit () > Candle23Open + ((Spread - TakeProfitModified + 1 ) * Point )  )       //  check if TakeProfit has already been modified
                   if (! OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (), Candle23Open + ((Spread - TakeProfitModified) * Point ) , 0 , Blue ))
 
RaptorUK :

Tamam, sorunu buldum. . . Yayılma, puan sayısı olarak döndürülür. . .

O halde bu satırları değiştirin. . .

buna . . .

Bu işe yaramasını sağlar, teşekkürler! Hem alış hem de satış işlemleri şimdi değiştiriliyor, ancak bazı nedenlerden dolayı işlemler boyunca birkaç kez değiştiriliyorlar ve kar al bazen girdilerin gerektirdiğinden daha ileri gidiyor gibi görünüyor. Bu, 2:00 veya 7:00 gibi tüm zamanlarda oluyor gibi görünüyor, bunun neden olduğundan tam olarak emin değilim, yayılmanın sürekli değişmesiyle bir ilgisi olabilir mi? Bu hem alım satım hem de alım satım işlemlerinde olur, bu yüzden bunun yayılma olamayacağını düşünüyorum. Aklıma gelen tek yol, 23:00'daki mumun değişiyor gibi görünmesi, bu mantıklı olmasa da ve bunu nasıl test edeceğimden emin değilim.

 
Değişkenlerin ne yaptığını göstermek için buraya ve oraya birkaç Print ifadesi ekleyin, ardından neyin yanlış gittiğini anlayabilir ve düzeltebilirsiniz.
 

Bunu kullanmaya çalışıyorum:

 Print (Open [ iBarShift ( NULL , 0 , StrToTime ( "23:00" ) )]);

Çubuğun açık fiyatının değişip değişmediğini görmek için ancak her seferinde rastgele kez yazdırıyor gibi görünüyor.

Ayrıca, işlemlerin 22:59'da ne olursa olsun kapatmak için tüm işlemleri kapat kuralına uymadığını fark ettiğim günlerden birinde, bunun çalışmayı durdurduğunu düşünüyorum.

bunu kullanıyorum

   if ( TimeDayOfWeek ( TimeCurrent ())== 5 && TimeCurrent ()>= StrToTime ( "22:59" )) { CloseAll(); return ( 0 ); }

ve bu

 void CloseAll()
   {
   for ( int cnt= OrdersTotal ()- 1 ;cnt>= 0 ;cnt--)
      {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if ( OrderMagicNumber ()!=MagicNumber) continue ;
         
       //
       //
       //
       //
       //
         
       if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL)
         {
         for ( int c= 0 ; c< 3 ; c++)
            {
             RefreshRates ();
             if ( OrderType ()==OP_BUY)
                  { double cp = Bid;}  
             else   {        cp = Ask;}
               
             OrderClose ( OrderTicket (), OrderLots (),cp, 0 , Yellow );
             int err= GetLastError ();
             if (err== 4 || err== 136 || err== 137 || err== 138 || err== 146 )
               {
               Sleep ( 5000 ); continue ;
               }  
               break ;                     
            }
             break ;

İşlemleri belirtilen zamanda kapatmak için.

 

Tamamı büyük harflerle yazılan bir gönderi kaldırılmıştır .

Lütfen mesaj yazarken aşırı büyük harf kullanmayınız.Bağırmak ve çok kaba olarak kabul edilir.