Artev

 
Уровень 3

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


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

Рейтинг 2089



РЕКОМЕНДУЮ



Советник Мартингейл

Прошу создать советник, каждый раз удваивающий лот после каждой сделки, закрытой по стоп лоссу для МТ4.
Принцип работы советника: как только включается авто-торговля, советник сразу открывает сделку по текущей цене на buy или sell (я это должен указать в настройках советника, что, например, все сделки открываются только на buy или на sell). После открытия сделки советник устанавливает тейк профит и стоп лосс, например, тек профит 12 пунктов, стоп лосс 10 пунктов. Я хочу самостоятельно менять тейк профит и стоп лосс в настройках советника. После автоматического закрытия сделки по стоп лоссу, сразу же, по этой текущей цене закрытия сделки, открывается новая сделка в ту же сторону, например, на sell, только объемом лота, умноженным на 2. В настройках советника мне необходимо самому устанавливать объем лота для первой сделки. Например, первая сделка открывается с объемом 1 лот, при проигрыше- умножается на 2. Если я указал в настройках советника 3 лота для первой сделки, то при проигрыше следующая сделка открывается с объемом лота, умноженного на 2, т.е. 6 лотов.Если сделка еще раз закрывается по стоп лоссу, то следующая сделка открывается с объемом лота, умноженным на 2 от предыдущего объема лота, и так бесконечно, пока не будет закрыта по тейк профиту. После закрытия по тейк профиту сразу же по этой же цене открывается новая сделка с установленным мной начальным объемом, например 1 лот. Еще в настройках нужно, что бы я мог самостоятельно менять приоритет удваивать количество лота после проигрыша или после выигрыша. В нашем примере, описанном выше, удваивается при проигрыше. Если выбираю настройку удваивать после каждого проигрыша, то удваивание происходит до тех пор, пока не получится тейк профит, или пока не закончится депозит для увеличенного лота. Если я выбираю в настройках удваивать лот после каждого выйгрыша, то максимальное количество удвоенных сделок можно было бы указать в настройках, т.е. сколько раз можно удвоить указывалось бы в настройках советника. Благодарю!
  • 0
  • Просмотров: 5661
  • 10 ноября 2015, 20:35
  • Artev
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
В базе были подобные советники. Посмотрите, найдите, если что то не устраивает в советнике, напишите что именно, я поправлю.
www.opentraders.ru/downloads/
avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 10 ноября 2015, 20:52
+
0
Добрый день! Я нашел похожий советник. Топик в столе заказов zakaz.opentraders.ru/24680.html.
avatar

  3  Artev Автор Сообщений: 19

  • 11 ноября 2015, 11:29
+
0
Вот советник, который нужно изменить www.opentraders.ru/downloads/683/.
Сейчас напишу, что нужно изменить
avatar

  3  Artev Автор Сообщений: 19

  • 11 ноября 2015, 11:31
+
0
1. Измените, пожалуйста, формулу изменения лота, чтобы после каждого тейк профита лот умножался на 2, а после стоп лосса лот возвращался к начальному значению.
2.Удалить параметр «процент прибыли, при котором прекращается увеличение лотов». Вместо него установить пункт 3.
3. Установите дополнительный параметр количества раз удваиваний лота после тейк профита, после которого лот возвращается к исходному значению лота, например лот 1, получили тейк профит, советник устанавливает лот 2, получили тейк профит, советник устанавливает лот 4, и так до, к примеру, 5 тейк профитов подряд-это количество тейк профитов можно было менять в настройках. После, к примеру 5 подряд тейк профитов, значение лота возвращается к исходному, но и также всегда возвращается каждый раз после получения стоп лосса.
4. Было бы хорошо, если возможно установить дополнительный параметр в настройках изменять приоритет удваивать лот не при тейк профите, как указано выше, а при стоп лоссе.
avatar

  3  Artev Автор Сообщений: 19

  • 11 ноября 2015, 11:58
+
0
Мне намного проще написать по ТЗ чем править чужой код. Моих в базе не было подобных?
avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 11 ноября 2015, 16:54
+
0
Вот советник по вашему ТЗ: www.opentraders.ru/downloads/930/




//+------------------------------------------------------------------+
//|                                                       Martin.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Martin expert advisor"

extern int Magic      = 20150916; //магик
extern int StopLoss   = 1200;     //лось
extern int TakeProfit = 1400;     //язь
extern int Slip       = 30;       //реквот
extern int BuySell    = 0;        //0-бай. 1-селл
extern int StopTake   = 0;        //0-мартин после стопа. 1-мартин после тейка
extern double Lots    = 0.1;      //лот
extern double MaxLot  = 5;        //макс. лот
extern double KLot    = 2;        //умножение лота
//+------------------------------------------------------------------+
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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int    res;
   double pr=0,sl=0,tp=0;

//---- buy 
   if(BuySell==0)
     {
      pr=NormalizeDouble(Ask,Digits);
      if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits); else sl=0;
      if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
      res=OrderSend(Symbol(),OP_BUY,Lot(),pr,Slip,sl,tp,"",Magic,0,Blue);
      return;
     }
//---- sell   
   if(BuySell==1)
     {
      pr=NormalizeDouble(Bid,Digits);
      if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits); else sl=0;
      if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);  else tp=0;
      res=OrderSend(Symbol(),OP_SELL,Lot(),pr,Slip,sl,tp,"",Magic,0,Red);
      return;
     }
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=0;
   if(OrdersHistoryTotal()==0)
     {
      lot=Lots;
     }
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(StopTake==0)
           {
            if(OrderProfit()>0)
              {
               lot=Lots;
              }
            if(OrderProfit()<=0)
              {
               lot=OrderLots()*KLot;
              }
           }
         if(StopTake==1)
           {
            if(OrderProfit()>0)
              {
               lot=OrderLots()*KLot;
              }
            if(OrderProfit()<=0)
              {
               lot=Lots;
              }
           }
        }
     }
   if(lot>MaxLot || lot==0)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1) OpenPos();
  }
//+------------------------------------------------------------------+


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

  34  AM2 Сообщений: 15891 - Андрей

  • 11 ноября 2015, 17:13
+
0
Советник Мартингейл не открывает позицию EUR/USD 5min. Ничего не происходит хотя на графике смайлик горит и цена движется
avatar

  1  Alexey1971 Сообщений: 2

  • 29 января 2016, 01:51
+
0
Открывает. Возможные причины: открыт еще один ордер этим советником или счет есн стп. А так нужно смотреть логи и заниматься отладкой.

avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 29 января 2016, 07:48
+
0
спасибо будем копать
avatar

  1  Alexey1971 Сообщений: 2

  • 31 января 2016, 14:09

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