Обучение языку MQL4 под MetaTrader 4📌

От xbms, 13 апреля, 2013 в Уголок Программиста

#5201
Юлия-Julik, приведённый Вами пример (ld_8 * gd_100), намекает, что советник был декомпилирован до 600 билда терминала, т.е. очень старый и как он будет работать - неизвестно.
Предупреждения можно игнорировать - просто в 600++ билдах проверки результатов операций с ордерами стали обязательными.
Sell OrderModify Error 4109 - Торговля не разрешена. Попробуйте включить разрешение торговать в терминале. Есть кнопочка.
#5202

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

делаю первые шаги в программировании на MQL4, пишу простой советник который отправляет Push notifications когда свеча закрылась выше/ниже средней, но загвоздка в том что после закрытия свечи Нотификейшн отправляется при каждом тике, а мне нужно один раз после закрытия, ну и если через некоторое время в тот же день появляется обратный сигнал тоже присылать только 1 уведомление. Помогите пожалуйста кто знает как это можно сделать (ну или поделитесь кусочком кода :"> )?

Заранее спасибо за помощь.

#5203

загвоздка в том что после закрытия свечи Нотификейшн отправляется при каждом тике

это распространённая логическая задача. решение:
- объявляем переменную на глобальном уровне int next_signal = -1; // направление следующего сигнала
- там где уведомления пишем:
if ( Close[1] > MA && next_signal != 1 ) { next_signal = 1; //уведомление: выше МА }
if ( Close[1] Первое уведомление придёт сразу, а потом как положено.

Изменено 1 июля, 2018 пользователем 0ll

#5204

Добрый день товарищи форумчане!
помогите пожалуйста с вроде бы простой технической задачей. Она от части перекликается с предыдущим вопросом.
я вычисляю сигнал к покупке, вычисляю я его при открытии каждого нового бара.
получил сигнал - ок. (с этим проблем нет. сигнал сохраняю.)
теперь проблема!
***
- Далее мне надо ждать 1-2 (N) свечей для подтверждения сигнала, далее+> ---- в этом и есть вопрос! как запустить функцию, при поступлении сигнала с задержкой на N баров, при том что бы после исполнения задержки и подтверждения сигнала, функции внутри (все дальнейшие, расчеты и выставление ордеров)выполнялись уже все, то есть без повторной проверки условий выше (без новых задержек). а только потом был выход на уровень обратно.
****

даль как обычно - после подтверждения вычислить (sl-pt и так валее) выставить ОТ ЛОЖНЫЙ ордер. и т.д.
Ну и дизактивировать сигнал после выставления ордера.


что опробовано- так это Sleep (N) и дальнейшая проверка на открытие нового бара - не работет.
Просто последовательные проверки открытия N баров. тоже не смог.

Помогите кто может кто может помогите=)

#5205

Добрый день. Подскажите, пожалуйста, такой момент. Советник пишет результаты торговли в txt файл, как сохранять изменения в файле не закрывая его каждый раз?

Изменено 2 июля, 2018 пользователем Sacred70

#5206

Подскажите, пожалуйста, такой момент. Советник пишет результаты торговли в txt файл, как сохранять изменения в файле не закрывая его каждый раз?

FileFlush. Вам-бы справку открывать почаще.
#5207

Уважаемые коллеги!
Подскажите пожалуйста, как правильно задать условие для советника:
Если предыдущий ордер закрылся по стопу, то открыть ордер в другую сторону ( то есть перевернуться) ?????

Если можно кусочек кода с комментариями..

#5208
a_universal
Пишем функцию поиска последнего закрытого рыночного ордера GetLastClosedOrder()

в коде совы пишем вызов:
GetLastClosedOrder(); // поиск и выбор последнего ордера

if ( OrderTicket() > 0 && OrderProfit() {
int newT = 1 - OrderType(); // тип нового ордера - обратный старому
double newL = OrderLots() * 2; // размер лота = 2* размер старого - это Вам решать
OrderSend( ... newT, newL ...);
}


Код функции:
void GetLastClosedOrder()
for ( int i = OrdersTotal()-1; i >= 0; i-- ) //ищем ордер в цикле среди закрытых
{
if ( OrderSelect ( i, SELECT_BY_POS, MODE_HISTORY ) )
{
if ( OrderSymbol() ==_Symbol && OrderMagicNumber()==Magic && OrderType() return; // нашли свой закрытый ордер - выходим
}
OrderSelect(-1, SELECT_BY_TICKET); // снимаем выделение
}


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

Изменено 17 июля, 2018 пользователем 0ll

#5209

Всем привет!!!:-H
Помогите написать скрипт который будет считать среднее движение цены по зиг-загу за n-ое количество проходов.
Заранее спасибо!

ТЗ.png

#5210
lexa.shvetsoff_87 Думаю проще не скрипт писать, а допилить индикатор Зиг-Заг. Там при подтверждении вершины сразу считать среднее. У скрипта нет доступа к индюкам в окне, а вызывать индюк из кода скрипта это ещё тот костыль, имхо.
#5211

lexa.shvetsoff_87 Думаю проще не скрипт писать, а допилить индикатор Зиг-Заг. Там при подтверждении вершины сразу считать среднее. У скрипта нет доступа к индюкам в окне, а вызывать индюк из кода скрипта это ещё тот костыль, имхо.


Не могли бы вы мне помочь в этом?... А то в программировании я пока слабоват(((
#5212
lexa.shvetsoff_87 ок, помогу. У нас ветка обучения, вот и будем Вас обучать.
Найдите код зиг-зага (который Вам нравится), напишите как хотите считать среднее, подумайте в каком виде это надо отображать, опишите что хотите получить и как использовать.
#5213

Здравствуйте, Коллеги! Помогите, пожалуйста!
Как можно цену свечи прошлых дней найти по времени и поместить в переменную, т.е. выставляю в настройках время(10 час) и сов. работает с ценой открытия 10-часовой свечи каждого прошлого дня.

#5214

Здравствуйте, Коллеги! Помогите, пожалуйста!
Как можно цену свечи прошлых дней найти по времени и поместить в переменную, т.е. выставляю в настройках время(10 час) и сов. работает с ценой открытия 10-часовой свечи каждого прошлого дня.


ИльяРус, с наступлением нового дня, в цикле перебирайте все свечки по порядку от самой свежей, нулевой, к прошлым свечам. Смотрите время открытия каждой свечи. Как найдете свечу с нужным временем открытия, смотрите ее цену, а дальше уже по потребности с этой ценой работайте.

#5215


Здравствуйте, Коллеги! Помогите, пожалуйста!
Как можно цену свечи прошлых дней найти по времени и поместить в переменную, т.е. выставляю в настройках время(10 час) и сов. работает с ценой открытия 10-часовой свечи каждого прошлого дня.


ИльяРус, с наступлением нового дня, в цикле перебирайте все свечки по порядку от самой свежей, нулевой, к прошлым свечам. Смотрите время открытия каждой свечи. Как найдете свечу с нужным временем открытия, смотрите ее цену, а дальше уже по потребности с этой ценой работайте.

Спасибо! =b Пробую сейчас через iBarShift, если не получится, то попробую по вашему методу.
#5216

Спасибо! Пробую сейчас через iBarShift, если не получится, то попробую по вашему методу.


Не. iBarShift не подойдет для такой задачи. Там надо одним из аргументов передавать время в формате datetime, а Вы его не знаете. У Вас есть только искомый час, но этого не достаточно. Цикл самое верное.
#5217


Спасибо! Пробую сейчас через iBarShift, если не получится, то попробую по вашему методу.


Не. iBarShift не подойдет для такой задачи. Там надо одним из аргументов передавать время в формате datetime, а Вы его не знаете. У Вас есть только искомый час, но этого не достаточно. Цикл самое верное.

От себя добавлю, что встречаются выходные и праздничные дни, котировки имеют разный оффсет (кстати Ваши 10 часов с каким оффсетом?), так что предложение DreamWorks самое эффективное.СсылкаСсылкаСсылкаСсылкаСсылка

Изменено 8 августа, 2018 пользователем 0ll

#5218

Добрый день. Как при записи в файл .txt узнать какая кодировка и как ее сменить?

#5219

Уважаемые начинающие и гуру кодеры!
мне не приходит на почту ссылка на видео указанное в топе...
подскажите где можно его скачать?

#5220


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

Мой робот после перезапуска терминала или остановки Интернета перезапускается, удаляет текущие заказы и помещает новые. Как я могу заставить робота продолжить работу с того места, где он ушел?



#5221

Мой робот после перезапуска терминала или остановки Интернета перезапускается, удаляет текущие заказы и помещает новые. Как я могу заставить робота продолжить работу с того места, где он ушел?


Здравствуйте! Все роботы перезапускаются, при этом обязательно отрабатывает функция OnInit(). Вот в неё обычно пишут код, отвечающий за поиск ордеров, которые открыл советник - по паре и магику, заполняются все переменные, восстанавливаются значения индикаторов (если используются). В общем корректный перезапуск - творческий процесс, нужно знать логику робота.
НО, закрывать текущие заказы это слишком - такого быть не должно. Вы сами писали или на заказ?
#5222

Сам писал. На основе мартин и мрежа с уроках. На них как можно добавить, чтобы продолжить работу после перерыва?

#5223

На основе мартин и мрежа с уроках


Прости, я не в курсе этого. Вы подробнее пишите что за заказы? рыночные или отложки. Удаление почему отрабатывает?
#5224

Прости, я не в курсе этого. Вы подробнее пишите что за заказы? рыночные или отложки. Удаление почему отрабатывает?


Удаление работает, потому что значения переменных неверны после перезапуска. В начале комментариев есть курс, в котором есть уроки Мартингейла и Сети. Я думаю, что они подходят для примера перезагрузки после перезапуска. Мне нужно отложки. Если нет, я проверю на рыночные. Я не знал, где написать код восстановления. Я нашел, где получить значения ордера, и я думаю, что я это сделаю. Спасибо за помощь!
#5225
Доброго дня, уважаемые! TMA_Fair TMA без перерисовки
Тема уже почти забыта)) Но всё же.. Не подскажите, почему данный индикатор не отображается на графике? Индюк взят из шапки и с последней страницы. Индикатор, естественно, закидываю куда нужно. Что с ним сделать?)

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025