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

 

Tünaydın,

Söyleyin bana, danışmanı yeniden senkronizasyon olmadan VPS'de nasıl yönetebilirim?

Demek istediğim: terminalde, grafiğe düğmeler koyabilir ve modu yeniden başlatmadan değiştirebilirim. Danışmana vpse'de komut vermek için telgraf botunu kullanabilir miyim?

Yoksa yeniden senkronizasyon olmadan EA modunu mql vps olarak değiştirmenin başka bir alternatifini mi kullanmam gerekiyor?


Cevap için teşekkürler!

 

Merhaba sevgili uzmanlar!

Yardım edin lütfen sorunu çözün.

Herhangi bir çifti test ederken, her şey doğru çalışır, ancak diğer para birimleri ile çalışırken, bekleyen emirler verilmez (geçici bir tane ayarlamanız gerekir) ve kar al tetiklendikten sonra kapatılmaz.

Mümkünse, kodu nasıl değiştireceğimi söyleyin:

 bool operation= 0 ; for ( int pos= 0 ;pos< OrdersTotal ();pos++)
     { if ( OrderSelect (pos, SELECT_BY_POS) == false )   continue ;
       if ( OrderSymbol()== Symbol ()) break ;}


//=========================================================================================================
if (Hour()>= 2 &&Hour()<= 18 &&operation== 0 ){
if (OPB1== 1 )
   {operation= 1 ; if (operation== 0 &&OrderSymbol()!= Symbol ()|| OrdersTotal ()== 0 )
        { OrderSend ( Symbol (),OP_BUY,lots,Ask, 0 ,Bid-ss* Point ,Ask+T* Point , "My order#" ,mn, 0 ,Green);}}
         if (OrderType()==OP_BUY && OrdersTotal ()== 1 &&OrderMagicNumber()== 8 )
        { OrderSend ( Symbol (),OP_SELLSTOP, 5 *lots,OrderOpenPrice()-(ss-ss/ 4 )* Point , 0 , 0 ,SstopClose, "My order#" , 80 , 0 ,Red);}
       

if (OPS1== 1 )
   {operation= 1 ; if (operation== 0 &&OrderSymbol()!= Symbol ()|| OrdersTotal ()== 0 )        
         { OrderSend ( Symbol (),OP_SELL,lots,Bid, 0 ,Ask+ss* Point ,Bid-T* Point , "My order#" ,mn, 0 ,Red);}}
         if (OrderType()==OP_SELL && OrdersTotal ()== 1 &&OrderMagicNumber()== 8 )
         { OrderSend ( Symbol (),OP_BUYSTOP, 5 *lots,OrderOpenPrice()+(ss-ss/ 4 )* Point , 0 , 0 ,BstopClose, "My order#" , 80 , 0 ,Green);}}



if (OrderMagicNumber()== 80 ){operation= 0 ;
 { for ( int   ii= OrdersTotal ()- 1 ;ii>= 0 ;ii--)
       { OrderSelect (ii, SELECT_BY_POS);
         int   type   = OrderType(); bool result = false ;
         switch (type)
         { case OP_BUYSTOP   : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5 , Red ); //break;
           case OP_SELLSTOP  : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5 , Red ); //break;
         
          result = OrderDelete( OrderTicket() ); //break;
          }}}}
 

İyi günler sevgili forum kullanıcıları.

Grafikte bölgeler oluşturan göstergeyi iyileştirmeye yardımcı olun.

Mevcut göstergede bölgeler haftanın tüm günleri için ayarlanmıştır.

Haftanın her günü için ayrı ayrı ayarlanabilmesi gerekir.

 //+------------------------------------------------------------------+
//|                                            2 ЗОНЫ.mq4            |
//|                                                                  |
//|                                                                  |
//|                                                                  |
//|  2017                                                            |
//+------------------------------------------------------------------+

#property indicator_chart_window

//------- Внешние параметры индикатора -------------------------------
extern int     NumberOfDays = 150 ;         // Количество дней
extern string Begin_1      = "03:00" ;
extern string End_1        = "08:00" ;
extern color   Color_1      = PowderBlue;
extern string Begin_2      = "09:00" ;
extern string End_2        = "16:30" ;
extern color   Color_2      = Yellow;
extern bool    HighRange    = true ;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  DeleteObjects();
   for ( int i= 0 ; i<NumberOfDays; i++) {
    CreateObjects( "PWT1" +i, Color_1);
    CreateObjects( "PWT2" +i, Color_2);
  }
   Comment ( "" );
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() {
  DeleteObjects();
   Comment ( "" );
}

//+------------------------------------------------------------------+
//| Создание объектов индикатора                                     |
//| Параметры:                                                       |
//|   no - наименование объекта                                      |
//|   cl - цвет объекта                                              |
//+------------------------------------------------------------------+
void CreateObjects( string no, color cl) {
   ObjectCreate (no, OBJ_RECTANGLE , 0 , 0 , 0 , 0 , 0 );
  ObjectSet(no, OBJPROP_STYLE , STYLE_SOLID );
  ObjectSet(no, OBJPROP_COLOR , cl);
  ObjectSet(no, OBJPROP_BACK , True);
}

//+------------------------------------------------------------------+
//| Удаление объектов индикатора                                     |
//+------------------------------------------------------------------+
void DeleteObjects() {
   for ( int i= 0 ; i<NumberOfDays; i++) {
     ObjectDelete ( "PWT1" +i);
     ObjectDelete ( "PWT2" +i);
  }
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() {
   datetime dt=CurTime();

   for ( int i= 0 ; i<NumberOfDays; i++) {
    DrawObjects(dt, "PWT1" +i, Begin_1, End_1);
    DrawObjects(dt, "PWT2" +i, Begin_2, End_2);
    dt=decDateTradeDay(dt);
     while (TimeDayOfWeek(dt)> 5 ) dt=decDateTradeDay(dt);
  }
}

//+------------------------------------------------------------------+
//| Прорисовка объектов на графике                                   |
//| Параметры:                                                       |
//|   dt - дата торгового дня                                        |
//|   no - наименование объекта                                      |
//|   tb - время начала сессии                                       |
//|   te - время окончания сессии                                    |
//+------------------------------------------------------------------+
void DrawObjects( datetime dt, string no, string tb, string te) {
   datetime t1, t2, t3;
   double    p1, p2, p3;
   int       b1, b2;

  t1=StrToTime(TimeToStr(dt, TIME_DATE )+ " " +tb);
  t2=StrToTime(TimeToStr(dt, TIME_DATE )+ " " +te);
  t3=StrToTime(TimeToStr(dt, TIME_DATE )+ " " "23:00" );
  b1= iBarShift ( NULL , 0 , t1);                             //Поиск бара по времени
  b2= iBarShift ( NULL , 0 , t2);
  p1=High[ iHighest ( NULL , PERIOD_M5 , MODE_HIGH , b1-b2, b2)];   // 
  p2=Low [ iLowest ( NULL , PERIOD_M5 , MODE_LOW , b1-b2, b2)]; // 
  p3=p2;
   if (!HighRange) {p1= 0 ; p2= 2 *p2;}
  ObjectSet(no, OBJPROP_TIME1 , t1);
  ObjectSet(no, OBJPROP_PRICE1, p1);
  ObjectSet(no, OBJPROP_TIME2 , t2);
  ObjectSet(no, OBJPROP_PRICE2, p2);
  ObjectSet(no, OBJPROP_TIME2 , t3);
  ObjectSet(no, OBJPROP_PRICE2, p3);
}

//+------------------------------------------------------------------+
//| Уменьшение даты на один торговый день                            |
//| Параметры:                                                       |
//|   dt - дата торгового дня                                        |
//+------------------------------------------------------------------+
datetime decDateTradeDay ( datetime dt) {
   int ty=TimeYear(dt);
   int tm=TimeMonth(dt);
   int td=TimeDay(dt);
   int th=TimeHour(dt);
   int ti=TimeMinute(dt);

  td--;
   if (td== 0 ) {
    tm--;
     if (tm== 0 ) {
      ty--;
      tm= 12 ;
    }
     if (tm== 1 || tm== 3 || tm== 5 || tm== 7 || tm== 8 || tm== 10 || tm== 12 ) td= 31 ;
     if (tm== 2 ) if ( MathMod (ty, 4 )== 0 ) td= 29 ; else td= 28 ;
     if (tm== 4 || tm== 6 || tm== 9 || tm== 11 ) td= 30 ;
  }
   return (StrToTime(ty+ "." +tm+ "." +td+ " " +th+ ":" +ti));
}
//+------------------------------------------------------------------+

Dosyalar:
2_aqi4.ex4  17 kb
2_mne7.mq4  11 kb
 
Maxim Kuznetsov :

"if (OrdersTotal()==0)...." koşullarını kaldırın - sadece şunu söylerler: girişleri ararız ve yalnızca hiç sipariş olmadığında yeni siparişler açarız.

ve böyle bir koşul olmadan büyük bir yeni paket hemen açılmaz, ek bir koşul bulmanız gerekir. Ve bu zaten stratejinizden: Bir öncekinden T süresi boyunca yenisini açmayın veya çubukları kontrol etmeyin veya emirler arasındaki noktalarda mesafeleri koruyun..

Anladım. Teşekkür ederim)

 
MT5'te, strateji test cihazında açıkça görülebileceği gibi, gerçek bir hesaptaki alım satım sonuçlarını bir grafik şeklinde sunmak mümkün müdür?
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 

Beyler, özellikle geliştiriciler, bana böyle bir sorunu çözme fırsatı olup olmadığını söyleyin? Şekildeki sorun


 

İyi günler, vurgulanan yerde n değişkeninde "tür dönüşümü nedeniyle olası veri kaybı " uyarısı var

 // Переводим строку в верхний регистр
string StringUpper( string s) {
   int c, i, k= StringLen (s), n;
   for (i= 0 ; i<k; i++) {
    n= 0 ;
    c=StringGetChar(s, i);
     if (c> 96 && c< 123 ) n=c- 32 ;     // a-z -> A-Z
     if (c> 223 && c< 256 ) n=c- 32 ;   // а-я -> А-Я
     if (c== 184 ) n= 168 ;             //  ё  ->  Ё
     if (n> 0 ) s=StringSetChar(s, i, n );
  }
   return (s);
}

Söyle bana, lütfen, nasıl düzeltilir?

 
Sergey :

İyi günler, vurgulanan yerde n değişkeninde "tür dönüşümü nedeniyle olası veri kaybı " uyarısı var

Söyle bana, lütfen, nasıl düzeltilir?

Veya kısa n=0;

Veya StringSetChar(s, i, (ushort)n);

Ancak StringSetCharacter() işlevini kullanmak daha iyidir.

Документация по MQL5: Строковые функции / StringSetCharacter
Документация по MQL5: Строковые функции / StringSetCharacter
  • www.mql5.com
Если значение pos меньше длины строки и значение символьного кода = 0, то строка усекается (но размер буфера, распределенного под строку остается неизменным). Длина строки становится равной значению pos.
 
Bu site, sık kullanılanlara makale ekleme işlevine sahip mi?
Konular için nasıl yapılır.
 

Tünaydın.

Çoklu para birimi Uzman Danışmanında, açık bir pozisyon tetiklendiğinde karşı hareket için verilmiş bekleyen bir emri kapatmanız gerekir.

Şimdi, kârla kapatırken, bekleyen tüm emirler tüm para birimlerinde kapatılır.

Yalnızca döviz çiftine bağlı bekleyen emir kapatılacak ve geri kalanı yerleştirilmiş kalacak şekilde kod nasıl değiştirilir?

Bu kodda nelerin değiştirilmesi gerekiyor?:

 if (OrderMagicNumber()==Mn){operation= 0 ;
 { for ( int   i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       { OrderSelect (i, SELECT_BY_POS);
         int   type   = OrderType(); bool result = false ;
         switch (type)
         { case OP_BUYSTOP   : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5 , Red ); //break;
           case OP_SELLSTOP  : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5 , Red ); //break; 
          
          result = OrderDelete( OrderTicket() ); //break;
          }}}}

Bu koddaki Mn, BUY_STOP veya SELL_STOP bekleyen emrin sihirli numarasıdır.

Mantık öyledir ki, kâr al ile açık bir pozisyonu kapattığınızda, bu sihirle verilen emir kalır ve teorik olarak silme komutu yürütülür.

Bu, her bir çifti test ederken çalışır. Ancak, diğer para birimleri ile çalışılması durumunda, tüm çiftler için verilen tüm siparişler silinir.

Kim yapabilir yardım edin.

Kimsenin bu sorunla uğraşmaması gerektiğini anlıyorum, ama belki birinin hazır bir şablonu vardır?

Çok minnettar kalırım.