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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
renatmt5
202
renatmt5  

Всем привет!

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

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

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

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

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

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

P.S>

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

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

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

Как пример.

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;
}
renatmt5
202
renatmt5  
Сергей Таболин:

Как пример.

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

Как пример.

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

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

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

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

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

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

Ок, еще раз спасибо! 
Vladimir Karputov
Модератор
182190
Vladimir Karputov  
renatmt5:

Всем привет!

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

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

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

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

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

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

P.S>

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

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

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

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

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


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

renatmt5
202
renatmt5  
Vladimir Karputov:

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

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

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


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

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

Vladimir Karputov
Модератор
182190
Vladimir Karputov  

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

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

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