volondai

 
Уровень 9

  Торгую в компаниях:


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

Рейтинг 2151



РЕКОМЕНДУЮ



Простейший советник

Приветствую Всех тружеников хаоса! *drinks* 
Просьба написать советника по абсолютно простой стратегии.
Сама суть: при запуске советник открывает сразу 2 ордера (бай и селл по рынку).
При закрытии по профиту одного из направлений (профит считается раздельно, для покупок и продаж), сразу опять открываются 2 ордера — бай и селл начальным лотом, и так далее (при каждом закрытии по профиту любого направления, новая пара ордеров).
В настройки вывести:
1. Магик -…
2. Возможность в ручную указать комментарий (допустим магик или валюту), и чтобы его наглядно было видно в графе «Комментарий» терминала. -…
3. Лотность -…
4. Профит в валюте, а не в процентах, (для каждого из направлений одинаковый, но размер профита считается раздельно по бай и селл) -… (закрытие по общему профиту обоих направлений, не нужно совсем)
5. Размер разрешённого спреда -…
6. Проскальзывание -…

Мартин и стоплосы — тоже совсем не нужны. Советник для 5-и знака. Надеюсь понятно обЪяснил, и скрины тут не нужны.

П.С. Если цена идёт по тренду и без откатов, то у нас будет набираться сетка с просадкой, но это не страшно, рано или поздно всё равно будет откат. :D 

ППП.ССС. если у того, кто захочет протестировать эту стратегию, нет свободных средств, чтобы при необходимости долить депо,
то не стоит мучить компьютер тестами *wall* 
  • +2
  • Просмотров: 3317
  • 31 августа 2020, 20:09
  • volondai
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
оБРАЗЕЦ
Следующая запись в группе  
Falcon Zone MTF
31 августа 2020
31 августа 2020

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

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

+
0
Данная стратегия не предназначена для разгона, и тем более мелкого депо. А я делаю этот заказ для личных целей. Если кто то найдёт ему своё применение, буду только рад за него *hi* 
avatar

  9  volondai Автор Сообщений: 155

  • 31 августа 2020, 20:33
+
0
Прикольно… посмотри на евро, когда будет откат: рано или поздно???
avatar

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

  • 31 августа 2020, 20:39
+
0
*haha*  *haha* 
Я же написал у меня свои задумки, и пофиг мне когда какая либо валюта откатится.
avatar

  9  volondai Автор Сообщений: 155

  • 31 августа 2020, 20:46
+
0
Ну посмотрел я на уеувро, если нынешнюю ситуацию не считать откатом, то тогда что же такое откат *razdacha* 
avatar

  9  volondai Автор Сообщений: 155

  • 2 сентября 2020, 18:39
+
0
Эта ТС называется «Спецназ». Забейте в поисковике<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/017.gif' alt=' ;) '>&nbsp; 
www.opentraders.ru/downloads/2559/
Редактирован: 1 сентября 2020, 07:36
avatar

  12  Slava78 Сообщений: 598

  • 1 сентября 2020, 07:33
+
0
Слава плохо прочитал, мне не нужно ни мартышки ни усреднения, ни закрытие по общему профиту.
Просто и без примочек — одновременное открытие 2 ордеров, раздельно только считать профит каждого направления<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/008.gif' alt=' :P '>&nbsp; 
Похожих или подобных много, но они с не нужными примочками, а вот практически ни в одном нету возможности прописать свой комментарий, что бы наглядно было видно на какой паре работает сова, для меня это особенно важно.
Редактирован: 1 сентября 2020, 09:09
avatar

  9  volondai Автор Сообщений: 155

  • 1 сентября 2020, 08:51
+
0
опишите все подробнее и со скринами. пока не понятно
avatar

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

  • 1 сентября 2020, 18:52
+
0

Вроде я не такое сложное задание придумал, и что ещё подробнее можно описать, уже и не знаю.
avatar

  9  volondai Автор Сообщений: 155

  • 1 сентября 2020, 20:22
+
0
Попробую ещё подробнее:
Запустил советника он открывает сразу 2 разнонаправленных ордера.
не важно в какую сторону пошла цена он ждёт указанной в настойках прибыли (допустим 10 долларов) и закрывает прибыльный ордер (убыточный остаётся), а на этом месте выставляет новую пару ордеров.
Так как у нас профит должен по каждому направлению считаться раздельно, то он и ждёт прибыли по каждому направлению отдельно, не зависимо от количества ордеров получившейся убыточной сетки (ждёт до полика, или дяди коли <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/017.gif' alt=' ;) '>&nbsp; .
Редактирован: 1 сентября 2020, 20:44
avatar

  9  volondai Автор Сообщений: 155

  • 1 сентября 2020, 20:42
+
+1
Прикольный долгосрок, у меня есть идея (набросанное ТЗ) по подобному алгоритму.
avatar

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

  • 1 сентября 2020, 22:54
+
0
Хотел спросить:
Это сложное ТЗ, или просто нет желания ни у кого?
Прошу ответить, что бы я, либо ждал, либо просто отменил заказ.
avatar

  9  volondai Автор Сообщений: 155

  • 3 сентября 2020, 21:25
+
0
Не горячись, у парня не мало работы, по терпи, всё будет. *good* *friends* 
avatar

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

  • 3 сентября 2020, 21:32
+
0
Просто хотел узнать, стоит ждать или нет.
А горячится, и нет повода *za* 
avatar

  9  volondai Автор Сообщений: 155

  • 3 сентября 2020, 22:22
+
0
//+------------------------------------------------------------------+
//|                               Copyright © 2017, Vladimir Hlystov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, http://cmillion.ru"
#property link      "cmillion@narod.ru"
#property version   "2.00"
#property strict
#property description "Советник открывает пары встречных позиций через указанный шаг"
//-------------------------------------------------------------------
enum so 
{
   s1=1,  // buy
   s2=2, // sell
   s3=3, // buy + sell
};
input so       tt   = 3;//направление
extern int    Step            = 10;    //шаг между ордерами
extern double Lot             = 0.1;   //лот

extern int    Takeprofit      = 50,    //тейкпрофит
              Stoploss        = 45;    //стоплосс

extern int    MaxOrders       = 10;
extern int    Magic           = 0;
extern int    slippage        = 3;
//-------------------------------------------------------------------
string AC;
double MINLOT,MAXLOT;
//-------------------------------------------------------------------
void OnTick()
{
   if (!IsTradeAllowed()) return;
   double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   //---
   double MaxOrderBuy=0,MinOrderSell=0,MinOrderBuy=0,MaxOrderSell=0;
   double OSL,OTP,OOP,SL=0,TP=0;
   int i,b=0,s=0,tip;
   for (i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
         { 
            tip = OrderType(); 
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;TP=OTP;
            if (tip==OP_BUY)             
            {  
               b++; 
               if (MaxOrderBuy < OOP || MaxOrderBuy==0) MaxOrderBuy = OOP;
               if (MinOrderBuy > OOP || MinOrderBuy==0) MinOrderBuy = OOP;
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP - Stoploss   * Point,Digits);
               } 
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP + Takeprofit * Point,Digits);
               } 
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) 
                     Print("Error OrderModify <<",GetLastError(),">> ");
               }
            }                                         
            if (tip==OP_SELL)        
            {
               s++;
               if (MinOrderSell > OOP || MinOrderSell==0) MinOrderSell = OOP;
               if (MaxOrderSell < OOP || MaxOrderSell==0) MaxOrderSell = OOP;
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP + Stoploss   * Point,Digits);
               }
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP - Takeprofit * Point,Digits);
               }
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) 
                     Print("Error OrderModify <<",GetLastError(),">> ");
               }
            } 
         }
      }
   }
   if (b+s>=MaxOrders) return;
   if (((MinOrderBuy -Step*Point>Ask || MinOrderBuy==0)&&(tt==1 || tt==3)) || 
        (MaxOrderSell+Step*Point<Bid                   &&(tt==2 || tt==3)))
   {
      if (tt==1 || tt==3) 
         if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1) 
            Print("Error ",GetLastError());
      if (tt==2 || tt==3) 
         if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1) 
            Print("Error ",GetLastError());
   }
}
//------------------------------------------------------------------
avatar

  5  dok-45 Сообщений: 72

  • 4 сентября 2020, 11:56
+
+1
//+------------------------------------------------------------------+
//|                               Copyright © 2017, Vladimir Hlystov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, http://cmillion.ru"
#property link      "cmillion@narod.ru"
#property version   "2.00"
#property strict
#property description "Советник открывает пары встречных позиций через указанный шаг"
//-------------------------------------------------------------------
enum so 
{
   s1=1,  // buy
   s2=2, // sell
   s3=3, // buy + sell
};
input so       tt   = 3;//направление
extern int    Step            = 10;    //шаг между ордерами
extern double Lot             = 0.1;   //лот

extern int    Takeprofit      = 50,    //тейкпрофит
              Stoploss        = 45;    //стоплосс

extern int    MaxOrders       = 10;
extern int    Magic           = 0;
extern int    slippage        = 3;
//-------------------------------------------------------------------
string AC;
double MINLOT,MAXLOT;
//-------------------------------------------------------------------
void OnTick()
{
   if (!IsTradeAllowed()) return;
   double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   //---
   double MaxOrderBuy=0,MinOrderSell=0,MinOrderBuy=0,MaxOrderSell=0;
   double OSL,OTP,OOP,SL=0,TP=0;
   int i,b=0,s=0,tip;
   for (i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
         { 
            tip = OrderType(); 
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;TP=OTP;
            if (tip==OP_BUY)             
            {  
               b++; 
               if (MaxOrderBuy < OOP || MaxOrderBuy==0) MaxOrderBuy = OOP;
               if (MinOrderBuy > OOP || MinOrderBuy==0) MinOrderBuy = OOP;
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP - Stoploss   * Point,Digits);
               } 
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP + Takeprofit * Point,Digits);
               } 
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) 
                     Print("Error OrderModify <<",GetLastError(),">> ");
               }
            }                                         
            if (tip==OP_SELL)        
            {
               s++;
               if (MinOrderSell > OOP || MinOrderSell==0) MinOrderSell = OOP;
               if (MaxOrderSell < OOP || MaxOrderSell==0) MaxOrderSell = OOP;
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP + Stoploss   * Point,Digits);
               }
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP - Takeprofit * Point,Digits);
               }
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) 
                     Print("Error OrderModify <<",GetLastError(),">> ");
               }
            } 
         }
      }
   }
   if (b+s>=MaxOrders) return;
   if (((MinOrderBuy -Step*Point>Ask || MinOrderBuy==0)&&(tt==1 || tt==3)) || 
        (MaxOrderSell+Step*Point<Bid                   &&(tt==2 || tt==3)))
   {
      if (tt==1 || tt==3) 
         if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1) 
            Print("Error ",GetLastError());
      if (tt==2 || tt==3) 
         if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1) 
            Print("Error ",GetLastError());
   }
}
//------------------------------------------------------------------


гляньте не оно?
не знаю как готовое выложить
avatar

  5  dok-45 Сообщений: 72

  • 4 сентября 2020, 11:57
+
0
Нет это не то, не нужен шаг, просто открытие новой пары, при каждом закрытии одного из направлений по профиту этого направления.
Вроде выше всё подробно разжевал.
Но всё же спасибо за участие.
Редактирован: 4 сентября 2020, 17:43
avatar

  9  volondai Автор Сообщений: 155

  • 4 сентября 2020, 17:43
+
+1
я помню делал такой. но вряд ли найду сейчас. буду с нуля писать сегодня
avatar

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

  • 4 сентября 2020, 18:22
+
0
Обязательноооо дождусь*bravo* 
avatar

  9  volondai Автор Сообщений: 155

  • 4 сентября 2020, 18:52
+
+1
avatar

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

  • 4 сентября 2020, 19:29
+
0
Не зря я ждал, как раз то, что мама прописала *good* 
Для моих целей больше и желать не чего.
Огромное СПАСИБО *drinks* 
avatar

  9  volondai Автор Сообщений: 155

  • 4 сентября 2020, 20:13
+
0
О дела, увидел картинку Андрея (принцип работы) и вспомнил что в «ящике» валяется такой с 2011 года :D 
avatar

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

  • 4 сентября 2020, 22:47
+
0
Приветствую Андрей!
Советник работает нормально, если стоит на одной паре, но если на этой же паре в другом окне и с другим магиком стоит другой советник, то он не открывает новые ордера (открывает только первую пару ордеров, и потом молчит).
Так же, если даже он один стоит на паре, то первую пару открывает только при его установке на график. Если кнопкой терминала — *Авто-торговля* остановить торговлю, а потом запустить снова, то он тоже не начинает открывать ордера. Получается, что бы его запустить, то надо каждый раз по новой ставить на график. Это вроде и не так страшно, но страшно не удобно.
Проверь пожалуйста.
Редактирован: 7 сентября 2020, 12:36
avatar

  9  volondai Автор Сообщений: 155

  • 7 сентября 2020, 12:35
+
0
проверил. работает.

avatar

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

  • 7 сентября 2020, 20:19
+
0
Всё спасибо, я уже приспособился.*bravo* 
avatar

  9  volondai Автор Сообщений: 155

  • 7 сентября 2020, 21:19

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