Робота радника у заданий інтервал часу. Радник відкриває ордери щогодини, за часом і в потрібний момент

Історії успіху

Цей радникідеально підходить для тих, хто торгує за рівнями та будь-якими стратегіями, що використовують відкладені лімітні ордери. Радник виставить ордери в потрібний часна потрібній відстані від поточної ціни! В налаштуваннях робота Ви можете задати стоп лоси, тейк профіти ордерів, а також лот кожного ордеру. Все визначається для кожного ордера окремо. Можна виставляти тільки бай ліміт, або сел ліміт, або обидва ордери разом!

Радник готовий працювати на будь-якому торговому інструменті, в будь-якому торговому терміналі Metatrader 4. Так само робот готовий працювати на кількох валютних парахвідразу. Тобто Ви можете відкрити будь-яку кількість пар і встановити на них радник, задавши кожному свій магік номер та налаштування часу. Після чого кожна пара працюватиме строго індивідуально. Якщо Ви досі працюєте з лімітними ордерами вручну, то цей робот для Вас!

  • BUY_limit- Чи виставити ордер бай ліміт.
  • Lot_buy_limit- Лот ордера бай ліміт.
  • R_buy_limit- Відстань від поточної ціни до ордера бай ліміт у пунктах.
  • Stop_Loss_buy_limit- Стоп лосс ордера бай ліміт.
  • Take_Profit_buy_limit- Тейк профіт ордера бай ліміт.
  • SELL_limit- Чи виставити ордер сел ліміт.
  • Lot_sell_limit- Лот ордера Селл ліміт.
  • R_sell_limit- Відстань від поточної ціни до ордера Селл ліміт у пунктах.
  • Stop_Loss_sell_limit- Стоп лосс ордера Селл ліміт.
  • Take_Profit_sell_limit- Тейк профіт ордера Селл ліміт.
  • Slippage- Максимальне прослизання у пунктах.
  • Close_Orders- Закриття другого ордера під час відкриття першого.
  • Times- Час життя ордера за хвилини.
  • Time_Start- Виставити ордери за часом?
  • Time_Hour- Година відкриття ордерів 0-23
  • Time_Minute- Хвилина відкриття ордерів 0 - 59. Наприклад, година = 5, хвилина 40, отже в 5.40 будуть виставлені ордери від ціни в той момент.
  • Expert_I- магік номер для визначення своїх ордерів та мультивалютної торгівлі.

Зі статті ти дізнаєшся:

Доброго дня шановні читачі та гості блогу. Сьогодні ми поговоримо про те, як існують допоміжні радники, які виставляють ордери за часом по ринку та відкладені, а також як закриття угод.

Кращий брокер

Радник, який відкриває накази щогодини або за часом – це інструмент, який допомагає у різних трейдерських ситуаціях. Загалом, наскільки я можу судити, інтерес до таких радників, які роблять подібні дії, існує давно. І в 2006 були такі роботи і в 2008 за запитами можна відстежити інтерес до них, і зараз прохання виготовити таких експертів продовжують з'являтися. При цьому часто досвідчені трейдери, та не просто трейдери, а ті, хто займається, допомагають новачкам. Це загалом, хороша традиція. Зазвичай вона ґрунтується на взаємному обміні. Новачок постачає ідеї, а досвідчений отримує право користуватися цією ідеєю і створює код експерта, яким ділиться зі своїм партнером.

Коли з'являються умови для використання цих експертів

Однак ближче до діла! Моя сьогоднішня розповідь – це історія про експерта для розміщення наказів у потрібний момент. Використовують його для різних цілей. Наприклад, існують торгові системи, які жорстко прив'язуються до початку свічки чи сесії. Наприклад, існує і, за моїми скромними дослідженнями, певна подібність таких хвиль існує насправді, проте вони проявляються на різних таймфреймах, і існують різний за тривалістю період. Можна, наприклад, знайти їх на USDCAD Mn.

Там є свічки, які дуже схожі один на одного щомісяця. У січні, наприклад, протягом, наприклад, шести років спостерігається висхідний тренд або низхідний не в цьому суть. Для того, щоб отримати дохід від використання цього підходу, потрібно розмістити наказ у певному методом дослідження напрямі на початку місяця та видалити наприкінці і так робити лише у певні місяці на рік. Ось якраз для цього експерт і розміщує накази за датою годин і хвилин.

