sergs
Сергей

 
Уровень 5


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

Рейтинг 1445



РЕКОМЕНДУЮ




Лучшее от sergs



Советник на одной МА Комментариев 10
2019-11-01 06:43:29Рейтинг 0

Канальный советник. Часть IV

Здравствуйте. Прошу написать советник ценового канала по новому индикатору, если это не очень сложно.

Правила торговли

Покупка

1.Свеча закрылась ниже нижней границы канала.
2.Цена коснулась нижней границы канала, двигаясь снизу вверх. В этот
момент открывается ордер на покупку при условии, что средняя
линия индикатора направлена вверх.
3.Цена коснулась верхней границы канала. В этот момент ордер
закрывается.

Продажа

1.Свеча закрылась выше верхней границы канала.
2.Цена коснулась верхней границы канала, двигаясь сверху вниз. В этот
момент открывается ордер на продажу при условии, что средняя
линия индикатора направлена вниз.
3.Цена коснулась нижней границы канала. В этот момент ордер
закрывается.

На одном графике может быть одновременно открыта одна позиция.

Настройки: SL и TP.





TMA with Distances.zip (13 Kb)
  • 0
  • Просмотров: 1417
  • 17 октября 2019, 10:08
  • sergs
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Отлично! Сам давно хотел попросить создать подобный советник!
Сейчас торгую подобным методом вручную на М5. Пока успешно.
avatar

  3  stargazer2011 Сообщений: 14

  • 17 октября 2019, 10:12
+
0
Не собираюсь торговать руками. Думаю торговать советником на М1. Однако не уверен, что Андрей сможет его написать.
avatar

  5  sergs Автор Сообщений: 43 - Сергей

  • 17 октября 2019, 10:17
+
0
Вот и мне руками не так сподручно. Кроме того использую вход на пике, а в качестве подтверждения беру индикатор Киосото ( один с уровнем 15, другой с динамическим уровнем 92). На скрине показано
avatar

  3  stargazer2011 Сообщений: 14

  • 17 октября 2019, 10:24
+
0
Не силен в тех. анализе. Просто тупо копирую сделки с ZuluTrade.
avatar

  5  sergs Автор Сообщений: 43 - Сергей

  • 17 октября 2019, 10:34
+
0
Можете сказать: на каких парах получается прибыль?
avatar

  6  Boris54 Сообщений: 162 - Стю-дент

  • 18 октября 2019, 18:38
+
0
Вот похожий советник: zakaz.opentraders.ru/52028.html
Мартин поставь 1, шаг — огромный, то же и получится, даже точнее из-за МАКД.
Единственно не реализовано закрытие по достижении средней\дальней линий ТМА. Но это можно попросить доделать Андрея. Но первая доделка будет — поправка логики входов и усреднения, закажу, как месяц пройдёт с момента написания сова.
avatar

  3  andre71g Сообщений: 35 - andre71g

  • 17 октября 2019, 11:15
+
0
Спасибо! Посмотрю.
avatar

  3  stargazer2011 Сообщений: 14

  • 17 октября 2019, 11:59
+
0
Индюк нормальный www.opentraders.ru/downloads/439/
avatar

  2  Slava78 Сообщений: 36

  • 17 октября 2019, 16:29
+
0
делать?
avatar

  29  AM2 Сообщений: 9941 - Андрей

  • 17 октября 2019, 17:27
+
0
Да
avatar

  5  sergs Автор Сообщений: 43 - Сергей

  • 17 октября 2019, 17:29
+
0
на 23-е
avatar

  29  AM2 Сообщений: 9941 - Андрей

  • 17 октября 2019, 19:30
+
+1
avatar

  29  AM2 Сообщений: 9941 - Андрей

  • 18 октября 2019, 23:22
+
0
Расшифруйте пожалуйста пункт.
«На каком баре сигнал индикатора». Сигнал на вход при касании ценой границы канала.
С какими настройками вы тестировали советник? На вашем скрине сделки открываются и закрываются где-попало. Советник торгует не учитывая направление средней линии индикатора.
avatar

  5  sergs Автор Сообщений: 43 - Сергей

  • 19 октября 2019, 11:11
+
0
Ничего что тесты на Н1?
avatar

  2  Slava78 Сообщений: 36

  • 19 октября 2019, 11:26
+
0
Какая разница?
avatar

  5  sergs Автор Сообщений: 43 - Сергей

  • 19 октября 2019, 11:37
+
0
Расшифруйте пожалуйста пункт.
«На каком баре сигнал индикатора»


сигнал можно брать с баров 0-1000…

С какими настройками вы тестировали советник? На вашем скрине сделки открываются и закрываются где-попало.


индикатор перерисовывается на истории.

Советник торгует не учитывая направление средней линии
индикатора


с учетом средней линии сигнал крайне редкий, поэтому в советнике вход без учета средней линии.

вот вход с учетом направления средней линии:



   double up = iCustom(NULL,0,IndName,TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,Shift);
   double dn = iCustom(NULL,0,IndName,TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,Shift);

   double s1 = iCustom(NULL,0,IndName,TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,0,Shift);
   double s2 = iCustom(NULL,0,IndName,TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,0,Shift+1);


   if(CloseSig>0)
     {
      if(Bid>up)
        {
         CloseAll(0);
        }

      if(Bid<dn)
        {
         CloseAll(1);
        }
     }

   if(CountTrades()<1)
     {
      if(Open[0]<dn && Ask>dn && s1>s2)
        {
         PutOrder(0,Ask);
        }
      if(Open[0]>up && Bid<up && s1<s2)
        {
         PutOrder(1,Bid);
        }
     }


С какими настройками вы тестировали советник?


настройки по умолчанию:


extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;
avatar

  29  AM2 Сообщений: 9941 - Андрей

  • 19 октября 2019, 12:33
+
0
Без учета средней линии советник сливает. Сделайте с учетом. Если торговать на одной паре, то сделок мало. Если на 30-и, то совсем не мало. И еще сделайте индикатор видимым.
avatar

  5  sergs Автор Сообщений: 43 - Сергей

  • 19 октября 2019, 12:45
+
0
теперь со средней линией: www.opentraders.ru/downloads/2456/

чтобы видеть индикатор во время теста, бросайте его на график. по другому никак.
avatar

  29  AM2 Сообщений: 9941 - Андрей

  • 19 октября 2019, 12:51
+
0
Каким должно быть значение «На каком баре сигнал индикатора», чтобы советник торговал, как в ТЗ?
avatar

  5  sergs Автор Сообщений: 43 - Сергей

  • 19 октября 2019, 13:20
+
0
по умолчанию
avatar

  29  AM2 Сообщений: 9941 - Андрей

  • 19 октября 2019, 13:21
+
0
Максимальный торговый объем, это сумма всех открытых ордеров?
avatar

  5  sergs Автор Сообщений: 43 - Сергей

  • 19 октября 2019, 13:42
+
0
Андрей выложи пожалуйста код без средней линии, пробовал ее сам убрать но сов перестал работать, что бы он просто от нижней границы покупал, от верхней продавал до сигнала противоположной.
avatar

  4  Sasha8989 Сообщений: 23

  • 26 октября 2019, 00:34
+
0
Без средней линии:

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

//--- Inputs
extern double Lots       = 0.1;      // торговый объем ордера
extern double MaxLot     = 5;        // максимальный торговый объем
extern double KLot       = 2;        // увеличение лота
extern int StopLoss      = 500;      // лось
extern int TakeProfit    = 1000;     // язь
extern int Slip          = 30;       // реквот
extern int Shift         = 0;        // на каком баре сигнал индикатора
extern int CloseSig      = 0;        // 1-закрытие по сигналу
extern int Magic         = 123;      // магик

extern string IndName="TMA with Distances";

extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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)
               break;
            if(OrderProfit()<0)
              {
               lot=OrderLots()*KLot;
               break;
              }
           }
        }
     }
   if(lot>MaxLot)
      lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up = iCustom(NULL,0,IndName,TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,Shift);
   double dn = iCustom(NULL,0,IndName,TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,Shift);

   if(CloseSig>0)
     {
      if(Bid>up)
        {
         CloseAll(0);
        }

      if(Bid<dn)
        {
         CloseAll(1);
        }
     }

   if(CountTrades()<1)
     {
      if(Open[0]<dn && Ask>dn)
        {
         PutOrder(0,Ask);
        }
      if(Open[0]>up && Bid<up)
        {
         PutOrder(1,Bid);
        }
     }
  }
//+------------------------------------------------------------------+
avatar

  5  sergs Автор Сообщений: 43 - Сергей

  • 26 октября 2019, 10:05
+
0
спасибо)
avatar

  4  Sasha8989 Сообщений: 23

  • 26 октября 2019, 10:58
+
0
а вот вопрос, он только ордера на покупку открывает, это норм? ни одну на продажу не открыл
avatar

  4  Sasha8989 Сообщений: 23

  • 26 октября 2019, 11:26
+
0
не знаю, у меня в обе стороны. не мучайся, стратегия все равно убыточная

avatar

  5  sergs Автор Сообщений: 43 - Сергей

  • 26 октября 2019, 16:02

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