Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пополняй свой счет через платежную систему Visa QIWI Wallet
sbar4
42
sbar4 2016.08.27 09:09 

Здравствуйте!

Хочу написать советник, который при появлении от индикатора текста (пример "A" ) на графике цен за последние 3-4 свечки на часовом, закрывал сделки по текущему курсу.

Я не программист, поэтому пошел от простого к сложному.

При выполнении кода, алерт говорит только "ОК", и говорит только на момент запуска.

Могут ли знающие люди подсказать?

string ObjectA="Text 2";

int OnInit()
{
if (ObjectFind("ObjectA")>=0)
    { 
     Alert("OK");
    }   
     else
    {
     Alert("Er");
    }   
return(INIT_SUCCEEDED);
}

sbar4
42
sbar4 2016.08.27 11:13  
Подправил код в первом сообщении. Если вставить в ObjectFind "ObjectA", то не работает, если вставить "Text 2", то работает. Где я что то пропустил?
LRA
321
LRA 2016.08.27 11:58  

Если от простого к сложному, то отбросим рассуждения о появлении текста от индикатора (а что это значит?), о 3-4 свечах и часовом графике - все это имеет малое отношение к предложенной программе. Далее. Функция OnInit() выполняется 1 раз при запуске советника - поэтому какое-либо сообщение будет выдано 1 раз в момент запуска. Какое именно -зависит от результата функции ObjectFind. А этот результат в свою очередь зависит от наличия объекта. Ну какой объект есть на графиках, отсюда видно с трудом. Судя по всему, имеется объект с именем Text 2. И если это имя вставить в функцию поиска, то объект находится. Обращаю внимание на разницу между "ObjectA" и ObjectA. Первое, т.е. "ObjectA" это строка символов и ее значением является ObjectA. Второе, т.е. ObjectA - это имя переменной, которой ранее присвоено значение Text 2. Так вот, если существует объект с именем Text 2, то для его поиска в функцию ObjectFind надо вставить или "Text 2", или переменную ObjectA без кавычек, предварительно присвоив этой переменной имя искомого объекта, что и сделано в начале. Кстати, имеет значение количество пробелов.

Короче, в функции ObjectFind надо убрать кавычки.

Alexey Viktorov
5197
Alexey Viktorov 2016.08.27 11:58  
ObjectA это переменная содержащая "Text 2", а "ObjectA" уже имя объекта. Убери кавычки.
sbar4
42
sbar4 2016.08.27 14:50  

Убрать кавычки я не догадался. Спасибо.

От простого к сложному, алерты заменить на закрытие сделок. oninit заменить на ontick. 2-3 последними барами - получить текущее время и поискать 2 или 3 часа назад. Возможно получится не очень оптимально.

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