Експерт, який віддає накази у потрібний час, також реалізує інші завдання, наприклад, відомо, що завтра на ринку буде тренд і торгова ідея передбачає, що потрібно займати позиції на кожній годинній свічці у напрямку тренда. А зняти накази треба наприкінці торговельного дня.

Таким чином, з'являтимуться накази у вигляді такої сітки. Як це роблять по-іншому, можна подивитися на сторінці, де . До кінця робочого дня відбувається видалення, теж у потрібний момент, buy-, sellstop наказів або по ринку.

Чому так? Тому що такий підхід я зустрічав у такій модифікації: розміщення наказів на кожній свічці ринковим наказом або також на кожній свічці, але buy-, sellstop-ами у протилежні сторони. У другому випадку, навіть можна не знати в який бік рушить ринок, а просто ловити рух, ніби метелика сачком. Також при розміщенні buy-, sellstop-ів наказів в обидві сторони, можливо, до кінця дня один з них не відкриється і так і залишиться висіти.

завантажити

Отже, стає зрозуміло, що на сьогодні існують три типи допоміжних експертів даному контексті.

  1. Перший тип – це експерт розміщення наказів по ринку з урахуванням певних годин та хвилин,
  2. Другий тип – це експерт відкладених наказів за годинами та хвилинами.
  3. Третій тип може реалізовуватися всередині перших двох або бути окремою програмою. У прикладі саме так.

Експерт наказів з ринку

Коли ви знаєте, що висхідний тренд почнеться о 23:50, так що ціна обов'язково пройде 60 пунктів, при стоплоссі 30 пунктів, і у вас є експерт, який витрачатиме стоплос, так що вам знадобиться наказу. При цьому ви будете не далеко, так що звук, що сповіщає відкриття буде доречним. За таких умов вам знадобиться перший тип експерта. У даному випадку- Це експерт e-OpenByTime. Цей експерт, якого можна завантажити за допомогою соціальних кнопок, має наступні параметри:

  • TimeTrade – тут задається точний момент, коли наказ має бути відкритим. Формат даних чч: мм.
  • Duration – період за секунди протягом якого експерт проводитиме спроби розмістити наказ.
  • Sell ​​- тут потрібно вказати тип наказу true - означає, що відкриється наказ ринку на продаж активу. Значення false відповідає наказу купівлю.
  • Lots – цей параметр обмежить ваш торговий лот заданим значенням.
  • SopLoss – стоплос розрахований на чотиризнакових брокерів, тому для того, щоб визначити його розмір у 30 пунктів, потрібно встановити значення 300
  • TakeProfit – з тейком профітом така ж історія.
  • MagicNumber – гадаю, тут все зрозуміло.
  • UseSound – далі йдуть налаштування звуку.
  • NameFileSound – тут вибираємо звуковий файл.
  • З налаштувань, що залишилися, може викликати питання тільки MaketWatch. Виявляється, ця настройка потрібна для того, щоб торгові запити надсилалися за правилами Market Watch, які вимагають деяких брокерів.

Експерт відкладених наказів

Другий вид експертів, які працюю на відкритті відкладених наказів – це експерти для різних коробкових торгових систем. Подібні

На цей раз, я опишу експерта, так скажімо, допоміжного, який буде без огляду на тренди та інші ознаки графіка відкривати дві buy-, sellstop угоди в обидва напрямки.

Йдеться про експерта 37_Exp-TimeOpenBuy. Налаштування досить просте.

  • BuyStopOpen і SellStopOpen – обидва у разі визначаються у значенні – true.
  • Distance – визначає, на якій відстані від поточної ціни будуть розміщені ці накази. Зверніть увагу, що значення тут і в наступному рядку розраховане для чотиризначного брокера, тому для встановлення відстані потрібно використовувати число, наприклад, 30 пунктів і додавати ще один 0 наприкінці.
  • TPBuyStop, SLBuyStop, TPSellStop, SLSellStop – дозволяють визначити, яка відстань до тейкпрофіту та стоплосу за кожним наказом. (Тут теж до числа додаємо нуль в кінці.)
  • CloseAfterOpen - дозволяє видалити угоду, яка залишилася після того, як спрацював один з buy-, sellstop-ів ордерів.
  • Slippage – налаштування, яке на мій досвід має бути визначено на будь-яку величину крім нуля, щоб ордери змогли розміститися. Це величина максимального прослизання.
  • CloseIfNotOpen – замислювалася, як функція, яка видаляє всі непрацюючі buy-, sellstop-и на новому часі. Однак, як я не намагався задіяти цю операцію, нічого з цього не вийшло.
  • Інші налаштування потрібні для того, щоб визначити момент входу в ринок виходу з нього.

Експерт видаляє відкладники

Нарешті третій радник, який виконує за допомогою мною складеного коду mql4, видалення buy-, за часом, точніше всіх з них. Загалом, тепер у вас буде повний фарш радники для розміщення buy-, sellstop ордерів і ринку і експерта, який виконає закриття ордерів за часом. Для цього перед циклом, який просто за фактом закриває buy-, sellstop ордери або правильніше буде сказати: видаляє їх, потрібно виконати перевірку if (TimeCurrent()>=BlackTime). При цьому змінній надається час, після якого ордери видаляються.

Висновки

Сьогодні ми познайомилися з дуже корисним набором допоміжних радників, яких можна застосовувати у різних ринкових умовах. Для їх використання знадобиться швидке налаштування та якийсь прогноз щодо ринку. В результаті їх використання ви зможете організувати цілком собі самостійну та майже повністю автоматичні входи та виходи. Я навіть сказав би, що все відбуватиметься автоматично, але тільки в рамках парочки дій, потім налаштування експертів доведеться змінювати. Тим не менш, це вже хороша підмога тим, хто не має часу без обмеження сидіти перед монітором. На цьому все, дорогі друзі. Сподіваюся, вам була цікава ця сторінка.

(2 оцінок, середнє: 5,00 із 5)

Ви напевно помічали, що угоди у певні дні або навіть годинник завдають збитків. Наприклад - це можуть бути угоди в п'ятницю ввечері, результат яких при переносі через вихідні часто непередбачуваний. Як бути? Вручну вмикати та вимикати радник? Це не дуже зручно, та й усі ми люди – можна просто забути це зробити.

Вирішення проблеми - допоміжний радник Trade Scheduler, що дозволяє обмежити час роботи інших експертів за встановленим трейдером розкладом. Наприклад, можна обмежити торгівлю роботів з 7 до 11 години понеділка. Дана розробка - від наших друзів з ArgoLab і сьогодні ми докладно познайомимося з нею.

Аналіз статистики

Перед тим, як обмежувати роботу радника, потрібно спочатку визначити, у який час стратегія дає слабину. Для цього можна скористатися одним із сервісів моніторингу, таким як myfxbook, який надає детальну статистику торгівлі за часом. Щоб аналіз був достовірним, бажано мати статистику торгів хоч би за три місяці.

Отже, для початку потрібно буде завести моніторинг на myfxbook. Про те, як це зробити, на нашому сайті є . За приклад візьмемо моніторинг радника Forex Hunter.

Також на сайт можна завантажити звіт із тестера стратегій. Це в першу чергу потрібно тим, хто ще не має достатньої кількості напрацьованої історії на реальному рахунку, але є робот, який можна протестувати в тестері. Як це зробити, знову ж таки, читайте вокремій статті .

Далі, після того як моніторинг був завантажений та оброблений, переходимо до розділу розширеної статистики, у вкладку “Щодня”. Тут відображається кількість прибуткових та збиткових угод по днях тижня. Як бачимо, у четвер та п'ятницю найбільша відносна кількість збиткових угод - 73% та 74%, відповідно. Це означає, що стан ринку в ці дні не підходить для цієї стратегії, прогнози менш точні та радник втрачає гроші. Для покращення ефективності автоматичної стратегії розумно забрати ці дні з торгівлі.

Потім дивимося статистику щогодини. Стрілки на скріншоті позначені годинник з найбільшою кількістю збиткових угод. Крім того, що в нічний період (переважно азіатська сесія) угод не лише набагато менше, ніж у середині дня, а й якість входів також бажає найкращого.

Отже, якщо ми блокуватимемо роботу радника у четвер та п'ятницю, залишивши працювати в решту днів з 11 до 19 години, результат гарантовано покращиться.

Налаштування радника для змін у вказаному прикладі виглядатимуть так:


Встановлення та налаштування

Встановлення радника відбувається стандартним чином. Відкриваємо каталог даних терміналу через Файл - Відкрити каталог даних і переходимо в каталог MQL4 - Experts. Сюди копіюємо завантажений файл радника з розширенням “.ex4”. Щоб радник з'явився у вікні навігатора, перезавантажте термінал.

У налаштуваннях потрібно вказати час роботи відповідно до днів тижня. На кожен із днів передбачено три вхідні параметри. Перший відповідає за включення/відключення торгівлі у певний день, другий – за час старту торгівлі, третій – час завершення торгівлі. Час можна вказати з точністю до хвилини. Час початку може бути більше часу закінчення, наприклад, 19:00 та 9:00. У такому разі торгівля буде дозволена з 00:00 до 9:00 та з 19:00 до 24:00.

Додатковий параметр CloseBeforeSwitchOFF відповідає за закриття всіх позицій одразу перед вимкненням автоторгівлі. Усього параметр може приймати три значення: No - позиції не закриваються; CloseAllProfitable - закриваються лише прибуткові; CloseAll - вихід зі всіх відкритих позицій. Параметр slip відповідає за максимальне прослизання.


Не забудьте дозволити автоторгівлю та імпорт функцій із DLL бібліотек.

Час потрібно вказувати, орієнтуючись на термінал, який відображається в заголовку вікна огляду ринку. Воно ж час вашого брокера.

Також не намагайтеся встановити кілька екземплярів радника на одному рахунку – достатньо лише одного екземпляра. В іншому випадку жоден з них не правильно працюватиме.

Висновок

Обмеження роботи за часом - це найпростіший і ефективний спосібпокращити показники вашої торгівлі. Наприклад, якщо радник стабільно зливає з 4-х до 8-ми, значить на ринку є інша закономірність, обробити яку робот не в силі. Просто не торгуючи у цей період – ви збільшуєте загальну рентабельність та розвантажите депозит від зайвих угод.

Тема на форумі

З повагою, Олексій Вергунов
TradeLikeaPro.ru

Джерело http://tradelikeapro.ru/sovetnik-tradescheduler/

Якщо ваша торгова системане базується на скачках новин, то буває дуже корисно для фінансового та ментального здоров'я зупиняти роботу радника перед виходом важливих новин. А після устаканивания волатильності, за кілька годин, заново його включати. Добре, якщо у вас є під рукою доступ до робочого терміналу. А якщо немає? Ось тут і знадобиться автоматизація такої діяльності.

Одним із варіантів вирішення нашого завдання є складання файлу з розкладом важливих подій. Читання цього файлу нашим експертом, і визначення коли можна працювати, а коли ні. У підручнику MQL4 наводиться приклад роботи з текстовим файлом csv, його ми і візьмемо за основу, попутно позбавившись пари помилок, яких автори припустилися ненавмисно або з метою перевірки нашої уважності (про що вони самі попереджають — не слід сліпо вірити нікому, помилки бувають завжди).

Отже, складемо розклад важливих подій наступного тижня у наступному форматі:
Дата та час події; інструмент; опис події

2016.04.01 14:00; USD; Індекс ділової активності ISM у виробничому секторі 2016.04.01 14:00; USD; Індекс поступового розгону інфляції від ISM 2016.04.04 09:00; EUR; 04 09:00; EUR; Індекс цін виробників (р/р) 2016.04.05 04:30; AUD; Рішення Резервного БанкуАвстралії за процентною ставкою 2016.04.05 04:30; AUD; Супровідна заява Резервного Банку Австралії 2016.04.06 07:00; EUR; відкритим ринкамФРС США 2016.04.07 11:30; EUR; Відомості про засідання ЄЦБ з монетарної політики

Запишемо його у файл ht-news.csv і розмістимо в потрібній директорії \MQL4\Files\ht-news.csv, звідки наш радник зможе його прочитати.

Спочатку задамо зовнішні змінні для налаштування, коментарі пояснюють їхнє призначення:

Extern string startNewsEvent="Обмеження роботи з новинами"; input bool StopOnNewsEvent=true; //Включити обмеження input string NewsEventFileName="ht-news.csv"; //Файл з розкладом input uint LoadNewsEventTimerInDay=7;//Як часто днями перезавантажувати файл input uint StopPriorEventHours=2; //Зупинити за Х годин до події input uint StartAfterEventHours=3; //Запустити через Х годин після події extern string stopNewsEvent="----------------";

Наступна структура допоможе нам отримати доступ до опису події, що обробляється:

Struct NEWS_EVENT ( datetime EventTime; //час настання події string Instrument; //інструмент події string EventComment; //коментар події );

Функція читання інформації з файлу

Bool LoadNews() ( int handle; // Файловий описувач string instrument, // Назва валюти події firstInstrument,secondInstrument, // 1я і 2я частина назви поточної пари eventComment, // Текст опису події stringDateTime; // Строковий вираз дати та часу події datetime eventDateTime; // Дата та час події у форматі datetime handle=FileOpen(NewsEventFileName,FILE_CSV|FILE_READ,";");// Відкриття файлу if(handle<0) // Неудача при открытии файла { int lastError=GetLastError(); if(lastError==4103) // Если файла не существует, сообщим Alert("Нет файла с именем ",NewsEventFileName); else // При любой другой ошибке Alert("Ошибка при открытии файла ",NewsEventFileName," :",lastError); PlaySound("Bzrrr.wav"); // Громко ругнемся и вернем фалсе return false; } int cnt=0; while(FileIsEnding(handle)==false) { stringDateTime =FileReadString(handle);// Дата и время события instrument=FileReadString(handle); //Инструмент eventComment =FileReadString(handle);// Текст описания события, может не быть eventDateTime =StrToTime(stringDateTime); // Преобразование типа данных firstInstrument=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа secondInstrument=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа if(StringCompare(instrument,firstInstrument,false)!=0 && StringCompare(instrument,secondInstrument,false)!=0) { continue; //не наши инструменты } cnt++; ArrayResize(NewsEvent,cnt,1000); //изменяем размер массива с запасом для ускорения ArrayResize(NewsEventTime,cnt,1000); NewsEvent.EventTime= eventDateTime; NewsEvent.Instrument=instrument; NewsEvent.EventComment=eventComment; NewsEventTime=eventDateTime; //удобнее искать в одномерном массиве } FileClose(handle); // Закрываем файл ArraySort(NewsEventTime,WHOLE_ARRAY,0,MODE_ASCEND); //сортируем массив для последующего поиска return true; }

Пошук потрібного часу здійснюємо в масиві NewsEventTime, і якщо знайдено час, то отримаємо його опис їх масиву структури NewsEvent

String GetEventInfo(datetime date) ( for(int i=0;i

Допоміжна функція визначення, чи потрапляє поточний час у проміжок простою

//перевіримо, чи не потрібно відключити радник по новині True -працюємо False - відпочиваємо bool //тепер потрібно знайти найближчу дату в NewsEventTime перед якою потрібно зупинити роботу за StopPriorEventHours годин datetime timeCurrent=TimeCurrent(); ArrayBsearch(NewsEventTime,timeStopWork,WHOLE_ARRAY,0,MODE_ASCEND); datetime foundEventTime; час закінчення відпочинку / /тепер перевіримо, чи ми зараз timeCurrent між timeStopWork і timeStartWork.<=timeStartWork) { DrawLabel("EnableNewsWork","Не работаем, новость: "+GetEventInfo(foundEventTime)+"",5,80,Red); return false; } else { DrawLabel("EnableNewsWork","Нормальная работа, новостей нет",5,80,Green); return true; } }

Для періодичного читання з файлу з розкладом нам потрібен таймер, що запускається наприклад раз на тиждень, як налаштовано

//Перевіряємо наявність файлу з новинами за таймером void OnTimer() ( if (StopOnNewsEvent) ( LoadNews(); //читаємо файл ) )

При ініціалізації радника потрібно запустити таймер і вперше прочитати новини

OnInit(). :",GetLastError()); OnTimer();//Перший запуск відразу )

У кожному тику перевіряємо, чи можемо ми відкривати позиції. На трейлінг, до речі, це впливати не повинно.

OnTick() .... bool enableNewsWork=true; //можна працювати за подіями новин if (StopOnNewsEvent) (enableNewsWork=CheckEnableNewsWork(); //Якщо обмеження за новинами, перевіримо час ) if (HaveMoney && enableNewsWork) Traiding(Pairs); //перевірка умов та відкриття торгівлі по парі

От і все. На жаль, на реальному рахунку я цей код поки не тестував, тому що писав у вихідні, тики емулював таймером і час, який зупиняється у вихідні, змінював вручну. Але наступного тижня подивлюся вже в реалі, в новій версії. Forex Grail 1.11, куди я і вбудував вищенаведений код.

Надалі, можливо, потрібно зробити зручну утиліту для формування файлу ht-news.csv, наприклад, у тій же