Доработка ботов (советников, индикаторов) vol. 2

Alex Green

Прохожий
Может в коде не везде Symbol() заменена на PAIR.


officialboob
, спасибо.

Понял в чем причина. Если брать цену open, то ещё ничего, т.к. цена не меняется во времени. Проблема во всех остальных - high, low, close, которые привязаны к тикам. Тики на PAIR очень даже могут не совпадать с тиками на текущей паре. Как следствие, появляется вероятность расхождения информации в том случае, если по PAIR тик уже был, а на текущей паре ещё нет. По описанию, OnCalculate() можно использовать не обязательно на графике той пары, для которой она вызывается.
"Обычно это происходит при поступлении нового тика по символу, для которого рассчитывается индикатор. При этом индикатор не обязательно должен быть прикреплен к какому-нибудь ценовому графику данного символа."

Вопрос ко всем:
Как OnCalculate() организовать на сбор данных с другой пары?

Спасибо.
 

officialboob

Элитный участник

officialboob
, спасибо.

Понял в чем причина. Если брать цену open, то ещё ничего, т.к. цена не меняется во времени. Проблема во всех остальных - high, low, close, которые привязаны к тикам. Тики на PAIR очень даже могут не совпадать с тиками на текущей паре. Как следствие, появляется вероятность расхождения информации в том случае, если по PAIR тик уже был, а на текущей паре ещё нет. По описанию, OnCalculate() можно использовать не обязательно на графике той пары, для которой она вызывается.
"Обычно это происходит при поступлении нового тика по символу, для которого рассчитывается индикатор. При этом индикатор не обязательно должен быть прикреплен к какому-нибудь ценовому графику данного символа."

Вопрос ко всем:
Как OnCalculate() организовать на сбор данных с другой пары?

Спасибо.


Можно попробовать RefreshRates(); перед обращением.
 

Alex Green

Прохожий
Так замени OnCalculate() на связку OnTimer() с EventSetMillisecondTimer(100) - в данном случае, опрос будет каждые 0,1 сек.


mobidik, спасибо за отклик.
При использовании OnTimer() потикового исполнения уже не будет? Или индикатор будет каждые 0.1 сек.+ на каждом тике опрашивать? И ночью будет каждые 0.1 сек. опрашивать, когда тики значительно реже.
Хотелось бы, конечно, с OnCalculate() разобраться. Возможность получать данные без тика (вернее, по тику другой пары) для OnCalculate() прописана и если она действительно реализована, то, думаю, было бы полезно взять её на вооружение. Они, правда, как всегда, прописать-то прописали, а как пользовать - "забыли" сказать.
 
Последнее редактирование:

mobidik

-----
mobidik, спасибо за отклик.
При использовании OnTimer() потикового исполнения уже не будет? Или индикатор будет каждые 0.1 сек.+ на каждом тике опрашивать? И ночью будет каждые 0.1 сек. опрашивать, когда тики значительно реже.
Да, так и будет, каждые 0.1 сек. - тики не учитываются.

Хотелось бы, конечно, с OnCalculate() разобраться. Возможность получать данные без тика (вернее, по тику другой пары) для OnCalculate() прописана и если она действительно реализована, то, думаю, было бы полезно взять её на вооружение. Они, правда, как всегда, прописать-то прописали, а как пользовать - "забыли" сказать.
А вот это врят ли, ф-ция OnCalculate() генерирует сигнал по окончанию события Init и при поступлении нового тика по символу. Среди перечня параметров нет символа, значит не реально.., имхо.
 

поручик

Гость
Функция NormalizePrice().
Данная функция возвращает нормализованное значение цены. Нормализация выполняется с применением значений функции MarketInfo(MODE_TICKSIZE || MODE_DIGITS). Функция NormalizePrice() принимает следующие параметры:

np - Нормализуемое значение лота. Обязательный параметр.
sy - Наименование торгового инструмента. NULL или "" - текущий символ. Значение по умолчанию - "".
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 21.08.2008 |
//| Описание : Возвращает нормализованное под размер тика значение цены. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| np - нормализуемое значение цены. |
//| sy - наименование инструмента ("" или NULL - текущий символ) |
//+----------------------------------------------------------------------------+
double NormalizePrice(double np, string sy="") {
if (sy=="" || sy=="0") sy=Symbol();
double pp, ts=MarketInfo(Symbol(), MODE_TICKSIZE);
int di=MarketInfo(Symbol(), MODE_DIGITS);

if (ts>0) pp=NormalizeDouble(np/ts, 0)*ts;
else {
if (di>0) pp=NormalizeDouble(np*di, 0)/di; else pp=np;
}
return(pp);
}
ЗЫ. Во вложении скрипт для тестирования функции NormalizePrice().
 

Вложения

  • test_normalizeprice.mq4
    2,8 КБ · Просмотры: 39

pit84

Активный участник
Обращение к officialboob

Здравствуйте уважаемый officialboob!!! Если вам не трудно добавьте в этого советника вот эти функции. Обе библиотеки я в терминал уже поставил но так как я не программист то в код советника дописать то что нужно для работы этих функций просто не могу. Помогите пожалуйста.:please:
Все файлы прикрепил. Вот описание:
Описание:
Библиотека функций сопровождения позиций простым тралом. Предназначена для подключения к любому советнику и поддерживает два вида трала, которые переключаются параметром ProfitTrailing. Функционально библиотека реализует почти тот же механизм сопровождения, что применён в советнике e-Trailing. Небольшое отличие библиотеки заключается лишь в возможности установки разного размера трала для покупок и продаж.

