berezatara
Дима

 
Уровень 9

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

  Моя торговля


График торгового счета berezatara


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

Рейтинг 2073



РЕКОМЕНДУЮ



Сделать робота на основе стандартного индикатора ADX

Добрый день. Все очень просто.
1. Нужен советник, мултивалютный, работающий с 4 и 5-ю знаками.
2. Использует стандартный шаблон ADX (Графики=>Шаблон=>ADX), который включает в себя индикаторы.



3. Вариант срабатывания, при любых пересечениях D+ D-. Сработала сделка в минус открывается лот умноженный на множитель (от 0.1 и ......), если сработала сделка в плюс открывается при пересечении сделка с тем же лотом.
  • +3
  • Просмотров: 4788
  • 11 февраля 2016, 22:19
  • berezatara
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Где то у меня был шаблон мультивалютника на 9 пар, но это в следующем месяце.
avatar

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

  • 11 февраля 2016, 22:38
+
0
ок спс. Получится раньше буду РАД.
avatar

  9  berezatara Автор Сообщений: 28 - Дима

  • 11 февраля 2016, 22:58
+
0
Посмотрите: www.opentraders.ru/downloads/1047/




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

extern  string s="Выбор валютной пары";

extern  string Symbol1 = "EURUSD";
extern  string Symbol2 = "GBPUSD";
extern  string Symbol3 = "";
extern  string Symbol4 = "";
extern  string Symbol5 = "";
extern  string Symbol6 = "";
extern  string Symbol7 = "";
extern  string Symbol8 = "";
extern  string Symbol9 = "";

extern  string ss="Настройки советника";

extern double Lots       = 0.01;      // лот
extern double MaxLot     = 5;         // максимальный торговый объем
extern double KLot       = 2;         // увеличение лота
extern int TakeProfit    = 3333;      // Тейк
extern int StopLoss      = 3333;      // Лосс
extern int Slip          = 30;        // Проскальзывание 
extern int Magic         = 123;       // Магик
extern int TimeFrame     = 1;         // Период графика

extern  string sss="Настройки индикатора ADX";

//--- input ADX parameters
extern int ADXPeriod=14;        // ADX
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Symbol1!="")TradeOnSymbol(Symbol1,Magic);
   if(Symbol2!="")TradeOnSymbol(Symbol2,Magic);
   if(Symbol3!="")TradeOnSymbol(Symbol3,Magic);
   if(Symbol4!="")TradeOnSymbol(Symbol4,Magic);
   if(Symbol5!="")TradeOnSymbol(Symbol5,Magic);
   if(Symbol6!="")TradeOnSymbol(Symbol6,Magic);
   if(Symbol7!="")TradeOnSymbol(Symbol7,Magic);
   if(Symbol8!="")TradeOnSymbol(Symbol8,Magic);
   if(Symbol9!="")TradeOnSymbol(Symbol9,Magic);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void TradeOnSymbol(string symb,int magic)
  {
   int ticket,total;
   double bid=0,ask=0,point=0,digits=0;

   double padx1=iADX(symb,TimeFrame,ADXPeriod,0,MODE_PLUSDI,1);
   double padx2=iADX(symb,TimeFrame,ADXPeriod,0,MODE_PLUSDI,2);
   double madx1=iADX(symb,TimeFrame,ADXPeriod,0,MODE_MINUSDI,1);
   double madx2=iADX(symb,TimeFrame,ADXPeriod,0,MODE_MINUSDI,2);

   total=SymbolOrdersTotal(symb,-1,Magic);
   if(CountTrades(symb,Magic)<1)
     {
      bid   = MarketInfo(symb,MODE_BID);
      ask   = MarketInfo(symb,MODE_ASK);
      point = MarketInfo(symb,MODE_POINT);
      digits= MarketInfo(symb,MODE_DIGITS);

/**/
      if(padx2>madx2 && padx1<madx1)
        {
         ticket=OrderSend(symb,OP_BUY,Lot(symb,Magic),ask,Slip,ask-StopLoss*point,ask+TakeProfit*point,"",Magic,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()," as ",symb);
           }
         else Print("Error opening BUY order : ",GetLastError()," as ",symb);
         return;
        }
      // check for short position (SELL) possibility
      if(padx2<madx2 && padx1>madx1)
        {
         ticket=OrderSend(symb,OP_SELL,Lot(symb,Magic),bid,Slip,bid+StopLoss*point,bid-TakeProfit*point,"",Magic,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError());
         return;
        }
     }

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(string symb,int magic)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==symb && OrderMagicNumber()==magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot(string symb,int magic)
  {
   double lot=Lots;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==symb && OrderMagicNumber()==magic)
        {
         if(OrderProfit()<0)
           {
            lot=OrderLots()*KLot;
           }
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Закрывает ордера по указанному символу с указанным магиком       |
//+------------------------------------------------------------------+
void CloseAll(string symb,int magic)
  {
   bool cl,sel;
   for(int i=0; i<OrdersTotal(); i++)
     {
      sel=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==symb && OrderMagicNumber()==magic)
        {
         if(OrderType()==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
         if(OrderType()==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
        }
      Sleep(1000);
     }
  }
//+------------------------------------------------------------------+
//| Подсчитывает количество открытых ордеров согласно условиям       |
//+------------------------------------------------------------------+
int SymbolOrdersTotal(string symb="",int type=-1,int magic=-1)
  {
   int count=0;
   if(symb=="0"){symb=Symbol();}
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==symb || symb=="")
           {
            if(OrderType()==type || type==(-1))
              {
               if(OrderMagicNumber()==magic || magic==(-1))
                 {
                  count++;
                 }
              }
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+

avatar

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

  • 12 февраля 2016, 11:29
+
0
Работает, но с одним но. Он закрывает по стоплосу или по тейкпрофиту. А мне нужно, чтобы при пересечении зеленая идет на верх, а красная вниз закрываться должен предыдущий ордер и открываться новый на бай. Т.е. при пересечении линий, когда сверху находится зеленая открывается бай, а красная сел и так пусть чередуются.
Редактирован: 12 февраля 2016, 23:13
avatar

  9  berezatara Автор Сообщений: 28 - Дима

  • 12 февраля 2016, 23:12
+
+1
Переписал все по своему: www.opentraders.ru/downloads/1047/

avatar

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

  • 14 февраля 2016, 11:58

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