Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 58

 
Kendim kod yazmayı öğrenmek istiyorum.. Bu yüzden tavsiye istemeye karar verdim. Belki biri örnek verir diye düşündüm.. Teşekkürler!
 
Stafort :
Kendim kod yazmayı öğrenmek istiyorum.. Bu yüzden tavsiye istemeye karar verdim. Belki biri örnek verir diye düşündüm.. Teşekkürler!
Burada çok sayıda örneğiniz var, en uygun olanı seçin ve ihtiyaçlarınıza göre düzenleyin. Değilse, bu forumda her zaman soru sorabilir ve cevap alabilirsiniz.
 
Müşteri, grafikten çıkarılmış olsa bile EA'nın ticaret açmaya devam ettiğinden şikayet ediyor. Bu aynı olamaz mı?
Ve onu grafikten çıkarmaz, sadece Uzman Danışman ile pencereyi kapatırsanız, işe yarayacak mı?
Teşekkür ederim.
 
Vladimir Tkach :
Müşteri, grafikten çıkarılmış olsa bile EA'nın ticaret açmaya devam ettiğinden şikayet ediyor. Bu aynı olamaz mı?
Ve onu grafikten çıkarmaz, sadece Uzman Danışman ile pencereyi kapatırsanız, işe yarayacak mı?
Teşekkür ederim.

Kaldırılmışsa ve doğru yazılmışsa - olmamalıdır. Başlatma kodundan arındırma koduyla boşaltma - 1. EA takılırsa... bunu çözmeniz gerekir...

Pencereyi Expert Advisor ile kapatırsanız, Expert Advisor, başlatmadan arındırma kodu - 4 ile kaldırılmalıdır:

REASON_CHARTCLOSE

4

Grafik kapatıldı


https://www.mql5.com/ru/docs/constants/namedconstants/uninit

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
MONTE_CRISTO :
peki, tam orada meta alıntı alıntıları hatırladığım kadarıyla sızdıran alıntılar ve kaliteli tixtory
MT5 ile bir DC'de bir hesap açarsanız, gerçek "yırtılmamış" alıntılar olacaktır, soru ne hakkında? Tixtory'de de bazen çöp çıkıyor ya da ben hiç pişirmeyi öğrenemedim ama MT5 ile dışa aktarma daha kolay ve hızlı.
 
Sergey Gritsay :
En azından ne tür çizgiler istediğinizi anlamak için bir ekran görüntüsü
Sergey Gritsay :
En azından hangi satırları birleştirmek istediğinizi anlamak için bir ekran görüntüsü.
Sergey Gritsay :
En azından hangi satırları birleştirmek istediğinizi anlamak için bir ekran görüntüsü. Cevabın için teşekkürler! Enstrümanların iki üst sırasını MT4'te bir araya getirmek istiyorum.
 

dT değişkeninin kırmızı rengi ne anlama gelebilir?


 
Andrei :

dT değişkeninin kırmızı rengi ne anlama gelebilir?


"extern" girdi değişkeni olarak bildirildi
 
İnsanlar! Söylemek. Test cihazı hata veriyor: 2017.02.08 18:24:43.751 TestGenerator: eşleşmeyen veri hatası (2016.07.27 19:30'da düşük değer 1.09860'a en düşük zaman diliminden ulaşılamıyor, düşük fiyat 1.09880 uyumsuzlukları)
Bu ne anlama geliyor ve nasıl düzeltilir? Neyi yanlış yaptım?
double Margin_Percent= AccountFreeMargin ()*Percent/ 100 ; //Используемые средства для открытия ордеров
double Lots=Margin_Percent/ MarketInfo ( Symbol (), MODE_MARGINREQUIRED ); //Определение общего количества лотов
double Lots_Volume=( MathFloor (Lots)+ MarketInfo ( Symbol (), MODE_LOTSTEP ));
double MacdCurrent= iMACD ( NULL , 0 ,Fast_EMA_Period,Slow_EMA_Period,Signal_Period, PRICE_CLOSE , MODE_MAIN , 1 ); //Параметры MACD основной линии текущего бара
double MacdPrevious1= iMACD ( NULL , 0 ,Fast_EMA_Period,Slow_EMA_Period,Signal_Period, PRICE_CLOSE , MODE_MAIN , 2 ); //Параметры MACD основной линии предыдущего бара
double MacdPrevious2= iMACD ( NULL , 0 ,Fast_EMA_Period,Slow_EMA_Period,Signal_Period, PRICE_CLOSE , MODE_MAIN , 3 ); //Параметры MACD основной линии со смещением на 2 бара
double StopLoss= iSAR ( NULL , 0 ,Step_PSAR,Maximum_PSAR, 0 ); //Параметры Трейлинг стоп по параметрам ParabolicSAR текущего бара
double Previous_StopLoss= iSAR ( NULL , 0 ,Step_PSAR,Maximum_PSAR, 1 ); //Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
double CurrentPSAR= iSAR ( NULL , 0 ,Step_PSAR,Maximum_PSAR, 1 ); //Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   static datetime New_Time= TimeCurrent (); // Время текущего бара
   bool New_Bar= false ;                     // Флаг нового бара
   int ticket,total,cnt;
