Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2546

 
Игорь #:
ExtMacdBuffer[i]

Вместо h/l присвойте значение ExtMacdBuffer[bar]

 
Всем привет!!!   Есть может библиотека с торговыми классами для mql4?   Ещё вопрос в mkl5 есть функция которая распечатывает массив arrayPrint есть что-то подобное для mql4?
 
Tretyakov Rostyslav #:

спс еще раз  -  все сделал по науке как в индикаторе -внешние переменные в робота отобразил - потом в роботе дальше пошли свои еще (другие внешние переменные), далее считываю значение линий

extern string  Symbol1Name    = "EURUSD";
extern bool   Symbol1Reverse = false;  
extern string  Symbol2Name    = "US500";    // ЕСЛИ НЕТ то делать (sy=="0") || (sy==" ") || (sy=="")
extern bool    Symbol2Reverse = false;     // Является ли инструмент 2 реверсивным (с обратной корреляцией) 
extern string  Symbol3Name    = "USDInd";         // ЕСЛИ НЕТ то делать (sy=="0") || (sy==" ") || (sy=="")


extern string  ___MISC___ = " == Прочие настройки ==========";
extern bool   UseVolatility  =true ;       //отрисовка с учетом волатильности
extern bool   Triangle =True ;             // Рисовать треугольник?
extern color  TriangleColor = clrDarkSalmon; // Цвет треугольника
extern double AlertChannelMore = EMPTY;   // Если ширина канала больше указанной, включается сигнал
                                           //   -1 - контроль выключен.
extern double AlertChannelLess = EMPTY;   // Если ширина канала меньше указанной, включается сигнал
                                           //   -1 - контроль выключен.
extern string  __VOL___   = " == Расчет объемов ====";
extern int VOLMode = 3;                   // Режим расчета объемов для торговли
                                           //   1 - по ценам открытия
                                           //   2 - по волатильности, а если невозможно - по ценам открытия
                                           //   3 - по волатильности (если возможно) и ценам открытия
extern int VOLPeriodATR = 144;            // Период усреднения ATR 

extern string  ___MA___   = " == Параметры МА ценовых линий ====";

extern int MASlow = 21;                   // Период медленной МА
extern int MAFast = 8;                    // Период быстрой МА
extern int MAMethod=2;                    // Метод аппроксимации
                                           // - MODE_SMA=0 Простое скользящее среднее 
                                           // - MODE_EMA=1 Экспоненциальное скользящее среднее 
                                           // - MODE_SMMA=2 Сглаженное скользящее среднее 
                                           // - MODE_LWMA=3 Линейно-взвешенное скользящее среднее 
extern int MAPrice=6;                     // Расчетная цена:
                                           // - PRICE_CLOSE=0 Цена закрытия 
                                           // - PRICE_OPEN=1 Цена открытия 
                                           // - PRICE_HIGH=2 Максимальная цена 
                                           // - PRICE_LOW=3 Минимальная цена 
                                           // - PRICE_MEDIAN=4 Средняя цена, (high+low)/2 
                                           // - PRICE_TYPICAL=5 Типичная цена, (high+low+close)/3 
                                           // - PRICE_WEIGHTED=6 Взвешенная цена закрытия, (high+low+close+close)/4 


