Winner

 
Уровень 10

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


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

Рейтинг 2087



РЕКОМЕНДУЮ



Заказ советника TDI

Rules.rar (107 Kb)

Добрый день. Прошу создать советник чтобы протестить систему. Индикаторы, шаблон, описание во вложении.

Сигнал на вход LONG (одновременно выполняются следующие условия):
— закрытие синий свечи выше верхней границы канала
— направление канала вверх
— зеленая линия индикатора выше уровня 50, красной и желтой линий

Сигнал на закрытие LONG (выполняется одно из следующих условий):
— тело свечи в два раза меньше тела предыдущей свечи или цвет поменялся на красный
— свеча закрылась внутри канала
— зеленая линия индикатора пересекла красную сверху вниз
— зеленая линия пересекла сверху вниз верхнюю границу канала волатильности (голубая линия)

Сигнал на вход SHORT (одновременно выполняются следующие условия):
— закрытие красной свечи ниже нижней границы канала
— направление канала вниз
— зеленая линия индикатора ниже уровня 50, красной и желтой линий

Сигнал на закрытие SHORT (выполняется одно из следующих условий):
— тело свечи в два раза меньше тела предыдущей свечи или цвет поменялся на синий
— свеча закрылась внутри канала
— зеленая линия индикатора пересекла красную снизу вверх
— зеленая линия пересекла снизу вверх нижнюю границу канала волатильности (голубая линия)
  • +0
  • Просмотров: 4133
  • 15 июля 2017, 00:35
  • Winner
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
После выходных буду смотреть.
avatar

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

  • 15 июля 2017, 08:35
+
0
Сделал набросок, смотрите крутите:




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

//--- Inputs
extern double Lots         = 0.1;      // лот
extern double KLot         = 2;        // умножение лота
extern double MaxLot       = 5;        // максимальный лот
extern double StopLoss     = 500;      // лось
extern double TakeProfit   = 500;      // язь

extern int Shift           = 1;        // на каком баре сигнал индикатора
extern int Slip            = 30;       // реквот
extern int CloseSig        = 0;        // закрытие по сигналу
extern int Magic           = 123;      // магик

extern string IndName="TDI_Basic";
extern string IndName2="APB";
extern int Level=10;         // уровень индикатора

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double red=iCustom(NULL,0,IndName,5,Shift);
   double yellow=iCustom(NULL,0,IndName,2,Shift);
   double green=iCustom(NULL,0,IndName,4,Shift);

   double up=iCustom(NULL,0,IndName2,4,Shift);
   double dn=iCustom(NULL,0,IndName2,5,Shift);

//--- sell 
   if(green<50 && green<red && green<yellow && Close[1]<dn)
     {
      PutOrder(1,Bid);
     }
//--- buy conditions
   if(green>50 && green>red && green>yellow && Close[1]>up)
     {
      PutOrder(0,Ask);
     }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void ClosePos()
  {
   double red=iCustom(NULL,0,IndName,5,Shift);
   double yellow=iCustom(NULL,0,IndName,2,Shift);
   double green=iCustom(NULL,0,IndName,4,Shift);

   double up=iCustom(NULL,0,IndName2,4,Shift);
   double dn=iCustom(NULL,0,IndName2,5,Shift);

   if(Close[1]<up && green<red)
     {
      CloseAll(0);
     }

   if(Close[1]>dn && green>red)
     {
      CloseAll(1);
     }
//---
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderProfit()<0)
              {
               lot=OrderLots()*KLot;
              }
            break;
           }
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(t!=Time[0])
     {
      if(CountTrades()<1) OpenPos();
      if(CloseSig>0) ClosePos();
      t=Time[0];
     }

   Comment("");
//---
  }
//+------------------------------------------------------------------+


Редактирован: 15 июля 2017, 14:19
avatar

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

  • 15 июля 2017, 13:47
+
0
Андрей, спасибо. Но, на первый взгляд, единственное правило, по которому торгует этот советник: заходим в лонг, если свеча закрылась выше верхней границы канала и в шорт, если свеча закрылась ниже нижней границы канала. Остальные условия на вход и выход не работают. Почему-то появились SL/TP и мартингейл, которых нет в условиях системы. Решил пошагово проверить июнь и сразу стало ясно, что что-то не то… По возможности, поправьте, пожалуйста.

avatar

  10  Winner Автор Сообщений: 55

  • 16 июля 2017, 23:35
+
0
Покажите все входы выходы на скринах?
avatar

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

  • 17 июля 2017, 18:08
+
0
Андрей, добрый день.
Входы в Бай и Селл

Ниже/выше значения 50 должна быть только зеленая линия для входа. Остальные могут иметь любые значения, главное чтобы выстроились правильно.

Выходы из позиций


Стопы и Тейки не устанавливаем. Выходим из позиций по правилам. После закрытия часа проверяем выполнение хотя бы одного условия на выход, и если что-то выполняется — выходим по цене открытия следующего часа.

Из сетапов советника прошу предусмотреть возможность только
— менять размер лота
— вкл/выкл Мартингейл (прошу оставить, хоть в правилах его и не было)
— задавать время и день недели работы советника
avatar

  10  Winner Автор Сообщений: 55

  • 17 июля 2017, 23:49
+
0
По три условия на открытие и закрытие прописал: www.opentraders.ru/downloads/1637/




//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double red=iCustom(NULL,0,IndName,5,Shift);
   double yellow=iCustom(NULL,0,IndName,2,Shift);
   double green=iCustom(NULL,0,IndName,4,Shift);
   double green2=iCustom(NULL,0,IndName,4,Shift+1);
   double hi=iCustom(NULL,0,IndName,1,Shift);
   double lo=iCustom(NULL,0,IndName,3,Shift);

   double up=iCustom(NULL,0,IndName2,4,Shift);
   double dn=iCustom(NULL,0,IndName2,5,Shift);

//--- sell 
   if(green<50                     // зеленая ниже 50
      && green<red && green<yellow // зеленая ниже красной и желтой
      && Close[1]<dn)              // закрылись ниже границы канала
     {
      PutOrder(1,Bid);
     }
//--- buy conditions
   if(green>50                     // зеленая выше 50
      && green>red && green>yellow // зеленая выше красной и желтой
      && Close[1]>up)              // закрылись выше границы канала
     {
      PutOrder(0,Ask);
     }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void ClosePos()
  {
   double red=iCustom(NULL,0,IndName,5,Shift);
   double yellow=iCustom(NULL,0,IndName,2,Shift);
   double green=iCustom(NULL,0,IndName,4,Shift);
   double green2=iCustom(NULL,0,IndName,4,Shift+1);
   double hi=iCustom(NULL,0,IndName,1,Shift);
   double lo=iCustom(NULL,0,IndName,3,Shift);

   double up=iCustom(NULL,0,IndName2,4,Shift);
   double dn=iCustom(NULL,0,IndName2,5,Shift);

   if(Close[1]<up                // свеча закрылась внутри канала
      || (green<hi && green2>hi) // зеленая линия пересекла сверху вниз верхнюю границу канала волатильности 
      || green<red)              // зеленая линия индикатора пересекла красную сверху вниз
     {
      CloseAll(0);
     }

   if(Close[1]>dn                 // свеча закрылась внутри канала
      || (green>lo && green2<lo)  // зеленая линия пересекла снизу вверх нижнюю границу канала волатильности
      || green>red)               //зеленая линия индикатора пересекла красную сверху вниз
     {
      CloseAll(1);
     }
//---
  }
avatar

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

  • 18 июля 2017, 19:40
+
0
Андрей, большое спасибо! На открытие позы не хватает условия по наклону желтой линии индикатора. На закрытие позы не хватает условий по хай/лоу и смены цвета свечи. Но понимаю, что и так отнял у Вас много времени. Еще раз спасибо.
avatar

  10  Winner Автор Сообщений: 55

  • 18 июля 2017, 21:30
+
0
Наклон на открытии автоматом будет куда надо а 2 условия по закрытию в следующем топике.
avatar

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

  • 18 июля 2017, 21:34
+
0
Автоматом не получается, проверял. Открывает позиции без учета наклона желтой линии. А это критично, так как входим только по тренду. Попробую сам докрутить. Если мозгов не хватит, то обращусь еще раз. Спасибо!
avatar

  10  Winner Автор Сообщений: 55

  • 18 июля 2017, 22:24

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