Стратегия High Low. CTrade.BuyStop. CTrade.SellStop. - страница 5

 
Vasiliy Sokolov:

Неработающей ТС делать фильтры это как мертвому припарки.

То что представлено - не торговая система, а метод входа в рынок, я же предлагаю сориентировать советник в пространстве - именно это делают фильтры, и в зависимости от места нахождения в пространстве - покупать или продавать.
 
Сергей Криушин:
Можно бы сделать сов с ордерами чисто BUY_STOP и BUY_LIMIT и параллельный в другую сторону и выставлять отложки подальше - хотя бы на величину этого же бара... или по более надежному патерну, чтобы отсечь случайное срабатывание...
Почему дискриминируете шорты?
 
-Aleks-:
То что представлено - не торговая система, а метод входа в рынок, я же предлагаю сориентировать советник в пространстве - именно это делают фильтры, и в зависимости от места нахождения в пространстве - покупать или продавать.
Удачи.
 
Vasiliy Sokolov:
Удачи.
Спасибо. Я торгую на пробой в полуручном режиме, и результаты интересные бывают...
 
Alexander Antoshkin:

Нам торопится некуда  , 

Чем яйца дольше варятся тем они круче 

 покажите как Вы модуль пишите?

А что, делать, так делать. Это будет модуль сигналов пользовательского индикатора и он будет давать один сигнал - "Новый бар". Показывать создание модуля сигналов пользовательского индикатора?
 

Тема правильная! Развивайте дальше.

Но нужны следующие фильтры (чтоб включать их или выключать):

1) не открывать (не выставлять ордера) если бары очень маленькие -- в моменте появился первый тик нового бара, а предыдущий бар:

   меньше определенного размера1,

   и\или:

   меньше размера равного: спред * некий коэффициент1

2) для будущего ордера должно выполняется условие что:

значение в пунктах SL (он же переворот на первом баре если цена пошла не туда)  должно быть ограниченным:

   значение2 < SL <  значение3

   И\или:

    (спред * некий коэффициент2) < SL <  (спред * некий коэффициент3)

Жирным выделены параметры переменных, которые также и являются входными данными.

 
fmql:

Тема правильная! Развивайте дальше.


Мое мнение  изночально нужно просто сориентировать советник для входа , в что играем в пробой или отбой
но для этого надо выяснить что будет предопределять пробой , что отбой
 
Что уже всё??? :-)
 
Roman Shiredchenko:
Что уже всё??? :-)
На днях оптимизируем без шума и пили   и будет все ок
 
Alexander Antoshkin:

...

 покажите как Вы модуль пишите?

Модуль сигналов пользовательского индикатора будет на основе индикатора "IndNewBar.mq5":

//+------------------------------------------------------------------+
//|                                                    IndNewBar.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.001"
#property description "EN:"
#property description "RU: При возникновении нового бара в индикаторный буфер пишется \"1\""
#property description "RU: Если бар не новый, то в индикаторный будер пишется \"0\""
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- indicator buffer
double         NewBarBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,NewBarBuffer,INDICATOR_DATA);
//PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   ArraySetAsSeries(NewBarBuffer,true);
//--- name for DataWindow and indicator subwindow label 
   IndicatorSetString(INDICATOR_SHORTNAME,"New Bar");
//--- construct a short indicator name based on input parameters 
   IndicatorSetInteger(INDICATOR_DIGITS,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ArraySetAsSeries(time,true);
   static datetime prev_time=0;
//---
   if(prev_calculated==0)
     {
      for(int i=0;i<rates_total;i++)
         NewBarBuffer[i]=0;
     }
   if(prev_time<time[0]) // новый бар
     {
      NewBarBuffer[0]=1.0;
      //Print("New bar, ",time[0]);
     }
   else
      NewBarBuffer[0]=0.0;
//---
   prev_time=time[0];
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Индикатор очень простой, хотя и есть сомнение: в момент рождения нового бара в индикаторный буфер пишется "1", на следующем тике, этот бар будет расценён уже как не новый и поэтому в индикаторный буфер будет записан "0". И в связи с этим вопрос: а успеет ли советник увидеть "1" в буфере?

 

Пошаговое руководство написания модуля торговых сигналов описана в статье Создай торгового робота за 6 шагов! 

Файлы:
IndNewBar.mq5  6 kb