//---------------------------------------------------------------------------
   total= OrdersTotal (); // Опредление количства ордеров
   if (total< 1 )
     {
       //--- нет открытых ордеров
       if (Margin_Percent< MarketInfo ( Symbol (), MODE_MARGINREQUIRED )*( MarketInfo ( Symbol (), MODE_MINLOT )))
         //Проверка на наличие денежных средств для открытия минимального лота
        {
         Print ( "Не хватает средств. Свободные средства = " , AccountFreeMargin ());
         return ;
        }
       if ( Time [ 0 ]==New_Time) // Сравниваем время
        {
         New_Bar= true ;       // Поймался новый бар
         if (New_Bar== false )     // Если бар не новый..
             return ;             // ..то уходим  
        }
       //Определение количества лотов
       if (Lots>Lots_Volume)
         Lots=Lots_Volume;
       else if (Lots<Lots_Volume)
         Lots= MathFloor (Lots);
       return ;
       //--- условие для открытия длинной позиции (BUY)
       if (CurrentPSAR< iOpen ( NULL , 0 , 1 ) &&
         ((MacdPrevious1> 0 && MacdPrevious2< 0 ) ||
         (MacdCurrent> 0 && MacdPrevious1< 0 ) ||
         (MacdCurrent> 0 && MacdPrevious1== 0 && MacdPrevious2< 0 )||
         (MacdCurrent> 0 && MacdPrevious1== 0 && MacdPrevious2== 0 )))
        {
         ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 3 ,StopLoss+ MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , NULL ,MAGICNUMBER, 0 ,Green);
         if (ticket> 0 ) //проверка отрытия позиции
           {
             if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ))
               Print ( "BUY ордер открыт : " , OrderOpenPrice ());
             else Print ( "Ошибка открытия ордера BUY : " , GetLastError ());
             return ;
           }
        }
       //--- условие для открытия короткой позиции (SELL)
       if (CurrentPSAR> iOpen ( NULL , 0 , 1 ) &&
         ((MacdCurrent< 0 && MacdPrevious1> 0 ) ||
         (MacdPrevious1< 0 && MacdPrevious2> 0 ) ||
         (MacdCurrent< 0 && MacdPrevious1< 0 && MacdPrevious2> 0 ) ||
         (MacdCurrent< 0 && MacdPrevious1== 0 && MacdPrevious2== 0 )))
        {
         ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 3 ,StopLoss- MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , NULL ,MAGICNUMBER, 0 ,Red);
         if (ticket> 0 ) //проверка открытия позиции
           {
             if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ))
               Print ( "SELL ордер открыт : " , OrderOpenPrice ());
             else Print ( "Ошибка открытия ордера SELL : " , GetLastError ());
             return ;
           }
        }
       return ; //--- выход из блока "нет открытых ордеров"
     }
//--- важно правильно войти в рынок, но более важно правильно из него выйти  
   for (cnt= 0 ;cnt<total;cnt++)
     {
       if (! OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES ))
         continue ;
       if ( OrderMagicNumber ()==MAGICNUMBER && // проверка магического номера ордера
         OrderSymbol ()== Symbol ()) // проверка символа ордера
        {
         //--- длинная позиция открыта
         if ( OrderType ()== OP_BUY )
           {
             //--- должен быть закрыт?
             if (CurrentPSAR> iOpen ( NULL , 0 , 1 ) &&
               ((MacdCurrent< 0 && MacdPrevious1> 0 ) ||
               (MacdPrevious1< 0 && MacdPrevious2> 0 ) ||
               (MacdCurrent< 0 && MacdPrevious1< 0 && MacdPrevious2> 0 ) ||
               (MacdCurrent< 0 && MacdPrevious1== 0 && MacdPrevious2== 0 )))
              {
               //--- закрытие ордера и выход
               if ( OrderClose ( OrderTicket (), OrderLots (), Bid , 3 ,Violet))
                 {
                   Print ( "Ордер закрыт" );
                  ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 3 ,StopLoss- MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , NULL ,MAGICNUMBER, 0 ,Red);
                   if (ticket> 0 ) //проверка открытия позиции
                    {
                     if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ))
                         Print ( "SELL ордер открыт : " , OrderOpenPrice ());
                     else Print ( "Ошибка открытия ордера SELL : " , GetLastError ());
                     return ;
                    }
                 }
               else Print ( "Ошибка закрытия ордера " , GetLastError ());

              }
             //------------------Модификация ордера по СтопЛоссу
             else if (StopLoss>Previous_StopLoss && StopLoss< iOpen ( NULL , 0 , 0 ))
              {
               if ( OrderModify ( OrderTicket (), OrderOpenPrice (),StopLoss+ MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , 0 ,Blue))
                   Print ( "Цена Stop Loss ордера успешно модифицирована." );
               else Print ( "Ошибка модификации ордера. Код ошибки=" , GetLastError ());
               return ;
              }
             return ;
           }
         // идём на короткую позицию
         else if ( OrderType ()== OP_SELL )
           {
             //--- должен быть закрыт?
             if (CurrentPSAR< iOpen ( NULL , 0 , 1 ) &&
               ((MacdPrevious1> 0 && MacdPrevious2< 0 ) ||
               (MacdCurrent> 0 && MacdPrevious1< 0 ) ||
               (MacdCurrent> 0 && MacdPrevious1== 0 && MacdPrevious2< 0 )||
               (MacdCurrent> 0 && MacdPrevious1== 0 && MacdPrevious2== 0 )))
              {
               //--- закрытие ордера и выход
               if ( OrderClose ( OrderTicket (), OrderLots (), Ask , 3 ,Violet))
                 {
                   Print ( "Ордер закрыт" );
                  ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 3 ,StopLoss+ MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , NULL ,MAGICNUMBER, 0 ,Green);
                   if (ticket> 0 ) //проверка отрытия позиции
                    {
                     if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ))
                         Print ( "BUY ордер открыт : " , OrderOpenPrice ());
                     else Print ( "Ошибка открытия ордера BUY : " , GetLastError ());
                     return ;
                    }
                 }
               else Print ( "Ошибка закрытия ордера " , GetLastError ());
              }
             //-----------------Модификация ордера по СтопЛоссу            
             else if (StopLoss<Previous_StopLoss && StopLoss> iOpen ( NULL , 0 , 0 ))
              {
               if ( OrderModify ( OrderTicket (), OrderOpenPrice (),StopLoss- MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , 0 ,Blue))
                   Print ( "Цена Stop Loss ордера успешно модифицирована." );
               else Print ( "Ошибка модификации ордера. Код ошибки=" , GetLastError ());
               return ;
              }
           }
        }
     }
//------
  }
//-------------------------------------------------------------------------------------------------------
 
Michail_David :
İnsanlar! Söylemek. Test cihazı hata veriyor: 2017.02.08 18:24:43.751 TestGenerator: eşleşmeyen veri hatası (2016.07.27 19:30'da düşük değer 1.09860'a en düşük zaman diliminden ulaşılamıyor, düşük fiyat 1.09880 uyumsuzlukları)
Bu ne anlama geliyor ve nasıl düzeltilir? Neyi yanlış yaptım?
Mesele alıntılar, kalitesizler.
Neden: