товарищи разработчики, объясните что мне надо изменить в коде чтобы после сигнала на покупку\продажу позиция открылась и закрылась один раз и все, советник не открывает позиций до следующего сигнала. Особенно это бывает когда система из нескольких индикаторов. Советник всегда в позиции. Закрыл одну по тейку или стопу, сразу открывает другую.
Всё это удовольствие завязано строго на текущий таймфрейм, поэтому, чтобы добраться до аналогичных данных другого таймфрейма, можно, например, использовать вызов хэндла необходимого встроенного стандартного индикатора на нужном таймфрейме:
handle=iGator(_Symbol, PERIOD_W1);
и далее копировать в буферы необходимые данные через вариации Copy-функций.
Всё бы ничего, да вот есть необходимость использовать rates_total и prev_calculated на отличных от текущего таймфреймах. Вот их-то как раз и нет, насколько я понимаю. Где и как их взять, если очевидно, что от текущего таймфрейма они в принципе не подходят?
Конечно, в справке есть доходчивое объяснение:
"Необходимо отметить связь между значением, возвращаемым функцией OnCalculate() и вторым входным параметром prev_calculated. Параметр prev_calculated при вызове функции содержит значение, которое вернула функция OnCalculate() на предыдущем вызове. Это позволяет реализовать экономные алгоритмы расчета пользовательского индикатора с тем, чтобы избежать повторных расчетов для тех баров, которые не изменились с предыдущего запуска этой функции.
Для этого обычно достаточно вернуть значение параметра rates_total, которое содержит количество баров при текущем вызове функции. Если с момента последнего вызова функции OnCalculate() ценовые данные были изменены (подкачана более глубокая история или были заполнены пропуски истории), то значение входного параметра prev_calculated будет установлено в нулевое значение самим терминалом."
Так неужели придётся вручную реализовывать собственные аналоги rates_total и prev_calculated для других таймфреймов по вышеописанному принципу? Или всё-таки есть чем готовым воспользоваться? Ну, вот, например, так:
rates_total = BarsCalculated(handle);
или взять возвращённое значение Copy-функции. Но с prev_calculated же будет, мягко говоря, не всё так просто... Как бы это грамотно реализовать?
Я выбрал из истории сделку, направление сделки "разворот" (in/out), затем определяю объем сделки HistoryDealGetDouble(ticket,DEAL_VOLUME). Получаю общий объем, а как узнать объем который я закрыл и который открыл? Спасибо.
С учетом комментария разработчиков проще будет переделать эксперт или поработать над ним напильником.
Тут пожалуй будет проще полностью описать то что вы хотите от эксперта и предоставить весь код созданный ВИЗАРДОМ.
мне нужен допустим советник который открывает сделки по пересечению ценой индикатора Envelopes. Вот что получилось:
Вопрос по индикаторам.
Есть такая конструкция из входных параметров в OnCalculate:
Всё это удовольствие завязано строго на текущий таймфрейм, поэтому, чтобы добраться до аналогичных данных другого таймфрейма, можно, например, использовать вызов хэндла необходимого встроенного стандартного индикатора на нужном таймфрейме:
и далее копировать в буферы необходимые данные через вариации Copy-функций.
Всё бы ничего, да вот есть необходимость использовать rates_total и prev_calculated на отличных от текущего таймфреймах. Вот их-то как раз и нет, насколько я понимаю. Где и как их взять, если очевидно, что от текущего таймфрейма они в принципе не подходят?
Конечно, в справке есть доходчивое объяснение:
"Необходимо отметить связь между значением, возвращаемым функцией OnCalculate() и вторым входным параметром prev_calculated. Параметр prev_calculated при вызове функции содержит значение, которое вернула функция OnCalculate() на предыдущем вызове. Это позволяет реализовать экономные алгоритмы расчета пользовательского индикатора с тем, чтобы избежать повторных расчетов для тех баров, которые не изменились с предыдущего запуска этой функции.
Для этого обычно достаточно вернуть значение параметра rates_total, которое содержит количество баров при текущем вызове функции. Если с момента последнего вызова функции OnCalculate() ценовые данные были изменены (подкачана более глубокая история или были заполнены пропуски истории), то значение входного параметра prev_calculated будет установлено в нулевое значение самим терминалом."
Так неужели придётся вручную реализовывать собственные аналоги rates_total и prev_calculated для других таймфреймов по вышеописанному принципу? Или всё-таки есть чем готовым воспользоваться? Ну, вот, например, так:rates_total = BarsCalculated(handle);или взять возвращённое значение Copy-функции. Но с prev_calculated же будет, мягко говоря, не всё так просто... Как бы это грамотно реализовать?Прочитал статью Rosh'a про математику https://www.mql5.com/ru/articles/1492.
Такие же критерии оценки на чемпионате.Существует ли возможность подключить подобный анализ к примеру в OnTester() ?
Имеются ли готовые решения в свободном доступе?
Прочитал статью Rosh'a про математику https://www.mql5.com/ru/articles/1492.
Такие же критерии оценки на чемпионате.Существует ли возможность подключить подобный анализ к примеру в OnTester() ?
Имеются ли готовые решения в свободном доступе?
Да - Статистика тестирования
Подскажите?
Я выбрал из истории сделку, направление сделки "разворот" (in/out), затем определяю объем сделки HistoryDealGetDouble(ticket,DEAL_VOLUME).
Получаю общий объем, а как узнать объем который я закрыл и который открыл? Спасибо.
Да - Статистика тестирования
Написал вроде по линейной регрессии.Не планируется стандартно в терминал вписать такую штуку,да еще чтобы на график в тестере выводилось?
И еще как понял для расчета Z-счета требуется самостоятельно расчитывать общее количество положительных и отрицательных серий?
И еще как понял для расчета Z-счета требуется самостоятельно расчитывать общее количество положительных и отрицательных серий?