mql5 - вертикальная линия через определенное время с момента последней сделки

 

Всем привет!

Ребята, может кто поможет/подскажет, как реализовать следующую задумку на MQL5 (сам недавно с Метатрейдером познакомился - еще не пишу коды). 

Алгоритм кода:
1) Определяется время закрытия последней сделки и результат сделки.

2) Определяется общий результат дня после закрытия последней сделки.

3) В соответствии с настройками индикатора рисуется вертикальная линия на определенном интервале в будущее от момента закрытия последней сделки.
Настройки:
- если результат последней сделки отрицательный и результат дня отрицательный, то вертикальная линия чертится на расстоянии 24 часа (сутки) в будущее.
- если результат последней сделки отрицательный, а результат дня положительный, то вертикальная линия чертится на расстоянии 2 часа в будущее.
- если результат последней сделки положительный, то вертикальная линия чертится на расстоянии 1 час в будущее.

4) Линия остается на графике и после открытия новой сделки, но перемещается после закрытия новой сделки в соответствии с приведенным выше алгоритмом, т.к. уже новая сделка стала последней закрытой.

Примечание.
Положительный результат - это плюсовой, не важно, сработал ордер или в ручную закрылась позиция. Т.е. плюс в балансе.
Отрицательный результат - это минус или ноль в результате сделки.

P.S>

Смысл данного кода для меня в следующем - привыкнуть делать передышку после сделок и не пороть горячки. Заметил, что у  меня сливы идут на попытках быстро отыграть неудачные сделки. Понятно, что можно вручную ставить черточку и передвигать ее в соответствии с описанным правилом, но мне необходим именно программный вариант, т.к. в дальнейшем хочу привязывать дополнительные условия/фильтры к индикатору, т.е. усложнить алгоритм принятия решения.

Заранее всем спасибо и успехов! 

 

Как пример.

void moveVLine(string obj_name, datetime obj_time)
{
   int         tm       = PeriodSeconds(PERIOD_D1);
   datetime    next_day = obj_time + tm;
   MqlDateTime tm_str;
   
   TimeToStruct(next_day,tm_str);
   if(tm_str.day_of_week == 6)
   {
      tm *= 3;
      next_day = obj_time + tm;
   }
   ObjectMove(0,obj_name,0,next_day,0);
   
   return;
}
 
Сергей Таболин:

Как пример.

Сергей, спасибо!
Отпишусь по результату, как ваш пример у себя запущу
 
Сергей Таболин:

Как пример.

Пример не скомпилировался :(
Как я понял - код является фрагментом и необходимо дописать какие-то обязательные составляющие (#property и т.п.)?
 

Нашел похожий индикатор, рисующий просто в определенное время вертикальную линию - попробую его взять за основу, дописав необходимые алгоритмы вместо предопределенного статично времени.
https://www.mql5.com/ru/code/18449

Vertical line
Vertical line
  • www.mql5.com
Индикатор рисует, а затем перемещает нарисованную вертикальную линию (OBJ_VLINE) на заданное время (часы и минуты). Входные параметры: Из параметра "Use only Hours and minutes" используются только часы и минуты.  Вертикальная линии рисуется для текущего дня. Если начинается новый день, то нарисованная линия переносится на этот новый день на...
 
Затуп.
Есть исходник (код выше), который рисует линию на баре в заданное время. Необходимо лишь убрать время из input parameters и получать значение времени из истории сделок. Смотрю в документации Торговые функции, подозреваю, что истина где-то среди функций группы History... Пока вижу фигу :(
Может кто-то поможет/подскажет, как получить из истории данные по последней сделке (время закрытия позиции и зафиксированный результат по сделке)?
 
renatmt5:
Пример не скомпилировался :(
Как я понял - код является фрагментом и необходимо дописать какие-то обязательные составляющие (#property и т.п.)?

Это функция переноса вертикальной линии. Её нужно вызывать из основного кода при выполнении определённых условий. К тому же, сама линия уже должна быть.

 
Сергей Таболин:

Это функция переноса вертикальной линии. Её нужно вызывать из основного кода при выполнении определённых условий.

Ок, еще раз спасибо! 
 
renatmt5:

Всем привет!

Ребята, может кто поможет/подскажет, как реализовать следующую задумку на MQL5 (сам недавно с Метатрейдером познакомился - еще не пишу коды). 

Алгоритм кода:
1) Определяется время закрытия последней сделки и результат сделки.

2) Определяется общий результат дня после закрытия последней сделки.

3) В соответствии с настройками индикатора рисуется вертикальная линия на определенном интервале в будущее от момента закрытия последней сделки.
Настройки:
- если результат последней сделки отрицательный и результат дня отрицательный, то вертикальная линия чертится на расстоянии 24 часа (сутки) в будущее.
- если результат последней сделки отрицательный, а результат дня положительный, то вертикальная линия чертится на расстоянии 2 часа в будущее.
- если результат последней сделки положительный, то вертикальная линия чертится на расстоянии 1 час в будущее.

4) Линия остается на графике и после открытия новой сделки, но перемещается после закрытия новой сделки в соответствии с приведенным выше алгоритмом, т.к. уже новая сделка стала последней закрытой.

Примечание.
Положительный результат - это плюсовой, не важно, сработал ордер или в ручную закрылась позиция. Т.е. плюс в балансе.
Отрицательный результат - это минус или ноль в результате сделки.

P.S>

Смысл данного кода для меня в следующем - привыкнуть делать передышку после сделок и не пороть горячки. Заметил, что у  меня сливы идут на попытках быстро отыграть неудачные сделки. Понятно, что можно вручную ставить черточку и передвигать ее в соответствии с описанным правилом, но мне необходим именно программный вариант, т.к. в дальнейшем хочу привязывать дополнительные условия/фильтры к индикатору, т.е. усложнить алгоритм принятия решения.

Заранее всем спасибо и успехов! 

Индикатор, так индикатор.

Значится так. Определимся, что опрашиваем торговую историю раз в минуту. Далее, нужны еще два параметра:

  • учитывать последние сделки только для текущего символа (символа на котором запущен индикатор) или для всех?
  • и учёт magfic number (учитывать только какой-то один или все)?


От Вас нужен ответ. Я к обеду постараюсь снова появится в этой теме.

 
Vladimir Karputov:

Индикатор, так индикатор.

Значится так. Определимся, что опрашиваем торговую историю раз в минуту. Далее, нужны еще два параметра:

  • учитывать последние сделки только для текущего символа (символа на котором запущен индикатор) или для всех?
  • и учёт magfic number (учитывать только какой-то один или все)?


От Вас нужен ответ. Я к обеду постараюсь снова появится в этой теме.

Владимир, спасибо, что уделили время моему вопросу. Максимально просто изначально, т.к. рассчитываю в перспективе все-таки самостоятельно дорабатывать, а не халявить :)
- только по текущему символу
- по поводу magfic number - не уверен, что понимаю, с чем его едят. Типа ID какой-то? Мне не принципиально, если честно. Нужны данные только по одной последней закрытой сделке

 

Хочу уточнить термин "последняя сделка".

Искать нужно последнюю сделку внутри текущего дня? Или на последние N-дней?