0ll Опубликовано 9 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 января, 2016 В МТ5 все по-другому. А в 4-ке функцию слип применять с осторожностью.Kiman отпиши о результате своего эксперимента, а то билды обновляются, уже 950 пришёл, может и поменялось чего... Изменено 9 января, 2016 пользователем 0ll 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Kiman Опубликовано 9 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 января, 2016 В МТ5 все по-другому. А в 4-ке функцию слип применять с осторожностью.Kiman отпиши о результате своего эксперимента, а то билды обновляются, уже 950 пришёл, может и поменялось чего... Ok 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ivanpivo Опубликовано 10 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 января, 2016 Всем профита <:-p envelopes>envelopes.png 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Kiman Опубликовано 10 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 января, 2016 В МТ5 все по-другому. А в 4-ке функцию слип применять с осторожностью.Kiman отпиши о результате своего эксперимента, а то билды обновляются, уже 950 пришёл, может и поменялось чего... не прокатило(( первый советник работает.SleepФункция задерживает выполнение ТЕКУЩЕГО эксперта или скрипта на определенный интервал. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 11 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 января, 2016 Kiman спасибо. Вы сделали через эксперт или скрипт? Просто скрипт выполняется в другом потоке и на эксперт влиять не будет...Кстати можно попробовать выключать, а потом снова включать разрешение на автоторговлю. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Kiman Опубликовано 11 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 января, 2016 Kiman спасибо. Вы сделали через эксперт или скрипт? Просто скрипт выполняется в другом потоке и на эксперт влиять не будет... Через эксперт. Кстати можно попробовать выключать, а потом снова включать разрешение на автоторговлю. А как это сделать? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 11 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 января, 2016 Сейчас глянул - отключить можно, а включить проблема - надо внешнюю библиотеку делать. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Kiman Опубликовано 11 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 января, 2016 Сейчас глянул - отключить можно, а включить проблема - надо внешнюю библиотеку делать. Короче проще этот советник самому написать, не особо то и сложный. Открывает сетку ордеров отложенных.Был бы еще опыт в этом деле)Может у кого есть такой с открытым кодом? Изменено 11 января, 2016 пользователем Kiman Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 11 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 января, 2016 отложки стоповые или лимитные? 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
sanich Опубликовано 11 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 января, 2016 Пробовал, не подходит... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Kiman Опубликовано 11 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 января, 2016 отложки стоповые или лимитные? Стоповые.У меня тут другая проблема :d Sleep на истории не работает. Нужно для тестирования какой-то другой механизм придумать. Как можно еще таймер организовать? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 11 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 января, 2016 Слип и таймеры на истории не работают - не зачем. просто тестер пропускает котировки и всё. Ссылка на сообщение Поделиться на другие сайты More sharing options...
htp87 Опубликовано 12 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 января, 2016 Доброго времени суток.Написал свой первый советник: открытие ордеров по полосам Боллинджера, при цене выше средней на покупку, при цене ниже средней на продажу. Профит ставлю на удвоенном расстоянии от средней линии индикатора до верхней или нижней. Стопы соответственно на верхней или нижней линиях.Но есть несколько вопросов, подскажите пожалуйста:1. Как ограничить советник на открытие ордеров после закрытия по профиту. А так получается, что например: ордер на покупку закрылся по профиту, цена еще выше средней и сразу отрывается еще один ордер на покупку.2. При тестере стратегии, ордера на продажу открывается два одновременно. При этом ограничение в советнике стоит только на один ордер. А вот ордера на покупку открываются правильно, по-одному. Разницы в написании подсчета количества ордеров нет.Вот скрипт советника: Спойлер void OnTick() { PriceMiddle = iCustom (Symbol(), 0, "Bands", InpBandsPeriod, InpBandsShift, InpBandsDeviations, 0, 0); PriceHigh = iCustom (Symbol(), 0, "Bands", InpBandsPeriod, InpBandsShift, InpBandsDeviations, 1, 0); PriceLow = iCustom (Symbol(), 0, "Bands", InpBandsPeriod, InpBandsShift, InpBandsDeviations, 2, 0); if(Bid { SL = PriceHigh; TP = PriceLow - (PriceMiddle - PriceLow); ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,comment,Magic,0,Red); if(ticket > 0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true) { if(OrderModify(ticket,OrderOpenPrice(),SL,TP,0) == true) Print("Ордер успешно изменился"); if(OrderClose(ticket, OrderLots(),TP, Slippage, Black) == true) Print("Ордер успешно закрылся"); if(OrderClose(ticket, OrderLots(),SL, Slippage, Black) == true) Print("Ордер отрицательно закрылся"); } } } if(Ask > PriceMiddle && CountBuy() == 0) { SL = PriceLow; TP = PriceHigh + (PriceHigh - PriceMiddle); ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,comment,Magic,0,Blue); if(ticket > 0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) == true) { if(OrderModify(ticket,OrderOpenPrice(),SL,TP,0) == true) Print("Ордер успешно изменился"); if(OrderClose(ticket, OrderLots(),TP, Slippage, Black) == true) Print("Ордер успешно закрылся"); if(OrderClose(ticket, OrderLots(),SL, Slippage, Black) == true) Print("Ордер отрицательно закрылся"); } } } }//+------------------------------------------------------------------+int CountSell() { int count = 0; for(int i = OrdersTotal()-1;i>=1;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true && OrderMagicNumber() == Magic && OrderSymbol() == Symbol() && OrderType() == OP_SELL) count++; } return(count); }//+------------------------------------------------------------------+int CountBuy() { int count = 0; for(int i = OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true && OrderMagicNumber() == Magic && OrderSymbol() == Symbol() && OrderType() == OP_BUY) count++; } return(count); }//+------------------------------------------------------------------+ Изменено 13 января, 2016 пользователем Pavel888 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Arius777 Опубликовано 13 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 января, 2016 С разрешения опытных коллег я отвечу. Htp87, по вопросу #1 можно проверять по последнему ордеру в истории - по его профиту, а если у тебя больше нет никаких условий и ордера просто по пересечению боллинджера, то можно и по типу ордера - если был бай, больше в бай не открывать. Вопрос #2, я удивлён вообще, о каком тестировании ты говоришь, кинь советника на реальный график, увидишь кучу ерроров. Я своим неопытным взглядом вижу - неправильно используешь функцию ордер клозе - это выглядит, как будто ты сам пытаешься закрыть свой ордер по тейк профиту, а затем по стоп-лоссу. Плюс I-custom лучше бери по 1-му бару а не нулевому, так как он не сформирован до конца и цена будет прыгать вокруг линии боллинджера, тем самым давая повод каждый раз открывать сделки 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 13 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 января, 2016 htp87 в условиях открытия НЕ выше/ниже средней, а пересечение средней сверху-вниз и наоборот. пример:if ( Close[2] PriceMiddle[1] ) // пересечение снизу-вверх: покупаемПо открытию ордеров. Похоже у Вас каша в голове - сам через такое проходил...Вы открываете ордер. Потом Выделение и модификация СЛ и ТП - здесь всё правильно, но зачем-же сразу закрывать? два раза? Уберите эти строчки с закрытием. У Вас есть СЛ и ТП - вот пусть и отрабатывают. Ссылка на сообщение Поделиться на другие сайты More sharing options...
htp87 Опубликовано 13 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 января, 2016 Большое спасибо за ответы.А как тогда прописать: по типу ордера - если был бай, больше в бай не открывать? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 14 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 января, 2016 htp87, а вот это уже лучше сам...Включайте воображение: с операторами языка ознакомиться мало - и они дают ответ только на вопрос "как сделать".А "что" сделать "как" - это уже вам самому придумывать надо.Вот вам и первый вопрос: Цитата А как тогда прописать: по типу ордера - если был бай, больше в бай не открывать? Как запомнить, что последний ордер был бай?И как потом это обработать? :) 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pioner_rus Опубликовано 14 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 января, 2016 Чёрд, никак не найду в инете пример программы с вызовом ZigZag. Может кто-нибудь кинуть ссылку на такой пример, где бы, например, рассчитывалось значение ZigZag для ряда свечей? Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 14 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 января, 2016 Чёрд, никак не найду в инете пример программы с вызовом ZigZag. Может кто-нибудь кинуть ссылку на такой пример, где бы, например, рассчитывалось значение ZigZag для ряда свечей? ну вот как-то так. код о том, о чем тебе выше писали.int shift = 100; // кол-во баров для анализаfor (int i=0;i{double zig = iCustom(Symbol() , Period(), "ZigZag", 12, 5, 3, 0, i ); if (zig>0) { Alert("последняя найденная вершина: ",zig); break; }} Изменено 20 августа, 2017 пользователем Pavel888 4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sany2912 Опубликовано 15 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 января, 2016 Здравствуйте! Друзья, помогите советом: ситуация в том, что при перезагрузке сервера обнуляются две переменные, которым присволись значения в процессе работы советника из-за этого при повторном запуске терминала советник, если есть открытые ордера, работает не по алгоритму... Как при перезагрузке сервера сохранить значения переменных, если есть открытые ранее ордера? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 15 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 января, 2016 Может кто-нибудь кинуть ссылку на такой пример, где бы, например, рассчитывалось значение ZigZag для ряда свечей?Зиг-заг не рассчитывается (у него нет формулы), он ищет в цикле вершины. Как пользоваться индюком (0-буфером) показал dermitay. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 15 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 января, 2016 Sany2912 тут много подходов - выбирай на вкус:- в ОнИнит пересчитывать все необходимые для продолжения торговли значения (имхо лучший)- писать в переменную уровня терминала, они сохраняются (сам не проверял)- писать значения во внешний файл, а в ОнИнит - читать. Ссылка на сообщение Поделиться на другие сайты More sharing options...
mobidik Опубликовано 15 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 января, 2016 Sany2912, использовать ф-ции GlobalVariable. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sany2912 Опубликовано 15 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 января, 2016 Sany2912 тут много подходов - выбирай на вкус:- в ОнИнит пересчитывать все необходимые для продолжения торговли значения (имхо лучший)- писать в переменную уровня терминала, они сохраняются (сам не проверял)- писать значения во внешний файл, а в ОнИнит - читать. Спасибо за совет! Только как это написать - в ОнИнит пересчитывать все необходимые для продолжения торговли значения? Есть возможность, хотя бы, какой-нибудь образец кода, для примера показать...? Поделитесь частью кода, пожалуйста... Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 15 января, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 января, 2016 Sany2912 я-ж не знаю что Вы используете и как это рассчитывается у Вас в сове.например для восстановления параметров открытых ордеров из ОнИнит запускается ф-ция пересчета, которая ищет свои ордера и восстанавливает внутренние значения СЛ/ТП/БУ, если сетка, то сортирует ордера, восстанавливает лотность, цену открытия последнего колена и т.д. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти