[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 143

 
BooGUY:

На фрактале! Я попробовал со стоп-лоссом - сливает, вот хотел бы попробовать со стопами по фракталам, но не знаю, как это в условии написать. Или вообще, как это написать в советнике, условие на вход написал, что-то типа такое:

if(iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)&&

iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)&&

iOpen(NULL,PERIOD_M15,1)<iClose(NULL,PERIOD_M15,1)&&

iOpen(NULL,PERIOD_M5,1)<iClose(NULL,PERIOD_M5,1)

{...???

}


по вашему коду я сомневаюсь что разговор про фрактал. какие то цены открытия и закрытия на 4 периодах.
 
BooGUY:

На фрактале! Я попробовал со стоп-лоссом - сливает, вот хотел бы попробовать со стопами по фракталам, но не знаю, как это в условии написать. Или вообще, как это написать в советнике, условие на вход написал, что-то типа такое:

if(iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)&&

iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)&&

iOpen(NULL,PERIOD_M15,1)<iClose(NULL,PERIOD_M15,1)&&

iOpen(NULL,PERIOD_M5,1)<iClose(NULL,PERIOD_M5,1)

{...???

}

Вам, для тестирования стратегии проще найти функцию трейлинг-стопа по фракталам и подключить её в советник. Ну, либо самому написать.

Функция будет двигать стоп каждой открытой позиции на нужный, заданный в настройках фрактал. А далее, по итогам тестов, можно уже думать о целесообразности использования либо этого трала, либо о закрытии позиций по рынку при достижении ценой уровня фрактала. И то и то сделать - плёвое дело.

Стандартная функция iFractals() вам в помощь. Возвращает цену, на которой найден фрактал, указанный в параметрах функции.

 

помогите пожалуйста, у меня индикатор измеряет максимальное минутное движение за текущий час на часовом таймфрейме, первые 6 часов(баров) он измеряет все адекватно, а затем начинает какие-то левые значения придумывать, ниже сам код и индикатор, подскажите где я ошибся, хоть мне и не важны значения дальше 3 бара, но боюсь что ошибки могут возникнуть и на первом баре

#property indicator_separate_window
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет первой линии
#property indicator_minimum 0
#property indicator_maximum 25
double Buf_0[];             // Объявление массивов (под буферы индикатора)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
SetIndexBuffer(0,Buf_0);         // Назначение массива буферу   
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
int i;                           // Индекс бара       
int Counted_bars;                // Количество просчитанных баров
int m;
int MaxSpeed;
int Speed; 
//--------------------------------------------------------------------   
Counted_bars=IndicatorCounted(); // Количество просчитанных баров    
i=Bars-Counted_bars-1;           // Индекс первого непосчитанного   
while(i>=0)                      // Цикл по непосчитанным барам     
 {
 
 MaxSpeed=0;
 if (Period()==PERIOD_H1)
  {
  m=59;
  while (m>=0)
   {
   Speed=(iOpen(Symbol(),PERIOD_M1,m+60*i)-iClose(Symbol(),PERIOD_M1,m+60*i))/Point;
   if (MaxSpeed<Speed)
    {
    MaxSpeed=Speed;
    }
   m--;
   }
  }
 if (Period()==PERIOD_M1)
  {
  m=0;
  while (m>=0)
   {
   Speed=(iOpen(Symbol(),PERIOD_M1,m+i)-iClose(Symbol(),PERIOD_M1,m+i))/Point;
   if (MaxSpeed<Speed)
    {
    MaxSpeed=Speed;
    }
   m--;
   }
  }      
 Buf_0[i]=MaxSpeed;             // Значение 0 буфера на i-ом баре      
 i--;                          // Расчёт индекса следующего бара     
 }   
//----
   return(0);
  }
//+------------------------------------------------------------------+
индикатор изначально был другой я его разобрал и "впаял" свой код
Файлы:
speed.mq4  3 kb
 
Много-много МАСD Может кто знает где такой гнянуть можно????
 
LazarevDenis:

помогите пожалуйста, у меня индикатор измеряет максимальное минутное движение за текущий час на часовом таймфрейме, первые 6 часов(баров) он измеряет все адекватно, а затем начинает какие-то левые значения придумывать, ниже сам код и индикатор, подскажите где я ошибся, хоть мне и не важны значения дальше 3 бара, но боюсь что ошибки могут возникнуть и на первом баре

индикатор изначально был другой я его разобрал и "впаял" свой код


А что Вы хотели получить?
 

Vinin:

А что Вы хотели получить?


я хочу, чтобы индикатор показывал максимальное значение iOpen-iClose среди минутных баров, но за ЧАС, к примеру за час 59 минутных баров iOpen-iClose=3(к примеру) а один минутный бар iOpen-iClose=10 и на часовом таймфрейме он должен показать 10 без каких либо отклонений, а индикатор мне нужен для закрытия ордеров, если вдруг за минуту курс пойдет слишком быстро не в ту сторону, то для советника это будет сигналом на закрытие

Это пока первая версия, потом я хочу чтобы он различал в какую сторону движется цена, хотя странно почему он этого сейчас не делает

 

Если кликнуть на графический объект, Например Горизонтальную Линию, то в открывшемся окне можно увидеть "Описание".

- Можно ли добавить "Описание" из кода?

Спасибо!

 
chief2000:

Если кликнуть на графический объект, Например Горизонтальную Линию, то в открывшемся окне можно увидеть "Описание".

- Можно ли добавить "Описание" из кода?

Спасибо!

https://docs.mql4.com/ru/objects/ObjectSetText
 

То что надо! Спасибо!

 

LazarevDenis

Изначально считается 59 баров, что неправильно. В минутках могут пропуски, да и последний часовой бар в себе меньше минуток может содержать.

Нужно брать время открытия и закрытия часового бара (Time[i]). По этому времени делать расчет смещений для минуток iBarShift, а вот затем уже вычислять максимум в этом диапазоне смещений.

Кстати что индикатор должен показывать на минутном периоде?

Хотя для советника неважно, ему достаточно получать последнее значение на минутках, если число положительное цена идет вверх, если отрицательное вниз, вернув число по модулю узнаем силу движения.

Причина обращения: