Ваши вопросы по языку MQL4

Y2017

Прохожий
Нужна помощь

Здравствуйте!

Подскажите пожалуйста как можно сделать отображение значений мувинга младшего таймфрейма, нужно чтобы при закрытии дневной свечи выводились значения мувинга М5.

P.S. индикатор устанавливается на дневной график.
 

on220

Интересующийся
Доброго! Вот есть индюк опен клоза,может кто помочь сделать,чтоб можно было с настроек задать-день,неделя,месяц,но и самое главное,чтоб можно было задать 2 месяца,3 месяца,и.т.д до года;

PHP:
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Black
#property indicator_color2 CLR_NONE
#property indicator_color3 DodgerBlue

extern string Timeframe="D1";
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_DOT);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE, STYLE_DASH, 1);
   SetIndexBuffer(2,ExtMapBuffer3);
   
   SetIndexLabel(0,"Previous Day Pivot");
   SetIndexLabel(1,"Floating current pivot"); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }

  
int TodaysBarShift(int shift) {
   // return the bar shift for today. 
   // i.e. not today.
   
   datetime timenow= iTime(NULL,Period(),shift); // shift of current bar on lower TF chart.
   int idaybarshift = iBarShift(NULL,PERIOD_D1,timenow,false); 
   datetime timedaybegin = iTime(NULL,PERIOD_D1,idaybarshift);
   
   if ((timedaybegin) > timenow) idaybarshift++; 
   
   return(idaybarshift);    
}  

int PreviousNonSundayBarShift(int shift) {
   int tbs = TodaysBarShift(shift); 
   int ybs = tbs+1; 
   datetime yesterdaybegin = iTime(NULL,PERIOD_D1,ybs);
   if (TimeDayOfWeek(yesterdaybegin) == 0) ybs++; // we found a Sunday bar so screw it. 
   return(ybs); 
}

void TodaysHighestLowest(double& H, double& L, int shift) {
   // return the higest and lowest so far today.
   datetime now = iTime(NULL,Period(),shift); // time value of bar.
   int tbs = TodaysBarShift(shift);
   datetime daybegin = iTime(NULL,PERIOD_D1,tbs); 
   
   
   H = High[shift];
   L = Low[shift]; 
   int j = shift+1;
   while ( iTime(NULL,Period(),j) >= daybegin) {
      double Ht = High[j];
      double Lt = Low[j];
      H = MathMax(H,Ht);
      L = MathMin(L,Lt);
      j++;
      if ((j-shift) > 24) {
         Print ("Shit!");
         break;
      } 
   }
   return; 
}

  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   int limit = Bars-counted_bars;
   
   for (int i=limit; i >= 0; i--) {
      // Get the prev days pivot. Today's pivot.
      int ybs = PreviousNonSundayBarShift(i); 
      int tdbar = TodaysBarShift(i);
      
      // Prev day's pivot:
      double p = iOpen(NULL,PERIOD_D1,tdbar+1);
      double s = iOpen(NULL,PERIOD_D1,tdbar);
      
      double TH,TL;
      TodaysHighestLowest(TH,TL,i);
      
      double flp = (TH+TL+Close[i])*0.33333;   
      ExtMapBuffer1[i] = p;
      ExtMapBuffer2[i] = flp; 
      ExtMapBuffer3[i] = s;
      // 
   
   }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Последнее редактирование модератором:

блондинка

Элитный участник
Интересная задачка специалистам на выходные)
Такого индикатора ещё не делали для MT4.А картинку он даёт интересную)
Алгоритм в нём предельно простой - используется прайс экшен(где и какая свеча закрылась) и зоны OB/OS от стандартного стохастика.
Для тех кому он понравится на скрине,код индикатора (не MQL4) представлен в статье:
https://www.prorealcode.com/prorealt...int-indicator/
Всем успехов!:)
 

Вложения

  • Screenshot_1.png
    Screenshot_1.png
    129,8 КБ · Просмотры: 92

Tepih

Местный знаток
Интересная задачка специалистам на выходные)
Такого индикатора ещё не делали для MT4.А картинку он даёт интересную)
Алгоритм в нём предельно простой - используется прайс экшен(где и какая свеча закрылась) и зоны OB/OS от стандартного стохастика.
Для тех кому он понравится на скрине,код индикатора (не MQL4) представлен в статье:
https://www.prorealcode.com/prorealt...int-indicator/
Всем успехов!:)
Ссылка не открывается.
 

Виталий2014

Прохожий
Данная тема создана для любых вопросов относительно языка программирования MQL4. Спрашиваем, отвечаем, помогаем и живем дружно.

