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

Рейтинг 2089



РЕКОМЕНДУЮ




Лучшее от Deimos



Прикрутить алерт MT4 Комментариев 20
2015-10-01 09:19:06Рейтинг 0

TralMov Комментариев 16
2015-11-02 17:42:04Рейтинг 0

Создать индикатор Комментариев 6
2016-01-14 23:19:46Рейтинг 0

Индикатор.Отрисовка импульса Комментариев 20
2016-03-09 10:16:30Рейтинг 0

Прикрутить алерт Комментариев 5
2016-11-30 11:25:10Рейтинг 0

TralMov

Добрый день!

Прошу сделать робота на 2 мувингах
Вход:
1.Пересечение двух мувингов… ставится сделка.
2.Расстояние между мувингами после пересечения, выставляется в настройках кол-во пунктов.только тогда происходит сделка.Пример: расстояние между мувингами после пересечения 5п.открывается позиция.Позиция открывается только по открытию новой свечи.
3.Отключаемая и вкл.функция через определенное кол-во пунктов доливка по тренду.Пример: Открылась позиция… в настройках поставленно через 50п открыть ту же позицию скажем на 0.1 лота.и к ней же отдельно уже идет тралинг.каждая позиция тралица по заданному тралу в пунктах.
4.трал стоп от каждой открытой позиции отдельно
5.закрытие позиций по тралу или на обратном пересечении.сделать отключаемое.Пример: есть позиции… они либо закрылись по тралу это функция вкл выкл или по стопу вкл выкл.или пересечение мувингов вкл выкл.то есть можно выставить все вместе либо по отдельности.
6.и сделать функцию вкл выкл 1 пересечение..1 сделка.т.е.либо закрытие по профиту либо по стопу.и ждем след пересечения.
  • +1
  • Просмотров: 4201
  • 2 ноября 2015, 17:42
  • Deimos
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
+1
Начну сейчас делать.
avatar

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

  • 2 ноября 2015, 18:02
+
0
*neo* 
avatar

  11  Deimos Автор Сообщений: 94

  • 2 ноября 2015, 18:48
+
+1
Сделал вариант без доливок:


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

extern int Magic        = 20150914;
extern int StopLoss     = 1200;
extern int TakeProfit   = 1400;
extern int Delta        = 400;
extern int TrailingStop = 0;
extern int Slip         = 50;
extern int MA1Period    = 9;
extern int MA2Period    = 22;
extern double Lots      = 0.1;

int CrossUP=0,CrossDN=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() || OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(TrailingStop>0)
                 {
                  if(Bid-OrderOpenPrice()>TrailingStop*Point)
                    {
                     if(OrderStopLoss()<Bid-TrailingStop*Point)
                       {
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        return;
                       }
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(TrailingStop>0)
                 {
                  if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                    {
                     if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                       {
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        return;
                       }
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int    res;
   double sl=0,tp=0;
//---- get Indicatorrs 
   double ma11=iMA(NULL,0,MA1Period,0,0,0,1);
   double ma21=iMA(NULL,0,MA2Period,0,0,0,1);
   double delta = MathAbs((ma11-ma21)/Point);

//---- buy 
   if(CrossUP>0 && delta>Delta)
     {
      if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
      res=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
      return;
     }
//---- sell   
   if(CrossDN>0 && delta>Delta)
     {
      if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
      res=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
      return;
     }
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void ClosePos()
  {
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderMagicNumber()==Magic || OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY)
              {
               if(CrossDN>0)
                 {
                  bool c=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White);
                  return;
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(CrossUP>0)
                 {
                  c=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,White);
                  return;
                 }
              }
           }
        }
     }
  }  
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
//---- get Indicatorrs 
   double ma11=iMA(NULL,0,MA1Period,0,0,0,1);
   double ma21=iMA(NULL,0,MA2Period,0,0,0,1);
   double ma12=iMA(NULL,0,MA1Period,0,0,0,2);
   double ma22=iMA(NULL,0,MA2Period,0,0,0,2);
   double delta = MathAbs((ma11-ma21)/Point);
   
   if(ma11>ma21 && ma12<ma22 && CrossUP<1) {CrossUP++; CrossDN=0;}
   if(ma11<ma21 && ma12>ma22 && CrossDN<1) {CrossDN++; CrossUP=0;}  
    
   if(CountTrades()<1) OpenPos();
   else ClosePos();

   if(TrailingStop!=0) Trailing();
   Comment("\n CrossUP: ",CrossUP,
           "\n CrossDN: ",CrossDN,
           "\n Delta: ",delta);
//----
  }
//+------------------------------------------------------------------+

avatar

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

  • 3 ноября 2015, 00:52
+
+2
Набросок с доливками:



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

extern int Magic        = 20150914;
extern int StopLoss     = 1200;
extern int TakeProfit   = 1400;
extern int Delta        = 400;
extern int PipStep      = 100;
extern int TrailingStop = 0;
extern int Slip         = 50;
extern int MA1Period    = 9;
extern int MA2Period    = 22;
extern double Lots      = 0.1;

