MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 691

 

Merhaba, kodla ilgili yardıma ihtiyacım var, yeniyim.

Buradaki sorun şu ki, takip sadece alış yönünde çalışıyor fakat satış yönünde çalışmıyor ve kod çalıştırıldığında logda "Sipariş değiştirme hatası. Hata kodu = 4051" hatası veriyor.

İşte kodun kuyruktan sorumlu kısmı:

 void Trailing( int tral)
{ 
   int Mag= OrderMagicNumber ();  

   OrderSelect (Mag, MODE_TRADES );

//+------------------------------------------------------------------+

//|                      tral buy                                    |

//+------------------------------------------------------------------+

   if ( OrderType ()== OP_BUY )

   if ( Bid - OrderOpenPrice ()> Point *tral)
    {
     if ( OrderStopLoss ()< Bid - Point *tral) 
       { 
       bool ress= OrderModify ( OrderTicket (), OrderOpenPrice (), NormalizeDouble ( Bid - Point *tral, Digits ), 0 , 0 ,Blue); 
       if (!ress) 
           Print ( "Ошибка модификации ордера. Код ошибки=" , GetLastError ()); 
       else 
           Print ( "Цена Stop Loss ордера успешно модифицирована." );
       }
     }
//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
   if ( OrderType ()== OP_SELL )
   if ( OrderOpenPrice ()- Ask > Point *tral)
    {
     if ( OrderStopLoss ()> Ask + Point *tral) 
       { 
       bool res= OrderModify ( OrderTicket (), OrderOpenPrice (), NormalizeDouble ( Ask + Point *tral, Digits ), 0 , 0 ,Red); 
       if (!res) 
           Print ( "Ошибка модификации ордера. Код ошибки=" , GetLastError ()); 
       else 
           Print ( "Цена Stop Loss ордера успешно модифицирована." );
       }
     }
}          

 
Ivan Rozhkov :

İyi günler, kodla ilgili yardıma ihtiyacım var, acemiyim, kodun tamamını buraya yapıştırmanın tavsiye edilmeyeceğini düşünüyorum.

Buradaki sorun şu ki, takip sadece alış yönünde çalışıyor fakat satış yönünde çalışmıyor ve kod çalıştırıldığında logda "Sipariş değiştirme hatası. Hata kodu = 4051" hatası veriyor.

Bunu çözmeme yardımcı olabilecek biri varsa, lütfen bana e-posta gönderin.

Konu, kenarda değil, tartışma için yaratılmıştır.
 
Artyom Trishkin :
Konu kenarda değil tartışmak için oluşturuldu.

Lütfen beni affet ^_^

Kodun bir kısmını yapıştırdım, lütfen bana neyin yanlış olduğunu söyle

 
Ivan Rozhkov :

Lütfen beni affet ^_^

Kodun bir kısmını yapıştırdım, lütfen bana neyin yanlış olduğunu söyle

Bu konuya bakın - Bir trol şablonu gönderdim. Ortada bir yerde.
 
Ivan Rozhkov :

Merhaba, kodla ilgili yardıma ihtiyacım var, yeniyim.

Buradaki sorun şu ki, takip sadece alış yönünde çalışıyor fakat satış yönünde çalışmıyor ve kod çalıştırıldığında logda "Sipariş değiştirme hatası. Hata kodu = 4051" hatası veriyor.

İşte kodun kuyruktan sorumlu kısmı:

 //+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
   if ( OrderType ()== OP_SELL )
   if ( OrderOpenPrice ()- Ask > Point *tral)
    {
      if (( OrderStopLoss ()== 0.0 ) || ( OrderStopLoss ()> Ask + Point *tral)) 
       { 
       bool res= OrderModify ( OrderTicket (), OrderOpenPrice (), NormalizeDouble ( Ask + Point *tral, Digits ), 0 , 0 ,Red); 
       if (!res) 
           Print ( "Ошибка модификации ордера. Код ошибки=" , GetLastError ()); 
       else 
           Print ( "Цена Stop Loss ордера успешно модифицирована." );
       }
     }
}          
ve tüm yapıyı hiç sevmiyorum, işte sihirle basit bir takip, neredeyse sizinkiyle aynı:

 bool trailingpos( int magic_, int trail_p)
  {
   bool res= true ; double sl,slnew,tpips=trail_p* Point ; int i,k= OrdersTotal ();
   for (i= 0 ;i<k;i++)
     {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
         if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==magic_)
           {
             switch ( OrderType ())
              {
               case OP_BUY :
                  slnew= NormalizeDouble ( Ask -tpips, Digits );
                  sl= OrderStopLoss ();
                   if ( OrderOpenPrice ()<slnew)
                     if ((sl<slnew) || (sl== 0.0 ))
                       {
                         if (! OrderModify ( OrderTicket (), OrderOpenPrice (),slnew, OrderTakeProfit (), OrderExpiration (), clrNONE ))
                          {res= false ; Print ( __FUNCTION__ ," OrderModify завершилась с ошибкой № ", GetLastError ());}
                       }
                   break ;
               case OP_SELL :
                  slnew= NormalizeDouble ( Bid +tpips, Digits );
                  sl= OrderStopLoss ();
                   if ( OrderOpenPrice ()>slnew)
                     if ((sl>slnew) || sl== 0.0 )
                       {
                         if (! OrderModify ( OrderTicket (), OrderOpenPrice (),slnew, OrderTakeProfit (), OrderExpiration (), clrNONE ))
                          {res= false ; Print ( __FUNCTION__ ," OrderModify завершилась с ошибкой № ", GetLastError ());}
                       }
                   break ;
              }
           }
        }
     }
   return (res);
  }
 
ekstrema değerleri görüntülemek için iCustom for ZigZag nasıl doğru yazılır?
 
02031986dima :
ekstrema değerleri görüntülemek için iCustom for ZigZag nasıl doğru yazılır?

Bir şey yazmaya gerek yok gelip almanız gerekiyor

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Igor Makanu :

ve tüm yapıyı hiç sevmiyorum, işte sihirle basit bir takip, neredeyse sizinkiyle aynı:

Yardımınız için çok teşekkür ederim, kodunuzu eklerken, sondaki nedense çalışmıyor, büyük olasılıkla yanlış bir şey yapıyorum ((

 if (( OrderStopLoss ()== 0.0 )

eklendi ve kazanıldı, ancak #1 ve #4051 hatalarıyla sürekli spam gönderiyor

#1- Hata yok ama sonuç bilinmiyor

#4051 - Geçersiz fonksiyon parametre değeri

 

Merhaba, datatime türünde bir dizi veri var,

okunabilir bir dosyaya nasıl çıkarılır?

kod:

 int h= FileOpen ( "test" , FILE_WRITE | FILE_CSV | FILE_UNICODE );
       FileWriteArray (h,timeHistory, 0 , WHOLE_ARRAY );
       FileClose (h);

Yalnızca FILE_BIN bayrağı varsa yazar, ancak okunamaz yazar.

FILE_BIN bayrağı yoksa dosya boş kalır.

 
Karlinvain :

Merhaba, datatime türünde bir dizi veri var,

okunabilir bir dosyaya nasıl çıkarılır?

kod:

Yalnızca FILE_BIN bayrağı varsa yazar, ancak okunamaz yazar.

FILE_BIN bayrağı yoksa dosya boş kalır.

FileWriteArray

Not

Bir dize dizisi yalnızca bir TXT dosyasına yazılabilir. Bu durumda satırlar otomatik olarak satır sonu karakterleri "\r\n" ile sonlandırılır. ANSI veya UNICODE dosya türüne bağlı olarak, dizeler ansi kodlamasına dönüştürülür veya dönüştürülmez.

Neden: