Ура!
//+------------------------------------------------------------------+ //| Возвращает "неопределённое" состояние торгового окружения | //+------------------------------------------------------------------+ bool IsUncertainStateEnv(const string symbol_name,const ulong magic_number) { if(MQLInfoInteger(MQL_TESTER)) return false; int total=OrdersTotal(); for(int i=total-1; i>WRONG_VALUE; i--) { if(OrderGetTicket(i)==0) continue; if(OrderGetInteger(ORDER_TYPE)>ORDER_TYPE_SELL) continue; if(OrderGetInteger(ORDER_MAGIC)!=magic_number) continue; if(!OrderGetInteger(ORDER_POSITION_ID) && OrderGetString(ORDER_SYMBOL)==symbol_name) return true; } return false; } //+------------------------------------------------------------------+ //| Заполняет массивы тикетов позиций | //+------------------------------------------------------------------+ bool FillingListTickets(const uint number_of_attempts) { //--- Проверка состояния окружения int n=0,attempts=int(number_of_attempts<1 ? 1 : number_of_attempts); while(IsUncertainStateEnv(symb,InpMagic) && n<attempts && !IsStopped()) { n++; Sleep(sleep); } if(n>=attempts && IsUncertainStateEnv(symb,InpMagic)) { Print(__FUNCTION__,": Uncertain state of the environment. Please try again."); return false; } //--- //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- Проверка нулевых цен if(!RefreshRates() || Point()==0) return; //--- Заполнение списков тикетов позиций int positions_total=PositionsTotal(); if(prev_total!=positions_total) { if(FillingListTickets(num_attempts)) prev_total=positions_total; else return; }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
SerialMA_EA:
В основе сигналов советника лежит индикатор SerialMA;
Индикатор постоянно увеличивает свой период расчета, начиная от пересечения ценой его линии и до следующего пересечения. На каждом пересечении индикатор начинает расчет своего периода заново, с минимального значения.
Советник использует это его свойство:
В советнике можно выбрать два режима открытия позиций:
Для работы советника требуется, чтобы скомпилированный файл SerialMA.ex5 был установлен в стандартный каталог индикаторов терминала (Папка_вашего_терминала\MQL5\Indicators).
Советник позволяет включить/отключить разрешение на открытие длинных или коротких позиций, а также реверсировать сигналы индикатора - открывать вместо покупок продажи, и наоборот. Так же можно задать стоп лосс и тейк профит в пунктах. При ошибочно заданных размерах стоп лосс или тейк профит советник их автоматически корректирует под минимальный размер StopLevel, установленный для символа.
Советник также скорректирует лот при неверно указанном значении. Если же лот слишком большой при открытии позиции, то советник выставит его таким, чтобы позицию можно было открыть. Если нет денег на открытие даже минимальным лотом, то сигнал будет пропущен.
Автор: Scriptor