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

 

Herkese selam.

Lütfen bu konuda bana yardım edin.

Bir mt4 terminali ve ticaret sinyalleriyle ilgili uyarılar veren bir danışman (ev yapımı) vardır. Mobil terminale uyarıların gelmesini istiyorum. Ayarlardan kurdum test geliyor sıra parametrelerinde değişiklik geliyor ama danışmandan uyarılar gelmiyor... Sebebi nedir anlamadım google cevap vermedi.

Uyarılar, terminalin kendisine yansıtılır.
 
ve yine de iletişim kurmak için rahatsız edici bir yer. Uyuşmazlıkta bir çeşit yığın akışına ve / veya kanala ihtiyacımız var.
 
Sergey Dymov sıra parametrelerinde değişiklik geliyor ama danışmandan uyarılar gelmiyor... Sebebi nedir anlamadım google cevap vermedi.
Kodu görmen gerekiyor ... burada telepat yok)
 
MakarFX # :
Kodu görmen gerekiyor ... burada telepat yok)

Her şey standart

if ((EURTP>=3)&&(JPYTP<=0)&&(z!=2))

{Alert("EURJPY Satın Al. EUR=", EURTP, ", JPY=", JPYTP); z=2;} //

 
Sergey Dymov sıra parametrelerinde değişiklik geliyor ama danışmandan uyarılar gelmiyor... Sebebi nedir anlamadım google cevap vermedi. Uyarılar, terminalin kendisine yansıtılır.

https://www.mql5.com/ru/docs/network/sendnotification

https://docs.mql4.com/ru/common/sendnotification

Документация по MQL5: Сетевые функции / SendNotification
Документация по MQL5: Сетевые функции / SendNotification
  • www.mql5.com
SendNotification - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Sergey Dymov # :

Her şey standart

if ((EURTP>=3)&&(JPYTP<=0)&&(z!=2))

{Alert("EURJPY Satın Al. EUR=", EURTP, ", JPY=", JPYTP); z=2;} //

 if ((EURTP>= 3 )&&(JPYTP<= 0 )&&(z!= 2 ))
    {
     Alert ( "Покупай EURJPY. EUR=" , EURTP, ", JPY=" , JPYTP); z= 2 ;
     SendNotification (текст сообщения);
    } 
 
Teşekkürler beyler! Asla unutmayacağım!
 

Yani, satırların oluşturulmasını ve silinmesini sadece tıklama ile yaptım ve imlecin konumundan renk ve isim değişikliği ve ... hiçbir şey değişmedi, aynı sorunlar. Satır, düğme çubuğunun konumuna bağlı olarak oluşturulur. Altta var, yani koşula göre sarı (Satış Durdur) ama burada if (fiyat > Sor) koşuluna giriyor, çünkü bir çük için düğmeye tıkladığınızda fiyat en yüksek fiyata eşit grafikte, yani sormanın üstünde, yani şu anda fiyat > Sor = doğru. Cehenneme kadar, mantıklı olarak, bir sonraki fare hareketi her şeyi düzeltmeli, ama hayır. Düğmeye yalnızca bir tıklama ile oturum açın.

 2021.12 . 07 03 : 05 : 56.888 test GBPUSD,M1: Buy Stop rename onto Buy Stop false error 0
2021.12 . 07 03 : 05 : 53.408 test GBPUSD,M1: Buy Stop rename onto Buy Stop false error 0
2021.12 . 07 03 : 05 : 53.408 test GBPUSD,M1: Stop Loss rename onto Buy Stop false error 0
2021.12 . 07 03 : 05 : 53.408 test GBPUSD,M1: Buy Stop rename onto Sell Stop true error 0
2021.12 . 07 03 : 05 : 53.408 test GBPUSD,M1: Sell Stop rename onto Buy Stop true error 0
2021.12 . 07 03 : 05 : 53.408 test GBPUSD,M1: Sell Stop create true error 4204

Ben xs neden 4204 (Nesne yok) belki bu geçmiş bir hatadır.

Düğmeye tıkladıktan sonra, Teklif düzeyinde yeşil bir çizgi görünür; çizgi, fare imleci kaydırmasına tepki vermez. İmleç Sor'un üzerine çıkarsa, mesajlar sürekli yağıyor demektir.

 2021.12 . 07 03 : 14 : 00.993 test GBPUSD,M1: Buy Stop rename onto Buy Stop false error 0
2021.12 . 07 03 : 13 : 59.563 test GBPUSD,M1: Buy Stop rename onto Buy Stop false error 0
2021.12 . 07 03 : 13 : 57.363 test GBPUSD,M1: Buy Stop rename onto Buy Stop false error 0
2021.12 . 07 03 : 13 : 57.253 test GBPUSD,M1: Buy Stop rename onto Buy Stop false error 0
2021.12 . 07 03 : 13 : 57.223 test GBPUSD,M1: Buy Stop rename onto Buy Stop false error 0
2021.12 . 07 03 : 13 : 57.223 test GBPUSD,M1: Buy Stop rename onto Buy Stop false error 0
2021.12 . 07 03 : 13 : 57.193 test GBPUSD,M1: Buy Stop rename onto Buy Stop false error 0
2021.12 . 07 03 : 13 : 57.153 test GBPUSD,M1: Buy Stop rename onto Buy Stop false error 0
 void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam)
{
     datetime static dt          = 0 ;
     double    static price       = 0 ;
     int        static window      = 0 ;
     double    static sl          = 0 ;
     string    static line_name;
     double static price2 = 0 ;
     double static price3 = 0 ;
     double static price4 = 0 ;


   if (id== CHARTEVENT_OBJECT_CLICK ){
     //Нажатие на SO в зависимоти от расположения панели создаёт линию
     if (sparam== "Button Stop Order" ){
       if (panel_position == 1 || panel_position == 2 ){
        line_name = "Buy Stop" ;
        CreateLine(line_name, clrGreen );
      }
       if (panel_position == 3 || panel_position == 4 ){
        line_name = "Sell Stop" ;
        CreateLine(line_name, clrYellow );
      }
    }
     //Нажатие на линию меняет цвет на красный
     if (sparam== "Buy Stop" || sparam== "Sell Stop" ) {
       ObjectSetString ( 0 ,line_name, OBJPROP_NAME , "Stop Loss" );
      line_name = "Stop Loss" ;
       Print (line_name, " onto red " , ObjectSetInteger ( 0 , line_name, OBJPROP_COLOR , clrRed ));
    }
     //Нажатие на красной линии удаляет её и отжимает кнопку
     if (sparam== "Stop Loss" ){
       ObjectDelete (line_name);
      button_name = "Button Stop Order" ;
      ms= GetMicrosecondCount ();
    }
  }
   //Если кнопка SO нажата, то линия будет следовать за курсором
   if ( ObjectGetInteger ( 0 , "Button Stop Order" , OBJPROP_STATE )){
     int x = ( int )lparam;
     int y = ( int )dparam;
     //Переведём координаты X, Y в дату и время
     if ( ChartXYToTimePrice (window,x,y,window,dt,price)){
       Comment ( StringFormat ( "CURSOR PRICE %.5f \nIF PRICE > ASK %.5f\nIF PRICE < BID %.5f\nIF PRICE IN SPREAD ZONE %.5f" ,
                            price,price2,price4,price3));
       //Линия меняет цвет с зелёного на желтый
       if (price < Bid){
        price4 = price;
         if (ObjectExist( 0 , "Buy Stop" ) || ObjectExist( 0 , "Not Allowed" )){
           Print (line_name, " rename onto Sell Stop " , ObjectSetString ( 0 ,line_name, OBJPROP_NAME , "Sell Stop" ), " error " , GetLastError ());
          line_name = "Stop Loss" ;
           ObjectSetInteger ( 0 , line_name, OBJPROP_COLOR , clrYellow );
        }
      }
       //Линия меняет цвет с желтого на зелёный
       if (price > Ask){
        price2 = price;
         if (ObjectExist( 0 , "Sell Stop" ) || ObjectExist( 0 , "Not Allowed" )){
           Print (line_name, " rename onto Buy Stop " , ObjectSetString ( 0 ,line_name, OBJPROP_NAME , "Buy Stop" ), " error " , GetLastError ());
          line_name = "Buy Stop" ;
           ObjectSetInteger ( 0 , line_name, OBJPROP_COLOR , clrGreen );
        }
      }
       //Линия меняет цвет на серый если в зоне спреда
       if (price > Bid && price < Ask){
        price3 = price;
         if (ObjectExist( 0 , "Sell Stop" ) || ObjectExist( 0 , "Buy Stop" )){
           Print (line_name, " rename onto Not Allowed " , ObjectSetString ( 0 ,line_name, OBJPROP_NAME , "Not Allowed" ), " error " , GetLastError ());
          line_name = "Not Allowed" ;
           ObjectSetInteger ( 0 , line_name, OBJPROP_COLOR , clrGray );
        }
      }
       //Прикрепляем линию к курсору
       if (id == CHARTEVENT_MOUSE_MOVE )
         if ( ObjectMove (line_name, 0 , 0 ,price))
           ChartRedraw ( 0 );
    }
  } else if (ObjectExist( 0 ,line_name)) Print (line_name, " delete " , ObjectDelete (line_name), " error " , GetLastError ());
   //Если нажать Esc то удалится линия и кнопка отожмется
   if (id == CHARTEVENT_KEYDOWN && lparam == 27 ){
      button_name = "Button Stop Order" ;
      ms= GetMicrosecondCount ();
  }
}
//----------------------------------------------------------------------
void CreateLine( const string name, const color clr)
{
   Print (name, " create " , ObjectCreate ( 0 , name, OBJ_HLINE , 0 , TimeCurrent (),Bid), " error " , GetLastError ());
   ObjectSetInteger ( 0 , name, OBJPROP_COLOR , clr);
   ObjectSetInteger ( 0 , name, OBJPROP_STYLE , 3 ); 
}
 bool ObjectExist( const long _chartID, const string _name) { return ( ObjectFind (_chartID, _name) >= 0 ); }
 
Nerd Trader # :


Yeni başlayan bir programcı olarak size tavsiyem. Hata ayıklamayı nasıl kullanacağınızı öğrenin (çok güçlü bir araç). Ve hepsini kendin anla. Bu ilginç. Eğer zorsa (ki bu pek olası değildir), o zaman basit bir tane ile başlayın. Hata ayıklama, uygulamanızın nasıl çalıştığını en küçük ayrıntısına kadar anlamanıza yardımcı olacaktır.

Отладка программ на MQL5
Отладка программ на MQL5
  • www.mql5.com
Эта статья ориентирована в первую очередь на программистов, которые уже изучили язык, но еще недостаточно освоились в разработке программ. Статья раскрывает практические приемы отладки программ и является объединенным опытом, не только моим, но и многих программистов, на опыте которых я учился.
 
Mihail Matkovskij # :

Yeni başlayan bir programcı olarak size tavsiyem. Hata ayıklamayı nasıl kullanacağınızı öğrenin (çok güçlü bir araç). Ve hepsini kendin anla. Bu ilginç. Eğer zorsa (ki bu pek olası değildir), o zaman basit bir tane ile başlayın. Hata ayıklama, uygulamanızın nasıl çalıştığını en küçük ayrıntısına kadar anlamanıza yardımcı olacaktır.

Genellikle onsuz yaparım, çünkü test cihazında çalışmaz, ancak burada durum gerçek verilere izin verir - denemek zorundasınız. Anladığım kadarıyla, bu kodun nesne yeniden adlandırma içeren sürümünün, nesnelerin renkleri değiştirilirken yeniden oluşturulduğu zamandan farklı olmadığı, çünkü yeniden adlandırma aynı şeyi yapar: yeni bir adla bir nesne oluşturur ve eskisini siler.


UPD

Hata ayıklama modunda mql4'te satır oluşturduğum düğmeler grafikte yok