Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Доработать советник для МТ5

Добрый день, Андрей.
Прошу добавить несколько функций в советник
Советник для МТ5 — «Менеджер» zakaz.opentraders.ru/76979.html.
Доработки следующего плана:
1.добавить расчет

 double blot=NormalizeDouble(StringToDouble(txt)/(Bid-iLow(NULL,0,1))*_Point,2);
   double slot=NormalizeDouble(StringToDouble(txt)/(iHigh(NULL,0,1)-Ask)*_Point,2);
  

используя индикатор Fractals.mq5.
2.в настройки вывести варианты расчета лота на выбор пользователем:
— или прежний вариант;
— или вариант расчета по фракталам;
— или вариант MathMin(прежний вариант, вариант расчета по фракталам);
  • 0
  • Просмотров: 1114
  • 21 мая 2022, 16:42
  • ssg
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Идея для советника"Гамбит"
Следующая запись в группе  
Советник на индикаторе ZigZag_Arrow
18 мая 2022
22 мая 2022

Брокер для ваших роботов, 15 лет на рынке

Комментарии (7)

+
0
Андрей, добавьте пожалуйста вариант расчета лота используя данные индикатора:

+------------------------------------------------------------------+
//|                                                     Fractals.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
#property indicator_type1   DRAW_ARROW
#property indicator_type2   DRAW_ARROW
#property indicator_color1  Gray
#property indicator_color2  Gray
#property indicator_label1  "Fractal Up"
#property indicator_label2  "Fractal Down"
//---- indicator buffers
double ExtUpperBuffer[];
double ExtLowerBuffer[];
//--- 10 pixels upper from high price
int    ExtArrowShift=-10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//---- indicator buffers mapping
   SetIndexBuffer(0,ExtUpperBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtLowerBuffer,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_ARROW,217);
   PlotIndexSetInteger(1,PLOT_ARROW,218);
//---- arrow shifts when drawing
   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,ExtArrowShift);
   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-ExtArrowShift);
//---- sets drawing line empty value--
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---- initialization done
  }
//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,const int prev_calculated,
                const datetime &Time[],
                const double &Open[],
                const double &High[],
                const double &Low[],
                const double &Close[],
                const long &TickVolume[],
                const long &Volume[],
                const int &Spread[])
  {
   int i,limit;
//---
   if(rates_total<5)
      return(0);
//---
   if(prev_calculated<7)
     {
      limit=2;
      //--- clean up arrays
      ArrayInitialize(ExtUpperBuffer,EMPTY_VALUE);
      ArrayInitialize(ExtLowerBuffer,EMPTY_VALUE);
     }
   else limit=rates_total-5;

   for(i=limit;i<rates_total-3 && !IsStopped();i++)
     {
      //---- Upper Fractal
      if(High[i]>High[i+1] && High[i]>High[i+2] && High[i]>=High[i-1] && High[i]>=High[i-2])
         ExtUpperBuffer[i]=High[i];
      else ExtUpperBuffer[i]=EMPTY_VALUE;

      //---- Lower Fractal
      if(Low[i]<Low[i+1] && Low[i]<Low[i+2] && Low[i]<=Low[i-1] && Low[i]<=Low[i-2])
         ExtLowerBuffer[i]=Low[i];
      else ExtLowerBuffer[i]=EMPTY_VALUE;
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

//+------------------------------------------------------------------+

Наверное надо сравнить разницу между (бид — нижний фрактал) и (верхний фрактал — бид), а в расчете использовать большую разницу.Тогда величина лота все таки будет меньше чем сейчас, во всяком случае не больше, значит и залог нужен будет меньше.
И ещё, может быть есть смысл перенести код индикатора в код советника.
avatar

  16  ssg Автор Сообщений: 817

  • 21 мая 2022, 16:44
+
0
на 23-е
avatar

  35  AM2 Сообщений: 16249 - Андрей

  • 21 мая 2022, 21:31
+
0
Спасибо.
avatar

  16  ssg Автор Сообщений: 817

  • 22 мая 2022, 04:09
+
0
здесь решение сразу не просматривается, поэтому откладываю до лучших времен
avatar

  35  AM2 Сообщений: 16249 - Андрей

  • 23 мая 2022, 21:49
+
0
Хорошо.Подожду.Просто хочу уточнить — чем вызвана сложность.Может тогда немного изменю пожелания для облегчения задачи.
avatar

  16  ssg Автор Сообщений: 817

  • 24 мая 2022, 07:07
+
0
добавил расчет по фракталам: www.opentraders.ru/downloads/3316/



или вариант MathMin(прежний вариант, вариант расчета по фракталам);
что это?
avatar

  35  AM2 Сообщений: 16249 - Андрей

  • 24 мая 2022, 20:13
+
0
Спасибо.
Имелось в виду, что выбирается минимальный лот из двух вариантов:
— лот считается в прежнем варианте, и
— лот считается по фракталам.
Андрей, посмотрел код, больше не надо ничего делать, а то нужно будет переписывать логику основной функции.
Спасибо.
avatar

  16  ssg Автор Сообщений: 817

  • 24 мая 2022, 20:30

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий