0
Модифицировать нельзя. Например открыт один лимитник селл и 12 бай а потом цена зашла на середину индюка. Здесь нужно долго репу чесать а это не ко мне. То что можно было быстро сделать сделал.
avatar

AM2

  • 10 октября 2016, 11:53
+1
Ставит указанные уровни на все открытые графики по символу в настройках: www.opentraders.ru/downloads/1350/

input string Symb="GBPUSD";

avatar

AM2

  • 10 октября 2016, 08:26
+1
Реализовал ваш алгоритм самым простым образом. Забиваем в настройки уровни. видим их на графике:




//+------------------------------------------------------------------+
//|                                                        Genri.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input double L1=0;
input double L2=0;
input double L3=0;
input double L4=0;
input double L5=0;
input double L6=0;
input double L7=0;
input double L8=0;
input double L9=0;
input int Width=1;
input color Color=Red;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll(0,0,OBJ_HLINE);
  }
//+------------------------------------------------------------------+
//| Горизонтальная линия                                             |
//+------------------------------------------------------------------+
void PutHLine(string name,double p,int width,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(L1>0) PutHLine("Line"+(string)L1,L1,Width,Color);
   if(L2>0) PutHLine("Line"+(string)L2,L2,Width,Color);
   if(L3>0) PutHLine("Line"+(string)L3,L3,Width,Color);
   if(L4>0) PutHLine("Line"+(string)L4,L4,Width,Color);
   if(L5>0) PutHLine("Line"+(string)L5,L5,Width,Color);
   if(L6>0) PutHLine("Line"+(string)L6,L6,Width,Color);
   if(L7>0) PutHLine("Line"+(string)L7,L7,Width,Color);
   if(L8>0) PutHLine("Line"+(string)L8,L8,Width,Color);
   if(L9>0) PutHLine("Line"+(string)L9,L9,Width,Color);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 10 октября 2016, 07:46
0
Вот сейчас уже можно посмотреть как отрабатываются уровни, а выглядит это примерно так: www.opentraders.ru/downloads/1351/



avatar

AM2

  • 10 октября 2016, 07:18
0
Упрощенный вариант могу сделать. Будет читать из файла и наносить на один график. Путь к файлу будет задаваться в настройках. Также попрошу показать на скрине, что за уровни и привести формат текстового файла.
avatar

AM2

  • 10 октября 2016, 06:26
+1
Находите готовый советник в кодобазе мкл и переносите к себе нужные функции.
Можете добавить готовый экземпляр класса или переписать с мкл4. Переписать легко я здесь топик делал как переписывать.
avatar

AM2

  • 9 октября 2016, 21:48
+1
Прошу Вас провести ликбез по MQL5, каким образом можно добавить в этот советник трейлинг и без убыток

Снять с готового.
avatar

AM2

  • 9 октября 2016, 21:22
0
После выходных продолжу.
avatar

AM2

  • 8 октября 2016, 18:23
0
Напишите плиз хотя бы кусочек кода



bool b=true,s=true;
...
   if(s && ...) {PutOrder(1,Bid);s=false;b=true;}
   if(b && ...) {PutOrder(0,Ask);b=false;s=true;}
avatar

AM2

  • 8 октября 2016, 18:16
0
Вот рабочий вариант:


double Lot()
  {
   double lot=Lots;
   if(CountTrades()>0) lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades()),2);
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
avatar

AM2

  • 8 октября 2016, 18:11
+1
Бесплатно очень редко делают.
avatar

AM2

  • 8 октября 2016, 18:01
0
Набросок. Верхние 7 линий селллимит нижние бай. Смотрите, уточняйте:




//+------------------------------------------------------------------+
//|                                                       Murena.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

input bool Order1=true;
input bool Order2=true;
input bool Order3=true;
input bool Order4=true;
input bool Order5=true;
input bool Order6=true;
input bool Order7=true;
input bool Order8=true;
input bool Order9=true;
input bool Order10=true;
input bool Order11=true;
input bool Order12=true;
input bool Order13=true;