Для использования библиотеки a-SimpleTrailing.mqh в советнике:

файл a-SimpleTrailing.mqh поместить в папку ..\experts\include\
в верхней части кода советника перед описаниями функций добавить строку:
#include <a-SimpleTrailing.mqh>
в функции start() советника добавить строку:
if (UseTrailing) TrailingPositions(<Параметры функции>);
для выбора конкретных параметров смотрите примеры использования главной функции библиотеки.
После подключения библиотеки в советнике появятся дополнительные внешние параметры:

UseTrailing=True - Использовать трал. Позволяет быстро включить или отключить трал. При значении True трал включен, False - выключен.
ProfitTrailing=True - Тралить только профит. При значении True трал начинает работать только, если профит сопровождаемой позиции превысит размер+шаг трала. При значении False трал начинает работать в убыточной зоне. Эту особенность можно использовать для выставления стопов у безстоповых позиций на уровень размера трала.
TrailingStopBuy=50 - Фиксированный размер трала для покупок.
TrailingStopSell=50 - Фиксированный размер трала для продаж.
TrailingStep=5 - Шаг трала.
Главная функция TrailingPositions() библиотеки принимает следующие параметры:

sy - наименование инструмента ("" - текущий символ)
op - операция (-1 - любая позиция)
mn - MagicNumber (-1 - любой магик)
Значения параметров, указанные в скобках, являются умолчательными, то есть могут быть пропущены.

Примеры использования главной функции библиотеки:

TrailingPositions() - сопровождение любых позиций с любым магиком на текущем инструменте.
TrailingPositions("", -1, Magic) - сопровождение любых позиций с магиком, равным Magic на текущем инструменте.
TrailingPositions("", OP_SELL) - сопровождение продаж с любым магиком на текущем инструменте.
TrailingPositions("USDJPY", OP_BUY, Magic) - сопровождение покупок с магиком, равным Magic на инструменте USDJPY.
Для нормальной работы библиотеки требуются глобальные переменные, которые рекомендуется определить в теле советника:

clModifyBuy - Цвет значка модификации покупки.
clModifySell - Цвет значка модификации продажи.
Кроме того в тело советника необходимо добавить универсальную функцию модификации ордеров и позиций ModifyOrder().
 

Вложения

  • Friend-3.mq4
    70 КБ · Просмотры: 77
  • a-SimpleTrailing.rar
    2 КБ · Просмотры: 57
  • ModifyOrder.rar
    1,5 КБ · Просмотры: 54

BadGod

Прохожий
День добрый не могли бы вы добавить выбор тайм фрейма для стандартного индикатора мт4 CCI, не могу найти.
За ранние благодарен.
 

Joker62

Почетный гражданин
Ребята, посмотрите, пожалуйста кто-нибудь сов. Раньше работал, теперь молчит по всем парам и на демо тоже.
*hi*
Посмотрел файл, он еще и декомпил...
Нашел причину - там есть еще одна защита. Убрал его. Устранил ряд ошибок и предупреждений

Исправленный файл в скрепке:
Посмотреть вложение Умная МАШИНА IV_Fix.mq4

Проверяйте.:)
 

lexshur

Новичок форума
Всем привет!
Уважаемые трейдеры у кого ни будь в заначке есть советник, который выставляет отложенные ордера например селлимит и байстоп. через заданное количество пунктов от друг-друга и от цены, и если допустим у тебя стоит на 5 минутном графике то ордера каждые 5 минут модифицируются, а если на 15 минутном, то через каждые 15 минут переставляются от текущей цены. Ну и чтобы количество ордеров можно было задать. С Уважением ко всем прошу всех кому не жалко.
 

officialboob

Элитный участник
Если вам не трудно добавьте в этого советника вот эти функции.


Зайдите сюда => _kimiv.ru => бесплатные => советники.


Выберите себе нужный трал и пользуйтесь. Они (тралы) будут работать в паре с любыми советниками.
 

GeorgichFX

Новичок форума
Пожалуйста, добавьте возможность отправки PUSH уведомлений для индикатора
 

Вложения

  • i_ozymandias_lite alert histogram.mq4
    5,9 КБ · Просмотры: 58

Dominowka

Активный участник
Товарищи помогите пожалуйста:please: Не ставится на график.
 

Вложения

  • PZ_Binaryoptions.ex4
    17,5 КБ · Просмотры: 45

Alex Green

Прохожий

Вложения

  • SSRC ma.mq4
    6,6 КБ · Просмотры: 168
  • SSRC_MTF ma.mq4
    6,4 КБ · Просмотры: 175
Последнее редактирование:

Rey

Активный участник
Грузит терминал

Пожалуйста, посмотрите индикатор, грузит терминал и я не пойму вообще он грузится на график или нет.
 

Вложения

  • Sniper.mq4
    6,1 КБ · Просмотры: 71
  • Sniper.ex4
    18 КБ · Просмотры: 42
Верх