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

 

Bu, birkaç mesaj önceki cevabımdan. . . en basit yoldur. . .

" Belirli bir zamanda iki bekleyen emir belirledim, özellikle 23:00 GMT+2 sanırım. Bekleyen emirlerden biri satış stop, diğeri alış stop, ikisi de açıktan eşit uzaklıkta. 23:00 mum, bu durumda 14 pip. Her ikisinin de TakeProfit 28 pip (bu durumda) ve StopLoss 55 pip var. "

23:00 mumunu referans alarak orijinal TP'nin nerede olduğunu hesaplayabilir, sırayı kontrol edebilir ve hala orijinal TP'ye ayarlanıp ayarlanmadığını görebilirsiniz, eğer öyleyse değiştirilebilir. . . değilse, zaten değiştirildi, bu yüzden tekrar değiştirmeyin.

 

Bunu dene . . . . Derleniyor ama henüz Strateji Test Cihazında denemedim. . .

Dosyalar:
madmax.mq4  10 kb
 
RaptorUK :

Bunu dene . . . . Derleniyor ama henüz Strateji Test Cihazında denemedim. . .

SL ve TP doğru gibi görünse ve 'OrderSend'ler bir şekilde önceki kodla aynı şekilde düzenlenmiş olsa da, nedense 'OrderSend hatası 130 ' alıyorum. Bu neden oluyor?

kodun bu kısmını aldım

   int CountOpenOrders = 0 ;
   double Candle23Open; 
   int Spread = MarketInfo ( Symbol (), MODE_SPREAD);
   
   Candle23Open = Open[ iBarShift ( NULL , 0 , StrToTime ( "23:00" ) ) ]; // price value of the Open of the 23:00 hour candle
   
   for ( int iPos = OrdersTotal ()- 1 ; iPos >= 0 ; iPos--)
      {
       if ( OrderSelect (iPos,SELECT_BY_POS) && 
         OrderMagicNumber () == MagicNumber &&
         OrderSymbol () == Symbol () &&
         OrderType () < 2                //  less than 2 is either OP_BUY (0) or OP_SELL (1) 
         )
      CountOpenOrders++;
      } // end of for(int iPos  

   if (CountOpenOrders == 2 )   //  we have 2 open orders,  should we modify or have the already been modified ?
      {
       for (iPos = OrdersTotal ()- 1 ; iPos >= 0 ; iPos--)
         {
         if ( OrderSelect (iPos,SELECT_BY_POS) && 
             OrderMagicNumber () == MagicNumber &&
             OrderSymbol () == Symbol () 
            )
            {
             if ( OrderType () == 1 )               //  OP_SELL (1)  
               {
               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 ))
                     {
                     Print ( "Error modifying order : " , GetLastError ());
                     return ( 0 );
                     }
               }
            
             if ( OrderType () == 0 )               //  OP_BUY (0)
               {
               if ( OrderTakeProfit () < Candle23Open + ((TakeProfitModified - 1 ) * Point ) )       //  check if TakeProfit has already been modified
                   if (! OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (), Candle23Open + (TakeProfitModified * Point ), 0 , Blue ))
                     {
                     Print ( "Error modifying order : " , GetLastError ());
                     return ( 0 );
                     }
                  
               }
                  
            }         
         }
      }
   
        
   } 

ve önceki EA'ya (orijinal olan) yerleştirdi ve siparişleri açar ancak onları değiştirmez. Her ne kadar OrderSend hatasının sağladığınız EA'da düzeltileceğini düşünmeme rağmen, işe yarayabilir.