Всем успехов.

Аналогичная тема, но для MQL5 http://forexsystemsru.com/yazyk-programmirovaniya-mql-5/65448-voprosy-po-mql5.html#post339519
Помгите исправить ошибку - ошибка в коде ')' - unexpected end of program
- как исправить? Есть ещё одна ошибка: ')' - unexpected end of program - подскажите как исправить.
 

vladradon

Программист
Помгите исправить ошибку - ошибка в коде ')' - unexpected end of program
- как исправить? Есть ещё одна ошибка: ')' - unexpected end of program - подскажите как исправить.
Надо код видеть - нечетное количество скобок - либо одна лишняя (открывающая), либо одной не хватает (закрывающей).
 

xsyr

Местный житель
Можно ли создать индикатор/алерт/и т.д., который бы сигналил о появлении дивергенции в индикаторе.

по типу таких

mql5.com/ru/code/13172

mql5.com/ru/code/7768

mql5.com/ru/code/7774

только нужно сделать так чтобы вместо тамошних индикаторов он искал по моему. Я честно не знаю каким способом. Постройкой какого нибудь робота/индиктора/алерта где можно было бы выбрать один их пользовательских индикаторов. Если такое невозможно, то можно ли создать что то типо максимального лояльного к новичку шаблона где я бы смог вписать свой индикатор?
 
Последнее редактирование модератором:

Rennela

Новичок форума
xsyr сказал(а):
Можно ли создать индикатор/алерт/и т.д., который бы сигналил о появлении дивергенции в индикаторе...где я бы смог вписать свой индикатор?
А чем ваш индикатор отличается от других? Можно, только кто будет этим заниматься? Может кто и поможет,если код не сложный и индикатор уже есть в исходнике, а так за деньги - знатоки тут найдутся(я на заказ не пишу).
 

блондинка

Элитный участник
Привет всем!
Неожиданно потребовалось защитить индикатор от взлома
Есть ли варианты шифрования в MQL4?
Можно ли сделать так что бы файл ex.4 не открывался блокнотом?
Где почитать про библиотеки создаваемые чисто для защиты?
Просто укажите пожалуйста другой надёжный метод или способ защиты.
Как сделать триал и привязать к счёту уже выучила.
Как привязать индикатор к ID (код оборудования)?
Всем удачи и профитов!
 
Последнее редактирование:

panand

Местный знаток
Господа,прошу подсказки.
Что не так???
Пытался исправить предупреждения OrderModify(), но что-то не то
ошибка модиф_ордер.png
 

alexshell

Элитный участник

malojorsk

Новичок форума
Подскажите как узнать прибыль/убыток последнего закрытого ордера по TP или SL?
со срабатыванием тейка или стопа закрываются еще пара отложенных ордеров.

Спасибо...
 

panand

Местный знаток
второй раз bool для res.
обьявите res вверху где int, dooble вот так:bool res;
а где модифицируете ордер, уберите bool
Спасибо.
Исправил и немного изменил.
Всё верно?
исправление модиф_ордер.png
И последнее..
что нужно сделать,как исправить?
исправление предупреждения.png
 

malojorsk

Новичок форума
Исправьте пожалуйста, выдает ошибки

Код:
double isCloseLastPosByStopTrade(string sy,int op,int mn)
  {
   datetime t;
   double   ocp,osl;
   int      dg,i,j=-1,k=OrdersHistoryTotal();

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==sy) // || sy=="")
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(t<OrderCloseTime())
                       {
                        t=OrderCloseTime();
                        j=i;
                       }
                    }
                 }
              }
           }
        }
     }
   if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
     {
      return(OrderProfit());
     }

  }
 

mobidik

-----
Исправьте пожалуйста, выдает ошибки

Код:
double isCloseLastPosByStopTrade(string sy,int op,int mn)
  {
   datetime t;
   double   ocp,osl;
   int      dg,i,j=-1,k=OrdersHistoryTotal();

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==sy) // || sy=="")
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(t<OrderCloseTime())
                       {
                        t=OrderCloseTime();
                        j=i;
                       }
                    }
                 }
              }
           }
        }
     }
   if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
     {
      return(OrderProfit());
     }

  }

:)
PHP:
double isCloseLastPosByStopTrade(string sy,int op,int mn)
  {
   datetime t=0;
   double   profit;
   int      i,k=OrdersHistoryTotal();
 
   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==sy) // || sy=="")
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(t<OrderCloseTime())
                       {
                        t=OrderCloseTime();
                        profit=OrderProfit();
                       }
                    }
                 }
              }
           }
        }
     }
    return(profit);
  }
 
Верх