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

Рейтинг 2146



РЕКОМЕНДУЮ



Несложный советник

Прошу написать не сложный советник.

Инициализация

Лот
Переменная N
Стоп
Тейк
Майджик

При появлении новой свечи, советник ждет, когда цена пройдет заданное количество пунктов, вниз или вверх, на переменную N (текущая цена 100 переменная 10, если цена на этой свече, стала 90, то продаем, если на той же свече стала 110, то покупаем.)

Советник открывает сделку, по рынку, при прохождении заданного количества пунктов. Если после открытия ордера цена пошла в другую сторону, то советник открывает еще один ордер в другую сторону. Ордеров может быть два, на одной свече. При появлении новой свечи (все начинаем сначала, открытые ордера удерживаем, до срабатывания стопов,), ждем прохождения на заданное количество пунктов и открываем ордер.

Все расчеты ведутся по bid. (Точка открытия новой свечи, bid текущей цены, больше или меньше точки открытия на N пунктов, в пределах данной свечи)
  • 0
  • Просмотров: 3403
  • 13 января 2018, 16:25
  • Syte
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
Скрины с пояснениями пожалуйста.
avatar

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

  • 13 января 2018, 16:46
+
0
Хм… А как это за скринить? Я просто реально не знаю как это в картинках описать.

Появилась новая свеча. Нулевой бар. Ждем когда цена пойдет вверх или вниз от точки Open[0], на переменную N по цене bid. И все.

Могу другими словами описать.

При присоединении советника. к графику, ждем появления нового бара.
Когда он появился, берем Open[0] прибавляем к ней переменную N. И сравниваем, значение полученного результата с текущей ценой. Если равно, или больше, то покупаем, но один раз, в одну сторону.

Пример: Если текущее ценовое значение нового бара, 100, а переменная, 10, то для покупки нужно открыть ордер по рынку, если будет цена 110. А для продажи, если цена будет 90. Другими словами, мы от значения цены Open отнимаем или прибавляем переменную N. И открываем ордер. Только один раз на свече и ставим стопы. В итоге, если при подключении советника, мы дождались появления новой свечи, мы можем открыть не более двух ордеров на одной свече.

Предположим, что цена нового бара Open[0] равна 100. Переменная равна 10. Цена пошла вниз на 90. Тут советник должен открыть sell со стопами. Если после открытия, сразу пошли на верх, то есть, в пределах данной свечи. И достигла отметки 110, то покупаем по рынку. Все, дальше ждем, так как в рынке на этой свече было открыто два ордера. Можно открыть если, появится новое условие, а именно новая свеча. И по ней уже будем считать новые ордера. Но так же не более двух. На одной свече, нельзя открывать два одинаковых ордера, на одной свече. На одной свече может быть открыты ордера, либо sell, либо buy, либо оба sell и buy. Но нее два sell или два buy.
avatar

  14  Syte Автор Сообщений: 399

  • 13 января 2018, 17:56
+
0
Могу тех задание нарисовать в схеме.
avatar

  14  Syte Автор Сообщений: 399

  • 13 января 2018, 18:02
+
0


Если сработало условие для покупки, ждем выполнение условия для продажи, в пределах этого бара, на этом баре больше не покупаем.

Если сработало условие для продажи, значит больше не продаем, на этом баре, ждем противоположное условие, для покупки. Либо появление новой свечи. Появилась новая свеча, работаем с начала с 3 пункта.

Третий пункт всегда обновляет свое значение, с появлением нового бара. За место 100, там может быть любое значение. Это значение будет равно Open нового бара. От него все считаем
Редактирован: 13 января 2018, 18:34
avatar

  14  Syte Автор Сообщений: 399

  • 13 января 2018, 18:29
+
0
Посмотрю после выходных.
avatar

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

  • 13 января 2018, 19:46
+
0
Спасибо огромное
avatar

  14  Syte Автор Сообщений: 399

  • 13 января 2018, 19:47
+
0
Нормально он мне нарисовал за 10 лет!
www.opentraders.ru/downloads/1778/

avatar

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

  • 13 января 2018, 20:16
+
0
Вот и я об этом :) ;) )))) Поделимся?! :) 
avatar

  14  Syte Автор Сообщений: 399

  • 13 января 2018, 20:36
+
0
Только у вас ордера перепутаны. Там где нужен sell стоит buy. Где нужен buy там стоит sell :)  Эта стратегия, напоминает вашу, которую вы делали по видео. Торнадо по моему, но тут более, надежный вход без сетки и соответственно просадка меньше.
avatar

  14  Syte Автор Сообщений: 399

  • 13 января 2018, 20:55
+
0
Поменял входы:


//+------------------------------------------------------------------+
//|                                                        Buzel.mq4 |
//|                                              Copyright 2017, AM2 |
//|                                      http://www.forexsyatems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, AM2"
#property link      "http://www.forexsyatems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 1;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern int StopLoss      = 350;      // лось
extern int TakeProfit    = 200;      // язь
extern int Delta         = 300;      // 
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

bool b=1,s=1;
datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderProfit()>0) break;
         if(OrderProfit()<0)
           {
            lot=OrderLots()*KLot;
            break;
           }
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(t!=Time[0])
     {
      b=1;s=1;
      t=Time[0];
     }
     
   if(Bid-Open[0]>Delta*Point && b)
     {
      PutOrder(0,Ask);b=0;
     }

   if(Open[0]-Bid>Delta*Point && s)
     {
      PutOrder(1,Bid);s=0;
     }
  }
//+------------------------------------------------------------------+

avatar

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

  • 13 января 2018, 21:01
+
0
Так хуже.
avatar

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

  • 13 января 2018, 21:03
+
0
avatar

  14  Syte Автор Сообщений: 399

  • 13 января 2018, 21:07
+
0
А можно ли, прописать в советнике, что бы он, ордер закрывал по времени. Скажем чтобы ордер был в рынке час, а потом закрылся по рынку, не важно с какой прибылью?
avatar

  14  Syte Автор Сообщений: 399

  • 15 января 2018, 18:32
+
0
можно но в следующем топике.
avatar

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

  • 15 января 2018, 21:10
+
0
Через месяц, новый топик создать, или сразу создать? А у вас нету образца? Советник который такое использует. Я бы сам попробовал дописать.
avatar

  14  Syte Автор Сообщений: 399

  • 16 января 2018, 12:34
+
0
Здравствуйте Андрей.
Скажите пожалуйста, а в чём причина, советник не открывает ордера, на 5-ти знаке?
0 добавлял, а всё равно молчит
и в журнале — нет ни каких ошибок

спасибо.
avatar

  5  Andrey1979 Сообщений: 136

  • 6 октября 2019, 19:42

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