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

Рейтинг 2146



РЕКОМЕНДУЮ



Стоповый помощник

Нужен советник, который в начале работы сразу открывает сетку стоповых отложенных ордеров байстоп и селстоп, количество указано в параметрах.
В параметрах есть и безубыток и если ордер закроется по безубытку, то пройдя расстояние между ордерами, откроет на том же месте опять отложенный ордер. То есть советник всегда будет поддерживать количество ордеров заданное в начале работы.
Например:
Открылось пять ордеров байстоп и селстоп, расстояние между ордерами 30 пунктов.
Цена пошла в бай, через 30 пунктов сработал байстоп. Безубыток у нас стоит 25 пунктов. Через 25 пунктов сработает беубыток и если цена продолжит идти в бай то всё прибыль будет расти и это хорошо.
Первый вариант — Если цена пойдёт обратно в сел и у нас будет стоит безубыток, то ордер закроется по безубытку и это тоже хорошо у нас нет минуса. И когда цена дальше пойдёт в сел, то через 30 пунктов откроется байстоп ордер на том месте где был ордер который закрылся по безубытку.
Второй вариант — Если цена пойдёт обратно в сел и у нас не будет стоять безубыток, то советник ничего не будет делать, а будет тащить его в сел с минусом.
В общем чтобы Вы понимали для чего это, тогда будет проще сделать советник.
Он будет служить, как бы балансом для безоткатного движение по тренду.
Допустим у нас есть советник, который открывает ордера против тренда с помощью усреднение. А этот советник и будет поддерживать баланс, если вдруг цена будет идти долго и советник с усреднением может уйти в минус.
То есть мы на нём не зарабатываем а используем как помощник для баланса.
Я сейчас выставляю всё вручную и очень тяжело контролировать ордера, а если ещё и шесть валют, то очень тяжко.
Параметры:
— Лот
— Расстояние между ордерами
— Количество ордеров
— Открыть байстоп
— Открыть селстоп
— Безубыток
— Магик
  • +3
  • Просмотров: 5120
  • 5 ноября 2019, 21:16
  • cashyra
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
в базе есть советники в которых выставляются отложки на пробой и при срабатывании ставится еще такая же. по сути одно и то же
avatar

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

  • 6 ноября 2019, 11:44
+
0
Не нашёл, подскажи дай ссылку.
Или лучше конечно сделать советник. Навряд ли кто такое мог придумать у него свои по требы у меня свои.
Пожалуйста, очень надо.
Редактирован: 6 ноября 2019, 17:07
avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 6 ноября 2019, 15:50
+
0
на 11-е
avatar

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

  • 6 ноября 2019, 18:02
+
0
покажите все подробно на скринах. не совсем понятно как открывать повторные ордера
avatar

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

  • 8 ноября 2019, 21:06
+
0
В начале работы сразу открывает сетку стоповых отложенных ордеров байстоп и селстоп, количество указано в параметрах.
Открылось пять ордеров байстоп и селстоп, расстояние между ордерами 30 пунктов.
Цена пошла в бай, через 30 пунктов сработал байстоп. Безубыток у нас стоит 25 пунктов.



Через 25 пунктов сработает беубыток и если цена продолжит идти в бай то всё прибыль будет расти и это хорошо.



Первый вариант — Если цена пойдёт обратно в сел и у нас будет стоит безубыток, то ордер закроется по безубытку и это тоже хорошо у нас нет минуса. И когда цена дальше пойдёт в сел, то через 30 пунктов откроется байстоп ордер на том месте где был ордер который закрылся по безубытку.
Второй вариант — Если цена пойдёт обратно в сел и у нас не будет стоять безубыток, то советник ничего не будет делать, а будет тащить его в сел с минусом.



avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 8 ноября 2019, 22:16
+
0
пока только набросок:



функцию повторной установки писать надо. быстро я ее не сделал. образец кода нужен.


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

//--- Inputs
extern double Lots       = 1;        // лот
extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int Delta         = 300;      // расстояние от цены
extern int Count         = 5;        // число ордеров
extern int BULevel       = 250;      // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int Slip          = 0;        // реквот
extern int Magic         = 123;      // магик

double pr=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   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()==type)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+BUPoint)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SecondOrder()
  {
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==5)
              {

              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(BULevel>0)
      BU();

// первое открытие

   if(CountTrades()<1)
     {
      if(CountOrders(4)<1)
        {
         pr=Bid;
         for(int i=1; i<=Count; i++)
            PutOrder(4,Bid+Delta*_Point*i);
        }
      if(CountOrders(5)<1)
        {
         for(int i=1; i<=Count; i++)
            PutOrder(5,Bid-Delta*_Point*i);
        }
     }

   Comment("\n Цена открытия сетки: ",pr);
  }
//+------------------------------------------------------------------+

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

avatar

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

  • 9 ноября 2019, 11:44
+
0
если цена возвращается обратно восстанавливает ордера сетки:



www.opentraders.ru/downloads/2477/

avatar

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

  • 9 ноября 2019, 13:30
+
0
А как это объяснить, почему закрывается минус. Можно ли это исправить. Может добавить трал. Хотя не понятно почему цена при закрытии меняется и получается минус.


Редактирован: 9 ноября 2019, 17:11
avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 9 ноября 2019, 16:09
+
0
Советник неплохой.Тока для него депо надо резиновое.:D *lalala* 
avatar

  11  Kuzimich Сообщений: 246 - Андрей

  • 9 ноября 2019, 17:23
+
0
Хотя не понятно почему цена при закрытии меняется и получается минус


тест с параметрами по умолчанию. всегда плюс. спред 10



avatar

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

  • 9 ноября 2019, 18:50
+
0
У меня брокер инстафорекс может поэтому. Все тики тоже поставил.



Вот параметры вроде норм.

avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 9 ноября 2019, 19:39
+
0
Пробывал стоплос. Не помогает ещё больше запутываюсь, не понятно кто минус закрывает.
Редактирован: 9 ноября 2019, 19:41
avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 9 ноября 2019, 19:41
+
0
Кажется нашёл как убрать минус. Надо пункты БУ увеличить, как можно больше, я с 2 поднял до 10 и всё пошли плюса. Это значит брокер такой получается.
Хотя минус полностью не ушёл. Всё равно пробивает. Да и не то я ожидал от советника. Минус тут присутствует больше чем плюс. Я хотел чтобы он держал баланс, но рынок так скачет. что выбивает все плюса и советник тянет за сабой минусовые зависшие ордера. Попробую стоп лос, но надежды мало. Может разве что тралом попробовать закрыть прибыль больше чем убыток.

extern int Delta = 30; // расстояние от цены
extern int BULevel = 17; // уровень БУ
extern int BUPoint = 10; // пункты БУ


Редактирован: 9 ноября 2019, 20:12
avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 9 ноября 2019, 20:04
+
0
Что бы минуса не было, надо в советник безубыток в валюте депозита.И чтобы с учётом комиссии, свопа и спреда.Тогда точно убытка не будет(при условии срабатывания)
avatar

  20  alex30774 Сообщений: 748

  • 10 ноября 2019, 09:04
+
0
Нет ничего не выходит с тралом, тоже даёт минус. Уже не знаю, что и придумать, чтобы безопасно можно было бы получать прибыль.
По ходу усреднение самое то. Тупо надо увеличивать шаг 35-50 междуордерами и ждать отката.
Редактирован: 9 ноября 2019, 22:13
avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 9 ноября 2019, 22:11

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