Trade Scheduler - ograničavanje rada savjetnika. Kako ograničiti vrijeme trgovanja Forex savjetnicima? Mql4 stručni savjetnik radi određenim danima
Postizanje uspjeha na Forex tržištu danas je gotovo nemoguće uzeti u obzir stabilne obrasce ponašanja cijena, koji se mogu izraziti u bilo kojem njegovom djelovanju.
Jedan od takvih upečatljivih obrazaca, koji je poznat gotovo svakom trgovcu, očituje se u aktivnosti cijene u određeno doba dana.
Zapravo, to je razlog zašto većina savjetnika i strategije trgovanja, danas su obdareni trgovačkim filterom prema vremenu, kada trgovac zabranjuje trgovanje strategijom u nepovoljnom vremenskom razdoblju.
Trgujte visoko samo s vodećim brokerom
Međutim, faktor vremena često može biti uzorak signala, a trgovac ga mora nekako implementirati.
Prirodno je stalno biti za monitorom u određeno vrijeme s točnošću od sekunde kako bi se otvorila planirana pozicija nije uvijek moguće.
Zato trgovci koriste posebne skripte i savjetnike koji vam omogućuju otvaranje pozicije u određeno vrijeme za njih. Zapravo, u ovom članku ćemo se upoznati s jednim od ovih savjetnika.
OpenTime 2 Time Advisor je potpuno neovisan trgovački stručnjak za trgovački terminal MT5, koji vam omogućuje implementaciju strategija temeljenih na obrascima kretanja cijena u određeno doba dana.
Značajna značajka OpenTime 2 je činjenica da funkcionalnost robota omogućuje da ga u potpunosti napravite neovisni stručnjak i pronađite obrasce kretanja cijene na određenoj imovini pomoću optimizacije.
Dakle, trgovac može kreirati strategije temeljene na vremenskim obrascima, kao i koristiti ga kao pomoćnika za implementaciju svojih ideja, na primjer, za otvaranje poslova tijekom objava vijesti (trgovanje prema očekivanjima).
Instaliranje skripte na grafikon.
Prva verzija Time Advisora za trgovački terminal MT5 razvijena je još 2017. godine, međutim, funkcionalnost robota bila je toliko ograničena da se može sa sigurnošću pripisati jednostavnim skriptama, a ne punopravnim robotima.
Međutim, nakon proširenja funkcionalnosti 2018., slijedeći preporuke mnogih trgovaca, robot ne samo da je stekao popularnost, već su dvije njegove verzije objavljene u službenoj biblioteci MT5 programera.
Dakle, savjetnik se može instalirati na dva načina, odnosno kroz knjižnicu u vašem MT5, ili putem imenika podataka prema standardnoj shemi.
Da biste instalirali savjetnika kroz knjižnicu, pokrenite svoj MT5 trgovački terminal i prijeđite na ploču "Alati", gdje možete pronaći informacije o svojim pozicijama i saldu.
Zatim prijeđite na karticu "Knjižnica" i izvršite jednostavno sortiranje tako da se na popisu pojavljuju samo savjetnici.
Nakon što sortirate popis, pronađite u njemu savjetnik za vrijeme OpenTime 2 i učitajte ga pomoću dodatnog izbornika kao što je prikazano na donjoj slici:
Ako je instalacija na ovaj način izazvala poteškoće, idite na kraj članka i preuzmite robotsku datoteku koju ćete instalirati prema standardnoj shemi.
Da biste to učinili, samo trebate ispustiti preuzetu datoteku robota u direktorij terminala MT5, odnosno u mapu Experts.
Bez obzira na metodu instalacije koju ste odabrali, nakon instalacije stručnjaka morate ponovno pokrenuti trgovački terminal ili ga ažurirajte na ploči Navigator, inače se OpenTime 2 neće pojaviti na popisu stručnih savjetnika.
Primjena OpenTime 2 Time Advisor
Kao što smo napomenuli na samom početku članka, OpenTime 2 savjetnik za vrijeme je pomoćnik koji vam omogućuje implementaciju strategija temeljenih na obrascima kretanja cijena u određeno doba dana.
Druga verzija robota postala je autonomnija i fleksibilnija, što vam omogućuje pažljivije konfiguriranje sustava za otvaranje i praćenje transakcija.
Tako u redovima Koristi vremenski interval zatvaranja i Vremenski interval zatvaranja #2 možete dati dopuštenje za prijevremeno zatvaranje poslova za prvi i drugi vremenski interval, dok se vrijeme za svaki od intervala zatvaranja može postaviti u redovima Vremenski interval zatvaranja 1 ,2.
Varijabla Trailing stop omogućuje vam da aktivirate trailing stop, dok je korak kretanja stop specificiran u retku Trailing step.
U varijablama Trgovina ponedjeljak - petak možete onemogućiti trgovanje na određeni dan u tjednu, a u linijama Interval vremena početka otvaranja i intervala završetka otvaranja možete postaviti vremenski period tijekom kojeg se pozicija treba otvoriti.
Varijabla Trajanje u sekundama odgovorna je za vrijeme održavanja otvorene pozicije, a u retku Vrsta trgovine u vremenskom intervalu možete odrediti smjer trgovine, odnosno kupnju ili prodaju.
Varijabla Volume transakcije odgovorna je za trgovački lot otvorenog naloga, a u varijablama StopLoss vremenskog intervala i TakeProfit vremenskog intervala možete odrediti profit i stop nalog za svoju poziciju.
Zaključno, vrijedno je napomenuti da je OpenTime 2 vremenski savjetnik napredniji i autonomniji pomoćnik koji vam omogućuje implementaciju strategija na temelju otvaranja pozicija u određeno doba dana.
Vjerojatno ste primijetili da transakcije određenim danima ili čak satima donose gubitak. Na primjer, to mogu biti transakcije u petak navečer, čiji je rezultat, kada se prenese kroz vikend, često nepredvidiv. Kako biti? Ručno omogućiti i onemogućiti savjetnika? Ovo nije baš zgodno, a svi smo mi ljudi - možete jednostavno zaboraviti to učiniti.
Rješavanje problema - pomoćni savjetnik Planer trgovine, što vam omogućuje da ograničite vrijeme rada ostalih stručnih savjetnika prema rasporedu koji odredi trgovac. Na primjer, možete ograničiti trgovanje robotom od 7 do 11 sati u ponedjeljak. Ovaj razvoj je od naših prijatelja iz ArgoLab i danas ćemo se s njim detaljno upoznati.
Statistička analiza
Prije nego što ograničite rad savjetnika, prvo morate odrediti u kojem trenutku strategija odustaje. Da biste to učinili, možete koristiti jednu od usluga za praćenje, kao što je myfxbook, koja daje detaljnu statistiku trgovanja tijekom vremena. Kako bi analiza bila pouzdana, poželjno je imati statistiku trgovanja najmanje tri mjeseca.
Dakle, za početak, morate početi pratiti na myfxbook. Za informacije o tome kako to učiniti, pogledajte našu web stranicu. . Za primjer, uzmimo praćenje savjetnika Forex lovac.
Također možete prenijeti izvješće testera strategije na web-mjesto. Prije svega, to je potrebno za one koji još nemaju dovoljno akumulirane povijesti na stvarnom računu, ali postoji robot koji se može testirati u testeru. Kako to učiniti, pročitajte opetzaseban članak .
Nadalje, nakon što je praćenje učitano i obrađeno, idite na odjeljak proširene statistike, na karticu "Dnevno". Prikazuje broj profitabilnih i gubitke obrta po danima u tjednu. Kao što vidite, u četvrtak i petak najveći relativni broj izgubljenih poslova iznosi 73%, odnosno 74%. To znači da tržišni uvjeti ovih dana nisu prikladni za ovu strategiju, prognoze su manje točne i EA gubi novac. Za poboljšanje učinkovitosti automatska strategija razumno je ove dane ukloniti iz trgovanja.
Zatim gledamo statistiku po satu. Strelice na snimci zaslona označavaju sate s najvećim brojem izgubljenih poslova. Uz činjenicu da tijekom noćnog razdoblja (uglavnom azijske sesije) ima ne samo puno manje transakcija nego usred dana, već i kvaliteta unosa ostavlja mnogo za poželjeti.
To znači da ako blokiramo rad stručnog savjetnika u četvrtak i petak, ostavljajući ga da radi ostalim danima od 11 do 19 sati, rezultat će se zajamčeno poboljšati.
EA postavke za promjene u ovom primjeru izgledat će ovako:
Instalacija i postavljanje
Savjetnik se instalira na standardni način. Otvorite imenik podataka terminala putem File - Open data directory i idite na direktorij MQL4 - Stručnjaci. Ovdje kopiramo prethodno preuzetu datoteku stručnog savjetnika s nastavkom “.ex4”. Da bi se Stručni savjetnik pojavio u prozoru Navigatora, ponovno pokrenite terminal.
U postavkama morate odrediti vrijeme rada prema danima u tjednu. Postoje tri ulazna parametra za svaki dan. Prvi je odgovoran za omogućavanje/onemogućavanje trgovanja na određeni dan, drugi - za vrijeme početka trgovanja, treći - za završetak trgovanja. Vrijeme se može odrediti do najbliže minute. Vrijeme početka može biti duže od vremena završetka, na primjer 19:00 i 9:00. U tom slučaju, trgovanje će biti dopušteno od 00:00 do 9:00 i od 19:00 do 24:00 sata.
Dodatni parametar CloseBeforeSwitchOFF odgovoran je za zatvaranje svih pozicija neposredno prije isključivanja automatskog trgovanja. Ukupno, parametar može imati tri vrijednosti: Ne - pozicije nisu zatvorene; CloseAllProfitable - zatvaraju se samo profitabilni; CloseAll - izlaz iz svih otvorenih pozicija. Parametar slip je odgovoran za maksimalno klizanje.
Nemojte zaboraviti omogućiti automatsko trgovanje i funkcije uvoza iz DLL biblioteka.
Vrijeme se mora navesti, fokusirajući se na vrijeme terminala, koje je prikazano u naslovu prozora Market Watch. Vrijeme je vašeg brokera.
Također, nemojte pokušavati instalirati više instanci savjetnika na jedan račun - dovoljna je samo jedna instanca. Inače, nijedan od njih neće raditi ispravno.
Zaključak
Ograničavanje rada vremenom je najjednostavnije i najviše učinkovita metoda poboljšati svoju izvedbu trgovanja. Na primjer, ako se savjetnik dosljedno spaja od 4 do 8, tada na tržištu postoji drugačiji obrazac koji robot ne može obraditi. Samo ne trgovati tijekom ovog razdoblja - povećavate ukupnu profitabilnost i rasterećujete depozit od nepotrebnih transakcija.
Tema na forumu
S poštovanjem, Alexey Vergunov
TradeLikeaPro.ru
Izvor http://tradelikeapro.ru/sovetnik-tradescheduler/
Ako tvoj trgovački sustav ne temelji se na skokovima vijesti, može biti vrlo korisno za financijsko i mentalno zdravlje zaustaviti rad savjetnika prije objave važnih vijesti. A nakon što se volatilnost smiri, nakon nekoliko sati, ponovno ga uključite. Dobro je ako imate pristup radnom terminalu pri ruci. A ako ne? Ovdje automatizacija dobro dolazi.
Jedna od opcija za rješavanje našeg problema je sastavljanje datoteke s rasporedom važnih događaja. Naš stručnjak je pročitao ovu datoteku i odredio kada je moguće raditi, a kada ne. MQL4 tutorial daje primjer rada s csv tekstualnom datotekom, koju ćemo uzeti kao osnovu, riješiti se nekoliko pogrešaka koje su autori napravili nenamjerno ili kako bismo testirali našu pažnju (na što sami upozoravaju – trebali biste ne vjerujte slijepo nikome, greške se uvijek događaju).
Dakle, napravimo raspored važnih događaja za sljedeći tjedan u sljedećem formatu:
Datum i vrijeme događaja; alat; opis događaja
2016.04.01 14:00;USD;Indeks poslovnih aktivnosti ISM u proizvodnom sektoru 2016.04.01 14:00;USD;Indeks postupnog ubrzanja inflacije od ISM 2016.04.04 09:00;EUR;Indeks cijena proizvođača.01 (mom.04) 09:00;EUR;Indeks proizvođačkih cijena (g/g) 2016.04.05 04:30;AUD;Odluka o kamatnoj stopi Rezervne banke Australije 2016.04.05 04:30;AUD;Popratno izvješće Rezervne banke Australije: 70.4.2016. 00;EUR;Sastanak ECB-a 06.04.2016 18:00;USD;Zapisnik sa sjednice Odbora za otvorena tržišta Federalne rezerve SAD-a 2016.04.07 11:30;EUR;Informacije o Sastanak ECB-a o monetarnoj politici
Zapišimo ga u datoteku ht-news.csv i smjestimo u traženi direktorij \MQL4\Files\ht-news.csv, odakle ga naš EA može pročitati.
Prvo, postavimo vanjske varijable za konfiguraciju, komentari objašnjavaju njihovu svrhu:
Extern string startNewsEvent="Ograničenje rada na vijestima"; unos bool StopOnNewsEvent=true; //Omogući ulazni niz ograničenja NewsEventFileName="ht-news.csv"; //Raspored unosa datoteke uint LoadNewsEventTimerInDay=7;//Koliko često u danima za ponovno učitavanje datoteke unosa uint StopPriorEventHours=2; //Zaustavi X sati prije događaja input uint StartAfterEventHours=3; //Početak X sati nakon događaja extern string stopNewsEvent="----------------";
Sljedeća struktura pomoći će nam pristupiti opisu obrađenog događaja:
Struct NEWS_EVENT ( datetime EventTime; //vrijeme pojave događaja string Instrument; //event instrument string EventComment; //event comment);
Prilagođena funkcija za čitanje informacija iz datoteke
Bool LoadNews() ( int handle; // instrument niza deskriptora datoteke, // naziv valute događaja firstInstrument,secondInstrument, // 1. i 2. dio imena trenutnog para eventComment, // tekst opisa događaja stringDateTime; // Izraz niza datuma i vremena događaja datetime eventDateTime; // Datum i vrijeme događaja u datetime formatu handle=FileOpen(NewsEventFileName,FILE_CSV|FILE_READ,";");// Otvori datoteku 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; }
Tražimo traženo vrijeme u nizu NewsEventTime, a ako se vrijeme pronađe, njegov opis ćemo dobiti iz polja strukture NewsEvent
String GetEventInfo(datum i datum) ( for(int i=0;i Pomoćna funkcija za određivanje pada li trenutno vrijeme unutar razdoblja mirovanja //provjeriti je li potrebno onemogućiti savjetnika na vijestima Istina - radimo False - odmaramo bool CheckEnableNewsWork() ( if (ArraySize(NewsEventTime)==0) vrati true; //iz nekog razloga, raspored Ispostavilo se da je niz prazan, tako da radimo //sada trebate pronaći najbliži datum u NewsEventTime prije kojeg morate zaustaviti rad za StopPriorEventHours sati datetime timeCurrent =TimeCurrent(); datetime timeStopWork=timeCurrent+StopPriorEventHours*3600; / /Ako NewsEventTime ima vrijeme manje od timeStopWork, tada prestani raditi int dateindex= ArrayBsearch(NewsEventTime,timeStopWork,WHOLE_ARRAY,0,MODE_ASCEND); datetime foundEventTime=NewsEventTime; timeStopWork=foundEventTime-StopWork=foundEventTime-StopPrior; stop thetime the*3CalEvent pronađeno vrijeme datetime timeStartWork=foundEventTime+StartAfterEventHours*3600; //ovo je vrijeme završetka odmora / /sada provjerite jesmo li sada timeCurrent između timeStopWork i timeStartWork, ako da, onda ne radi ako (timeCurrent>=timeS vrh Rad && vrijemeTrenutačno<=timeStartWork)
{
DrawLabel("EnableNewsWork","Не работаем, новость: "+GetEventInfo(foundEventTime)+"",5,80,Red);
return false;
}
else
{
DrawLabel("EnableNewsWork","Нормальная работа, новостей нет",5,80,Green);
return true;
}
}
Za povremeno čitanje iz datoteke rasporeda, potreban nam je mjerač vremena koji se pokreće, na primjer, jednom tjedno, kako je konfigurirano //Provjeri prisutnost datoteke s vijestima pomoću timera void OnTimer() ( if (StopOnNewsEvent) ( LoadNews(); //pročitaj datoteku)) Prilikom inicijalizacije savjetnika, morate pokrenuti mjerač vremena i prvi put pročitati vijesti OnInit() .... if (StopOnNewsEvent) //Ako je postavljeno, učitaj datoteku vijesti ( bool tm=EventSetTimer(LoadNewsEventTimerInDay*86400); //pokreni mjerač vremena za učitavanje datoteke rasporeda if (!tm) Alert("EventSetTimer pogreška:",GetLastError()); OnTimer();//Odmah prvo pokretanje) U svakoj kvačici provjeravamo možemo li otvoriti pozicije. Usput, to ne bi trebalo utjecati na praćenje. OnTick() .... bool enableNewsWork=true; //možete raditi na događajima vijesti if (StopOnNewsEvent) ( enableNewsWork=CheckEnableNewsWork(); //Ako je ograničenje na vijestima, provjerite vrijeme ) if (HaveMoney && enableNewsWork) Traiding(pairs); //provjera uvjeta i otvaranje trgovine na par To je sve. Nažalost, ovaj kod još nisam testirao na stvarnom računu, jer sam ga pisao vikendom, emulirao tikete s timerom i ručno mijenjao trenutno vrijeme koje se zaustavlja vikendom. Ali sljedeći tjedan ću pogledati u stvarnom životu, u novoj verziji "Forex Grala 1.11", gdje sam napravio gornji kod. U budućnosti će možda biti potrebno napraviti prikladan uslužni program za generiranje datoteke ht-news.csv, na primjer, u istom Danas ćemo govoriti o robotu Trade Scheduler, koji ima vrlo zanimljivu značajku. Kada koristite automatske sustave u Forex trgovanju, jeste li primijetili da u određenim danima u tjednu ili satima često donose gubitke? Primjerice, prvog dana u tjednu savjetnik otvara vrlo malo obrta, a većina njih je i neisplativa. U takvim slučajevima savjetnik ima smisla isključiti prije subote i uključiti ga u utorak. Ovu jednostavnu operaciju možete izvesti ručno, ali je također lako zaboraviti isključiti ili uključiti savjetnik u pravo vrijeme. Rješenje za ovaj problem (i nekoliko drugih) može biti korištenje robota Trade Scheduler, koji ne trguje sam, ali vam omogućuje da ograničite vrijeme rada ostalih Stručnih savjetnika prema rasporedu, na temelju analize rada ovih Stručnih savjetnika. Prije prilagođavanja privremenog načina rada potrebno je saznati u kojim trenucima često trguje u minusu. U ovom slučaju od pomoći će biti servis MyFXbook, gdje je prikazana detaljna statistika trgovanja sustava po danima u tjednu i satima. Optimalno razdoblje trgovanja za analizu rada sustava je 3 mjeseca. Da biste ga proveli, morate započeti praćenje na usluzi. O instaliranju robota možete pročitati na MyFXbook. Kao primjer, razmotrimo rezultate rada stručnog savjetnika čije praćenje se može pronaći klikom na sliku: Kao opcija za one koji još nemaju dovoljno povijesti trgovanja robota da ga analiziraju na stvarnom računu, ali se u isto vrijeme može testirati, slobodno prenesite izvješće dobiveno od . Nakon učitavanja i obrade praćenja, trebate otići na odjeljak proširene statistike, karticu Dnevni. Ovdje možete pronaći informacije o relativnom iznosu po danu u tjednu. U našem primjeru najveći broj gubitnih poslova pada u četvrtak i petak, što znači da bi bilo razumno suspendirati Stručnog savjetnika ovih dana. Razlog ovakvom ponašanju možda leži u stanju na tržištu koje ovih dana nije prikladno za strategiju robota, a njegovi izračuni su manje točni: Nakon analize po danu, možete analizirati učinkovit rad po satima. Da biste to učinili, idite na karticu Po satu i pogledajte kada je relativni broj izgubljenih trgovina veći: Zaključak: bilo bi razumno zaustaviti proces trgovanja u četvrtak, petak, a za ostale dane blokirati njegov rad u prva dva sata novog dana, te tijekom dana u onim satima kada prevladavaju gubitnički poslovi - posebice u 12, 13, 14 sati u danu. Odnosno, ostavite ga da radi noću od 2 do 8 ujutro uključujući i od 13 do 21 poslijepodne. Rezultat rada savjetnika trebao bi se značajno poboljšati. Instalacija pomoćnog savjetnika Trade Scheduler provodi se po analogiji s bilo kojim drugim savjetnikom, više o tome piše u . Arhivu sa stručnjakom možete preuzeti na donjoj poveznici: preuzimanje datoteka
trade-scheduler.rar (preuzimanja: 147) Raspakirajte arhivu trade-scheduler.rar, kopirajte ekspertnu datoteku TradeScheduler v2.3.ex4 u mapu data_folder\MQL4\Experts\. Za otvaranje kataloga podataka odaberite stavku Otvori katalog podataka s izbornika Datoteka. Zatim se terminal ponovno pokreće i nakon toga savjetnik se može pronaći u prozoru Navigator - Stručni savjetnici. Prilikom instaliranja Stručnog savjetnika na grafikon, potrebno vrijeme rada se postavlja u prozoru postavki po danima u tjednu i satima. Vrijeme se postavlja ovisno o vremenu terminala, to je i vrijeme. Postoje 3 ulazna parametra za svaki dan. Prvi parametar je odgovoran za uključivanje/isključivanje robota na određeni dan u tjednu, drugi parametar je za vrijeme početka trgovanja, a treći je vrijeme zaustavljanja. Vrijeme je navedeno u formatu sati: minute: Također u postavkama postoji dodatni parametar CloseBeforeSwitchOFF. Ako je postavljeno na CloseAll, sve trgovine će se automatski zatvoriti prije nego što se robot isključi. Ako CloseAllProfitable - samo profitabilni nalozi će biti zatvoreni, ako Ne - trgovine neće biti zatvorene. Parametar Slip odgovoran je za maksimalno dopušteno klizanje. Provjerite jesu li automatska trgovina i uvoz funkcija iz DLL-a dopušteni u terminalu. Za jedan terminal instalirana je jedna verzija savjetnika. Želim poboljšati performanse tvoj savjetnik? Isprobajte metodu ograničavanja njegovog rada i analizirajte rezultate. Ako statistika pokazuje da se vaš stručni savjetnik "stalno spaja" u određeno doba dana, to znači da na tržištu postoji obrazac s kojim se ne može nositi. Zaustavite trgovanje u ovom nepovoljnom razdoblju i povećajte njegovu profitabilnost!
Riža. 2. Omjer profitabilnih i neprofitabilnih transakcija Transient Zones 2.0 Expert Advisor za tjedan.
Riža. 3. Relativni broj gubitnih i profitabilnih trgovina po satima. Instaliranje i konfiguriranje stručnjaka.
Riža. 4. Ulazni parametri postavljeni nakon analize stručnog savjetnika. Zaključak.