int CrossUP=0,CrossDN=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int FindOrderType()
  {
   int oticket,ticketNumber=0,type=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            oticket=OrderTicket();
            if(oticket>ticketNumber)
              {
               ticketNumber=oticket;
               type=OrderType();
              }
           }
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double FindLastBuyPrice()
  {
   int oticket,ticketNumber=0;
   double oprice=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            oticket=OrderTicket();
            if(oticket>ticketNumber)
              {
               ticketNumber=oticket;
               oprice=OrderOpenPrice();
              }
           }
        }
     }
   return(oprice);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double FindLastSellPrice()
  {
   int oticket,ticketNumber=0;
   double oprice=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            oticket=OrderTicket();
            if(oticket>ticketNumber)
              {
               ticketNumber=oticket;
               oprice=OrderOpenPrice();
              }
           }
        }
     }
   return(oprice);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() || OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(TrailingStop>0)
                 {
                  if(Bid-OrderOpenPrice()>TrailingStop*Point)
                    {
                     if(OrderStopLoss()<Bid-TrailingStop*Point)
                       {
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        return;
                       }
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(TrailingStop>0)
                 {
                  if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                    {
                     if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                       {
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        return;
                       }
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int    res;
   double sl=0,tp=0;
//---- get Indicatorrs 
   double ma11=iMA(NULL,0,MA1Period,0,0,0,1);
   double ma21=iMA(NULL,0,MA2Period,0,0,0,1);
   double delta=MathAbs((ma11-ma21)/Point);

//---- buy 
   if(CrossUP>0 && delta>Delta)
     {
      if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
      res=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
      return;
     }
//---- sell   
   if(CrossDN>0 && delta>Delta)
     {
      if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
      res=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
      return;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderMagicNumber()==Magic || OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
            if(OrderType()==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
            return;
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void ClosePos()
  {
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderMagicNumber()==Magic || OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY)
              {
               if(CrossDN>0)
                 {
                  CloseAll();                  
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(CrossUP>0)
                 {
                  CloseAll();                  
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   int ticket=0;
   double price=0;
//---- get Indicatorrs 
   double ma11=iMA(NULL,0,MA1Period,0,0,0,1);
   double ma21=iMA(NULL,0,MA2Period,0,0,0,1);
   double ma12=iMA(NULL,0,MA1Period,0,0,0,2);
   double ma22=iMA(NULL,0,MA2Period,0,0,0,2);
   double delta=MathAbs((ma11-ma21)/Point);

   if(ma11>ma21 && ma12<ma22 && CrossUP<1) {CrossUP++; CrossDN=0;}
   if(ma11<ma21 && ma12>ma22 && CrossDN<1) {CrossDN++; CrossUP=0;}

   if(CountTrades()<1) OpenPos();
   else ClosePos();

   if(CountTrades()>0)
     {
      int otype=FindOrderType();

      if(otype==OP_BUY)
        {
         price=FindLastBuyPrice();
         if((Ask-price)/Point>=PipStep)
           {
            ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,"Buy Order",Magic,0,Blue);
           }
        }

      else if(otype==OP_SELL)
        {
         price=FindLastSellPrice();
         if((price-Bid)/Point>=PipStep)
           {
            ticket=OrderSend(Symbol(),OP_SELL,Lots,Ask,Slip,0,0,"Sell Order",Magic,0,Red);
           }
        }
     }

   if(TrailingStop!=0) Trailing();
   Comment("\n CrossUP: ",CrossUP,
           "\n CrossDN: ",CrossDN,
           "\n Delta: ",delta);
//----
  }
//+------------------------------------------------------------------+


Редактирован: 3 ноября 2015, 01:20
avatar

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

  • 3 ноября 2015, 01:19
+
0
пока даже не знаю что сказать)) надо комплект увидеть что получится.
avatar

  11  Deimos Автор Сообщений: 94

  • 3 ноября 2015, 09:40
+
0
Вы смотрите на этом этапе и пишите что добавить или поправить.
avatar

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

  • 3 ноября 2015, 11:32
+
0
на этом этапе добавить чтобы трал был к каждой сделке отдельно.если это возможно.и еще если можно добавить функцию… скажем робот заработал грубо 10$.и можно выставлять какую сумму.то больше не торгует в этот день)
avatar

  11  Deimos Автор Сообщений: 94

  • 3 ноября 2015, 11:47
+
0
Трал есть, а остановка по профиту усложняет и без того непростой советник.
avatar

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

  • 3 ноября 2015, 12:02
+
0
можно так сделать чтобы на каждую сделку был тейк… стоп трал? а не на все сделки вместе 1 трал?
avatar

  11  Deimos Автор Сообщений: 94

  • 3 ноября 2015, 12:11
+
0
можно так сделать чтобы на каждую сделку был тейк… стоп трал? а не на все сделки вместе 1 трал?


Вы хотя бы смотрели работу советника в тестере? Если бы смотрели, не задавали бы таких вопросов *think* 
avatar

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

  • 3 ноября 2015, 12:17
+
0
смотрел.показалось что 1 трал.*ninja* 
avatar

  11  Deimos Автор Сообщений: 94

  • 3 ноября 2015, 12:25
+
0
Добавил стопы на все ордера, закрытие по профиту с включением отключением запрета торговли на сегодня: www.opentraders.ru/downloads/916/
Редактирован: 3 ноября 2015, 13:08
avatar

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

  • 3 ноября 2015, 12:42
+
0
все супер… можно еще последнее сделать.пересечение, одна сделка — с функцией true/false.допустим я хочу чтобы он сделал только 1 сделку по пересечению… выставил к нему тейк… стоп и тралил.и не хочу доливок и тд.за это и будет отвечать тру фолс.
avatar

  11  Deimos Автор Сообщений: 94

  • 3 ноября 2015, 14:08
+
0
Добавил отключение доливок: www.opentraders.ru/downloads/916/


extern int Dolivka = 1; // 1-есть доливки 0-нет

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

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

  • 3 ноября 2015, 17:43
+
0
спасибо.гуд джоб *drinks* 
avatar

  11  Deimos Автор Сообщений: 94

  • 3 ноября 2015, 17:59
+
0
что то вроде пока по тейка не ударит… то ждет.в этом еще смысл тру фолс
avatar

  11  Deimos Автор Сообщений: 94

  • 3 ноября 2015, 14:29

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