[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 1126
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Код не верный. Во-первых, если функция start() имеет тип int, то она должна возвращать целочисленное значение. У Вас ретурн возвращается только по условию. А если условие не выполнено, что тогда должна вернуть терминалу функция Старт?
Далее, Вы слишком усложнили проверку - сделать лучше так: делаем счётчик ордеров, открытых и закрытых сегодня. Если количесовт сегодняшних ордеров больше нуля, то не торгуем. В противном случае торг разрешён.
изменил int на void... не помогло
если честно, то до конца не понимаю, как сделать счётчик ордеров и при этом сохранить возможность включения/отключения опции разовой дневной торговли....
....подумал-подумал: попробую так
if(CalculateCurrentOrders(Symbol())==0 && Orders==0)
{
CheckForOpen();
if (WaitForNewDay) {Orders++;}
return;
}
Сброс счётчика:
if(WaitForNewDay)CheckForNewDay();
void CheckForNewDay()
{
tm=iTime(Symbol(),PERIOD_D1,0);
if (bt!=tm) {bt=tm; Orders=0;}
}
В общем, вернулся к тому от чего убегал )))
изменил int на void... не помогло
если честно, то до конца не понимаю, как сделать счётчик ордеров и при этом сохранить возможность включения/отключения опции разовой дневной торговли....
-------------
В общем, вернулся к тому от чего убегал )))
Уважаемые форумчане помогите с кодом. Ситуация такая, вручную рисую и перемещаю горизонтальную линию и когда цена касается ее то срабатывает сигнал.
Цена коснулась линии - возникает сигнал. Это понятно. А что с кодом-то не так?
Извиняюсь, некорректно поставил задачу)) Нужен собственно код который делал бы такое.
Первое, что Вам нужно понять, так это то, что линия - это объект. Программный код различает объекты по их именам. Вам нужно в коде прописать имя линии, а затем, когда Вы бросаете линию на график, нужно войти в её свойства и изменить имя на то, которое прописано в коде. Только в этом случае код поймёт, что обрабатывать нужно показания, снимаемые с этого объекта.
Далее в коде Вам нужно запросить цену, на которой стоит линия. Запрос осуществляется через функцию double ObjectGet(string name, int prop_id). Вместо name нужно указать имя Вашей линии, а вместо prop_id указать OBJPROP_PRICE1. Таким образом Вы можете программно получить цену, на которую установлена эта линия. Получить и внести это значение в переменную. далее в коде нужно организовать проверку на пердмет касания ценой этой линии. Например так: Если на предыдущем тике цена ниже того уровня, на котором стоит линия и при этом на текущем тике она больше или равна этому уровню, то произошло касание.
Александр, если у Вас не получается что-то с кодом, то здесь помогут. Если Вам нужно, чтоб код сделали вместо Вас - то Вам сюда https://www.mql5.com/ru/job.
Сделал так, но сигнал не срабатывает почему то когда Close[0]==n. Как бы это исправить?
Ну, судя по коду Вы сделали индикатор. И поэтому для проверки работоспособности этого участка кода, Вам придётся сидеть и ждать когда же очередной тик соизволит прикоснуться к линии. Лучше для отладки этого участка кода воспользоваться созданием скрипта - он даст результаты мгновенно.
Первое, в чём Вам нужно убедиться, так это в том, что код реально видит Вашу линию. Как это сделать? Нужно запросить её цену и вывести алертом на экран. Делаем.
Теперь, когда скрипт перекомпилирован, открываем любой график и кидаем на него горизонтальную линию. Затем входим в её свойства и поскольку в коде мы присвоили линии имя "1", то и в свойствах линиии ставим это имя:
Жмём ОК. Бросаем скрипт на график и убеждаемся в том, что цену алерт нам вернул правильную. Перемещаем линию по графику в другое место и снова кидаем скрипт на график - убеждаемся, что если руками поменять положение линии, то наш код её всё равно видит и распознаёт.
Ну дальше в таком же духе.
Индикатор тестирую через тестер с включенной визуализацией. Немного исправил код так как для срабатывания алерта нужна нормализация значений. Но если переставлять линию на текущем баре скажем часовике тогда алерт сработает только 1 раз при последующих перемещениях линии по текущему бару алерт почему то неработает. Приходится ждать другого бара.