extern bool Using_line_intersections_with_Ind2Line = true;
extern  int    MagicNumber = 0;       // Идентификатор позиций
...
...
// зеленый цвет линии индика  
  double ind_10=iCustom(_Symbol,_Period,"Ind_2linep1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,0,0); // "0" - bar
  double ind_11=iCustom(_Symbol,_Period,"Ind_2linep1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,0,1); // "1" - bar
  double ind_12=iCustom(_Symbol,_Period,"Ind_2linep1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,0,2); // "2" - bar
  
  // синий цвет линии индика
  double ind_20=iCustom(_Symbol,_Period,"Ind_2linep1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,1,0); // "0" - bar
  double ind_21=iCustom(_Symbol,_Period,"Ind_2linep1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,1,1); // "1" - bar
  double ind_22=iCustom(_Symbol,_Period,"Ind_2linep1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,1,2); // "2" - bar

   Comment("MagicNumber = ",MagicNumber,  "\n",
           "Инструменты спреда: ",Symbol1Name," & ",Symbol2Name," & ",Symbol3Name,"\n",
           "ind_10 = ",ind_10," ind_11 = ",ind_11," ind_12 = ",ind_12,"\n",
           "ind_20 = ",ind_20," ind_21 = ",ind_21," ind_22 = ",ind_22,"\n",
           "Суммарный профит закрытия = ","$",CloseProfit,"\n",
           "Суммарный убыток закрытия = ","$",CloseLoss,"\n",
           "Текущий суммарный профит = ",pr_up,"\n",
           "Трейлинг_Стоп = ",Trailing_Stop,  "\n",           
           "Уровень закрытия =",  gdProfit);
...


если  через

Comment

 будет криво значения линий отображать на барах - то сделаю типа через нормализацию....

пока так оставлю посмотрю на  значения в роботе и на индикаторе на барах 0  1   2

 

почему то пишет что не может открыть индикатор- спс за помощь...


нашел ошибку в обращении к индикатору -   что то пошло рисоваться и считаться  ) - буду сравнивать


// зеленый цвет линии индика  
  double ind_10=iCustom(_Symbol,_Period,"Ind_2line+1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,0,0); // "0" - bar
  double ind_11=iCustom(_Symbol,_Period,"Ind_2line+1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,0,1); // "1" - bar
  double ind_12=iCustom(_Symbol,_Period,"Ind_2line+1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,0,2); // "2" - bar
  
  // синий цвет линии индика
  double ind_20=iCustom(_Symbol,_Period,"Ind_2line+1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,1,0); // "0" - bar
  double ind_21=iCustom(_Symbol,_Period,"Ind_2line+1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,1,1); // "1" - bar
  double ind_22=iCustom(_Symbol,_Period,"Ind_2line+1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,1,2); // "2" - bar

буду еще разбираться значние в индикаторе

-2.1  а в роботе когда считываю пишет -1,5

буду еще разбираться.... вроде пока смотрю обращение верное к индикатору


все спасибо - коллеги - разобрался -были разные значения в роботе и индикаторе входных переменных внешних


вот все ок и совпадает -2,2 и на индикаторе и в роботе!!!

СПс!!!!! за помощь!!!

 
Tretyakov Rostyslav #:
ExtMacdBuffer[bar]

Вот это надо прописывать?

int  iBars(
   string           symbol,          // символ
   ENUM_TIMEFRAMES  timeframe        // период
   );
 
Maxim Kuznetsov #:

SetIndexBuffer и PlotIndexSet имеют раздельные индексации. В первом - индекс буфера, во втором линии плот

у тебя рисуется 4 линии (в #property задано) и в PlotIndexSet(..) могут быть значения от 0 до 3. Макд - 0 и 1, стрелки 2 и 3

Не вполне очевидным образом сделано, но потом все привыкли

Если, не трудно, подскажи (так как с макд), у меня в коде всё логично? Желтым цветом отмечен зигзаг, сигнал которого должен подтверждаться стрелочным индикатором, по причинам переписывания индикатора зигзага.   

#property indicator_chart_window
#property indicator_buffers 12
#property indicator_plots   7 
//
//--- plot ZigZag 
#property indicator_label1  "ZigZag"
#property indicator_type1   DRAW_SECTION
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3
//
#property indicator_color2  clrWhite
#property indicator_type2   DRAW_ARROW
#property indicator_width3  5
#property indicator_color3  clrLime
#property indicator_width3  2
#property indicator_color4  clrBlue //C'0,128,255'
#property indicator_width4  7
#property indicator_type4   DRAW_ARROW
#property indicator_color5  clrRed //C'192,0,192'
#property indicator_width5  7
#property indicator_type5   DRAW_ARROW
#property indicator_color6  clrDodgerBlue //C'0,128,255'
#property indicator_width6  3
#property indicator_type6   DRAW_ARROW
#property indicator_color7  clrMediumVioletRed //C'192,0,192'
#property indicator_width7  3
#property indicator_type7   DRAW_ARROW

sinput string  RA_Params = "-- Параметры ZigZag --"; 
//--- input parameters ZigZag
input int      period=34;
sinput string  EA_Params = "-- Параметры Signals"; 
input int    SRZZ = 60;
input string AlertsSection = ""; // == Alerts ==
input bool     Popup_Alert              = true; // Popup message
input bool     Notification_Alert       = false; // Push notification
input bool     Play_Sound               = false; // Play sound on alert
input string   Sound_File               = ""; // Sound file
// Buffers Signals:
double Lmt[];
double LZZ[];
double SA[];
double SM[];
double Up[];
double Dn[];
double pUp[];
double pDn[];
//--- indicator buffers ZigZag
double ZigBuffer[], trend[],HighBar[],LowBar[];

//----------------------------------------------------------------   
int OnInit()
{
   SetIndexBuffer(0, Lmt, INDICATOR_DATA);
   SetIndexBuffer(1,ZigBuffer,INDICATOR_DATA);
   
   PlotIndexSetInteger(0, PLOT_ARROW, 167);
   PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, 0);
   ArraySetAsSeries(Lmt, true);

   SetIndexBuffer(2, LZZ, INDICATOR_DATA);
   if (DrawZZ)
   {
      PlotIndexSetInteger(2, PLOT_DRAW_TYPE, DRAW_SECTION);
      PlotIndexSetDouble(2, PLOT_EMPTY_VALUE, 0);
   }
   else PlotIndexSetInteger(2, PLOT_DRAW_TYPE, DRAW_NONE);
   ArraySetAsSeries(LZZ, true);
   
   SetIndexBuffer(3, Up, INDICATOR_DATA);
   PlotIndexSetInteger(3, PLOT_ARROW, 233); // Green up arrow
   PlotIndexSetDouble(3, PLOT_EMPTY_VALUE, 0);
   ArraySetAsSeries(Up, true);

   SetIndexBuffer(4, Dn, INDICATOR_DATA);
   PlotIndexSetInteger(4, PLOT_ARROW, 234); // Green up arrow
   PlotIndexSetDouble(4, PLOT_EMPTY_VALUE, 0);
   ArraySetAsSeries(Dn, true);
   
   SetIndexBuffer(5, pUp, INDICATOR_DATA);
   PlotIndexSetInteger(5, PLOT_ARROW, 104); // Green up markers
   PlotIndexSetDouble(5, PLOT_EMPTY_VALUE, 0);
   ArraySetAsSeries(pUp, true);

   SetIndexBuffer(6, pDn, INDICATOR_DATA);
   PlotIndexSetInteger(6, PLOT_ARROW, 104); // Red down markers
   PlotIndexSetDouble(6, PLOT_EMPTY_VALUE, 0);
   ArraySetAsSeries(pDn, true);

   SetIndexBuffer(7, SA, INDICATOR_CALCULATIONS);
   ArraySetAsSeries(SA, true);
   SetIndexBuffer(8, SM, INDICATOR_CALCULATIONS);
   ArraySetAsSeries(SM, true);
   
   SetIndexBuffer(9,trend,INDICATOR_CALCULATIONS);
   SetIndexBuffer(10,HighBar,INDICATOR_CALCULATIONS);
   SetIndexBuffer(11,LowBar,INDICATOR_CALCULATIONS);
   //--- set short name and digits
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
   
   if (SR < 2) SR = 2;
   if (SRZZ <= SR)
   {
      Alert("SRZZ should be greater than SR (", SR, ")");
      return(INIT_FAILED);
   }
   
 
Игорь #:

Если, не трудно, подскажи (так как с макд), у меня в коде всё логично? Желтым цветом отмечен зигзаг, сигнал которого должен подтверждаться стрелочным индикатором, по причинам переписывания индикатора зигзага.   

бегло - вроде как логично всё..

да и чего смотреть - проверяйте сами-то :-) работает/нет

 
Maxim Kuznetsov #:

бегло - вроде как логично всё..

да и чего смотреть - проверяйте сами-то :-) работает/нет

Я с начала прописал  2 блока настроек ( OnInit() и другой блок) у меня рисовался только сигнальный индюк. Потом мне подсказали правильный вариант, как нужно делать, я всё прописал. При компиляции ошибок нет, однако снова рисует всякую дребедень.

 
Игорь #:

Вот это надо прописывать?

нет
 
Подскажите, пожалуйста, как считается общая прибыль?

На 4-ке нужно было суммировать плавающий профит + коммиссии + своп. 

А в 5-ке какой-то туман: гуглишь документацию, а там 

Какая прибыль? С учётом издержек? Без?

Гуглишь  POSITION_PROFIT, а там — споры на форуме о том, что он считает. И одни постулаты от опытных пользователей. 

Спрашиваешь Чаты: Дип говорит - "Да! Учитывает", ГПТ говорит "Нет, не учитывает!". 

Это как? 

Один ссылается на несуществующую страницу


https://www.mql5.com/ru/docs/trading/positions


Туман какой-то.