Цей радникідеально підходить для тих, хто торгує за рівнями та будь-якими стратегіями, що використовують відкладені лімітні ордери. Радник виставить ордери в потрібний часна потрібній відстані від поточної ціни! В налаштуваннях робота Ви можете задати стоп лоси, тейк профіти ордерів, а також лот кожного ордеру. Все визначається для кожного ордера окремо. Можна виставляти тільки бай ліміт, або сел ліміт, або обидва ордери разом!
Радник готовий працювати на будь-якому торговому інструменті, в будь-якому торговому терміналі Metatrader 4. Так само робот готовий працювати на кількох валютних парахвідразу. Тобто Ви можете відкрити будь-яку кількість пар і встановити на них радник, задавши кожному свій магік номер та налаштування часу. Після чого кожна пара працюватиме строго індивідуально. Якщо Ви досі працюєте з лімітними ордерами вручну, то цей робот для Вас!
Зі статті ти дізнаєшся:
Доброго дня шановні читачі та гості блогу. Сьогодні ми поговоримо про те, як існують допоміжні радники, які виставляють ордери за часом по ринку та відкладені, а також як закриття угод.
Радник, який відкриває накази щогодини або за часом – це інструмент, який допомагає у різних трейдерських ситуаціях. Загалом, наскільки я можу судити, інтерес до таких радників, які роблять подібні дії, існує давно. І в 2006 були такі роботи і в 2008 за запитами можна відстежити інтерес до них, і зараз прохання виготовити таких експертів продовжують з'являтися. При цьому часто досвідчені трейдери, та не просто трейдери, а ті, хто займається, допомагають новачкам. Це загалом, хороша традиція. Зазвичай вона ґрунтується на взаємному обміні. Новачок постачає ідеї, а досвідчений отримує право користуватися цією ідеєю і створює код експерта, яким ділиться зі своїм партнером.
Однак ближче до діла! Моя сьогоднішня розповідь – це історія про експерта для розміщення наказів у потрібний момент. Використовують його для різних цілей. Наприклад, існують торгові системи, які жорстко прив'язуються до початку свічки чи сесії. Наприклад, існує і, за моїми скромними дослідженнями, певна подібність таких хвиль існує насправді, проте вони проявляються на різних таймфреймах, і існують різний за тривалістю період. Можна, наприклад, знайти їх на USDCAD Mn.
Там є свічки, які дуже схожі один на одного щомісяця. У січні, наприклад, протягом, наприклад, шести років спостерігається висхідний тренд або низхідний не в цьому суть. Для того, щоб отримати дохід від використання цього підходу, потрібно розмістити наказ у певному методом дослідження напрямі на початку місяця та видалити наприкінці і так робити лише у певні місяці на рік. Ось якраз для цього експерт і розміщує накази за датою годин і хвилин.
Експерт, який віддає накази у потрібний час, також реалізує інші завдання, наприклад, відомо, що завтра на ринку буде тренд і торгова ідея передбачає, що потрібно займати позиції на кожній годинній свічці у напрямку тренда. А зняти накази треба наприкінці торговельного дня.
Таким чином, з'являтимуться накази у вигляді такої сітки. Як це роблять по-іншому, можна подивитися на сторінці, де . До кінця робочого дня відбувається видалення, теж у потрібний момент, buy-, sellstop наказів або по ринку.
Чому так? Тому що такий підхід я зустрічав у такій модифікації: розміщення наказів на кожній свічці ринковим наказом або також на кожній свічці, але buy-, sellstop-ами у протилежні сторони. У другому випадку, навіть можна не знати в який бік рушить ринок, а просто ловити рух, ніби метелика сачком. Також при розміщенні buy-, sellstop-ів наказів в обидві сторони, можливо, до кінця дня один з них не відкриється і так і залишиться висіти.
Отже, стає зрозуміло, що на сьогодні існують три типи допоміжних експертів даному контексті.
Коли ви знаєте, що висхідний тренд почнеться о 23:50, так що ціна обов'язково пройде 60 пунктів, при стоплоссі 30 пунктів, і у вас є експерт, який витрачатиме стоплос, так що вам знадобиться наказу. При цьому ви будете не далеко, так що звук, що сповіщає відкриття буде доречним. За таких умов вам знадобиться перший тип експерта. У даному випадку- Це експерт e-OpenByTime. Цей експерт, якого можна завантажити за допомогою соціальних кнопок, має наступні параметри:
Другий вид експертів, які працюю на відкритті відкладених наказів – це експерти для різних коробкових торгових систем. Подібні
На цей раз, я опишу експерта, так скажімо, допоміжного, який буде без огляду на тренди та інші ознаки графіка відкривати дві buy-, sellstop угоди в обидва напрямки.
Йдеться про експерта 37_Exp-TimeOpenBuy. Налаштування досить просте.
Нарешті третій радник, який виконує за допомогою мною складеного коду 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, наприклад, у тій же