extern double Lots       = 0.1;      // лот
extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,0,0,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//mml12 +2/8p 
//mml11 +1/8p  
//mml10  8/8
//mml9   7/8
//mml8   6/8
//mml7   5/8
//mml6   4/8
//mml5   3/8
//mml4   2/8
//mml3   1/8
//mml2   0/8
//mml1  -1/8p
//mml0  -2/8p

   double p28p=ObjectGetDouble(0,"mml12",OBJPROP_PRICE);
   double p18p=ObjectGetDouble(0,"mml11",OBJPROP_PRICE);
   double p88=ObjectGetDouble(0,"mml10",OBJPROP_PRICE);
   double p78=ObjectGetDouble(0,"mml9",OBJPROP_PRICE);
   double p68=ObjectGetDouble(0,"mml8",OBJPROP_PRICE);
   double p58=ObjectGetDouble(0,"mml7",OBJPROP_PRICE);
   double p48=ObjectGetDouble(0,"mml6",OBJPROP_PRICE);
   double p38=ObjectGetDouble(0,"mml5",OBJPROP_PRICE);
   double p28=ObjectGetDouble(0,"mml4",OBJPROP_PRICE);
   double p18=ObjectGetDouble(0,"mml3",OBJPROP_PRICE);
   double p08=ObjectGetDouble(0,"mml2",OBJPROP_PRICE);
   double p18m=ObjectGetDouble(0,"mml1",OBJPROP_PRICE);
   double p28m=ObjectGetDouble(0,"mml0",OBJPROP_PRICE);

   if(OrdersTotal()<1)
     {
      if(Order13 && Bid<p28p) PutOrder(3,NormalizeDouble(p28p,Digits));
      if(Order12 && Bid<p18p) PutOrder(3,NormalizeDouble(p18p,Digits));
      if(Order11 && Bid<p88)  PutOrder(3,NormalizeDouble(p88,Digits));
      if(Order10 && Bid<p78)  PutOrder(3,NormalizeDouble(p78,Digits));
      if(Order9  && Bid<p68)  PutOrder(3,NormalizeDouble(p68,Digits));
      if(Order8  && Bid<p58)  PutOrder(3,NormalizeDouble(p58,Digits));
      if(Order7  && Bid<p48)  PutOrder(3,NormalizeDouble(p48,Digits));
      if(Order6  && Bid>p38)  PutOrder(2,NormalizeDouble(p38,Digits));
      if(Order5  && Bid>p28)  PutOrder(2,NormalizeDouble(p28,Digits));
      if(Order4  && Bid>p18)  PutOrder(2,NormalizeDouble(p18,Digits));
      if(Order3  && Bid>p08)  PutOrder(2,NormalizeDouble(p08,Digits));
      if(Order2  && Bid>p18m) PutOrder(2,NormalizeDouble(p18m,Digits));
      if(Order1  && Bid>p28m) PutOrder(2,NormalizeDouble(p28m,Digits));
     }

   Comment("\n +2/8P: ",p28);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 8 октября 2016, 15:03
+1
Когда у вас будет 3-й уровень рассмотрю ваш заказ.
avatar

AM2

  • 8 октября 2016, 14:03
0
Покажите на скрине каким образом будем ставить лимитники?
avatar

AM2

  • 8 октября 2016, 13:00
0
У вас этот советник на этот месяц пошел, напомните в следующем.
avatar

AM2

  • 8 октября 2016, 12:56
0
Как избавиться от OrderSend error 131?

Задать правильный лот.
avatar

AM2

  • 8 октября 2016, 12:48
0
Объясните велика ли разница между строчками

В первом случае ордера перебираются с начала во втором с конца.
avatar

AM2

  • 8 октября 2016, 12:46
+1
На контрольках как рисует :D 
www.opentraders.ru/downloads/1349/

avatar

AM2

  • 7 октября 2016, 20:15
0
Сделаю сегодня.
avatar

AM2

  • 7 октября 2016, 17:50
0
ордера так и не открылись, почему?

Здесь нужно разбираться детально. Нужны настройки логи скрины или может просто брокер не пустил.
avatar

AM2

  • 7 октября 2016, 17:43