Ah ve bu bölümde,

 if (! OrderModify

Nedir ! için?

Çok teşekkürler,

madmax3

 
madmax3 :


Ah ve bu bölümde,

Nedir ! için?

Çok teşekkürler,

madmax3

OrderModify() belgelerini kontrol ettiniz mi? ne döndürür?
 
madmax3 :

SL ve TP doğru gibi görünse ve 'OrderSend'ler bir şekilde önceki kodla aynı şekilde düzenlenmiş olsa da, nedense 'OrderSend hatası 130' alıyorum. Bu neden oluyor?

TP & SL'nizi 5 basamaklı bir Broker'ı hesaba katacak şekilde ayarladınız mı? Broker'ınız 5 haneli bir Broker mi?
 

Çalıştırdım, bir değişkeni doldurmayı kaçırdım (sor ve tekliften uzaklık). OrderModify belgeleri, ! İnanıyorum.
Kod iyi çalışıyor gibi görünüyor, ancak bir sorun, yalnızca iki işlem açıkken alım satım işlemlerini değiştirmesi ve hem alım hem de satım işlemleri değil, bunu neden yaptığından emin değilim. Herhangi bir fikir neden?

Teşekkürler,

madmax3

 
madmax3 :

Çalıştırdım, bir değişkeni doldurmayı kaçırdım (sor ve tekliften uzaklık). OrderModify belgeleri, ! İnanıyorum.
Kod iyi çalışıyor gibi görünüyor, ancak bir sorun, yalnızca iki işlem açıkken alım satım işlemlerini değiştirmesi ve hem alım hem de satım işlemleri değil, bunu neden yaptığından emin değilim.

Teşekkürler,

madmax3

OrderModify bir bool döndürür. . . yani ! bool ile ilgili olarak DEĞİLDİR. . . yani !OrderModify() anlamına gelir. . . OrderModify false döndürürse, yani başarısız olur

Kodunuza bir kez daha bakacağım. . . ya da benim modum.

 
madmax3 :

Çalıştırdım, bir değişkeni doldurmayı kaçırdım (sor ve tekliften uzaklık). OrderModify belgeleri, ! İnanıyorum.
Kod iyi çalışıyor gibi görünüyor, ancak bir sorun, yalnızca iki işlem açıkken alım satım işlemlerini değiştirmesi ve hem alım hem de satım işlemleri değil, bunu neden yaptığından emin değilim. Herhangi bir fikir neden?

Teşekkürler,

madmax3


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

 
madmax3 :

Kod iyi çalışıyor gibi görünüyor, ancak bir sorun, yalnızca iki işlem açıkken alım satım işlemlerini değiştirmesi ve hem alım hem de satım işlemleri değil, bunu neden yaptığından emin değilim. Herhangi bir fikir neden?

Hatalar için günlükleri kontrol edin. . . Strateji Test Cihazında çalışıyorsanız günlük sekmesini, Canlı veya Demo'da ise uzmanlar sekmesini kontrol edin. Ne bulduğunu bana bildir. . .
 
RaptorUK :
Hatalar için günlükleri kontrol edin. . . Strateji Test Cihazında çalışıyorsanız günlük sekmesini, Canlı veya Demo'da ise uzmanlar sekmesini kontrol edin. Ne bulduğunu bana bildir. . .
2012.04.09 21:21:27 2012.01.17 00:59 Test: 1. sipariş, 0.01 EURUSD sat 1.26498'de açıldı
2012.04.09 21:21:27 2012.01.17 02:21 Test eden: 2. sipariş, 0.01 EURUSD satın al 1.26795'te açıldı

2012.04.09 21:21:27 2012.01.17 02:21 MadMax EURUSD,H1: 2'yi değiştir 1.26795 sl'de 0.01 EURUSD satın al: 1.26218 tp: 1.27352 tamam
2012.04.09 21:21:27 2012.01.17 03:00 MadMax EURUSD,H1: 2'yi değiştir 1.26795 sl'de 0.01 EURUSD satın al: 1.26218 tp: 1.27480 tamam

Nedense alış ticaretini iki kez değiştiriyor (ikinci değişiklik gerekli TP'ye gidiyor, ancak bazı işlemlerde 9:00 veya 10:00 gibi belirli tam zamanlarda değişmeye devam ediyor gibi görünüyor), görünmüyor gibi herhangi bir gerçek hatalar olsa.


Neden: