Osiguranje

Mql4 stručni savjetnik radi određenim danima. Kupite limit i stavite limit u pravo vrijeme. Kada se stvore uslovi za korištenje ovih stručnjaka

Ako tvoj sistem trgovanja nije baziran na skokovima vijesti, može biti vrlo korisno za finansijsko i mentalno zdravlje zaustaviti rad savjetnika prije objavljivanja važnih vijesti. A nakon što se volatilnost smiri, nakon nekoliko sati, ponovo ga uključite. Dobro je ako imate pristup funkcionalnom terminalu pri ruci. A ako ne? Ovdje automatizacija dobro dolazi.

Jedna od opcija za rješavanje našeg problema je sastavljanje datoteke sa rasporedom važnih događaja. Čitanje ovog fajla od strane našeg stručnjaka i utvrđivanje kada je moguće raditi, a kada ne. MQL4 tutorial daje primjer rada sa csv tekstualnom datotekom, koju ćemo uzeti kao osnovu, istovremeno se rješavajući nekoliko grešaka koje su autori napravili nenamjerno ili kako bi testirali našu pažnju (na koju sami upozoravaju - vi ne treba slijepo vjerovati nikome, greške se uvijek dešavaju).

Dakle, napravimo raspored važnih događaja za sljedeće sedmice u sljedećem formatu:
Datum i vrijeme događaja; alat; opis događaja

01.04.2016 14:00;USD;Indeks poslovnu aktivnost ISM u proizvodnom sektoru 2016.04.01 14:00;USD;Indeks postepenog ubrzanja inflacije od ISM 2016.04.04 09:00;EUR;Indeks proizvođačkih cijena (m/m)/d) 2016.04.05 04:30;AUD ;Odluka Rezervna banka Australija po kamatnoj stopi 2016.04.05 04:30;AUD;Propratna izjava Rezervne banke Australije 06.04.2016 07:00;EUR;Sastanak ECB 6.04.2016 18:00;USD;Zapisnik sa sastanka Komiteta za otvoreno tržište Federalne rezerve SAD 2016.04.07 11:30;EUR;Informacija o sastanku ECB-a o monetarnoj politici

Zapišimo ga u datoteku ht-news.csv i smjestimo je u potreban direktorij \MQL4\Files\ht-news.csv, odakle naš EA može to pročitati.

Prvo, postavimo vanjske varijable za konfiguraciju, komentari objašnjavaju njihovu svrhu:

Extern string startNewsEvent="Ograničenje rada na vijestima"; input bool StopOnNewsEvent=true; //Omogući ulazni string ograničenja NewsEventFileName="ht-news.csv"; //Raspored unosa datoteke uint LoadNewsEventTimerInDay=7;//Koliko često u danima za ponovno učitavanje datoteke input 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 će nam pomoći da pristupimo opisu obrađenog događaja:

Struct NEWS_EVENT ( datetime EventTime; //vrijeme pojave događaja string Instrument; //događaj instrument string EventComment; //komentar događaja);

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; // Niski izraz 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 pronađe vrijeme, dobićemo njegov opis iz niza strukture NewsEvent

String GetEventInfo(datum i datum) ( for(int i=0;i

Pomoćna funkcija za određivanje pada li trenutno vrijeme unutar perioda mirovanja

//provjeravamo da li je potrebno onemogućiti savjetnika na vijestima Tačno - radimo False - odmaramo bool CheckEnableNewsWork() (ako (ArraySize(NewsEventTime)==0) vrati true; //iz nekog razloga, raspored Ispostavilo se da je niz prazan, tako da radimo //sada morate pronaći najbliži datum u NewsEventTime prije kojeg morate prekinuti rad za StopPriorEventHours sati datetime timeCurrent =TimeCurrent(); datetime timeStopWork=timeCurrent+StopPriorEventHours*3600; / /Ako NewsEventTime ima vrijeme manje od timeStopWork, onda prestani raditi int dateindex= ArrayBsearch(NewsEventTime,timeStopWork,WHOLE_ARRAY,0,MODE_ASCEND); datetime foundEventTime=NewsEventTime; timeStopWork=foundEventTime-StopWork=foundEventHoursPrior; pronađeno vrijeme datetime timeStartWork=foundEventTime+StartAfterEventHours*3600; //ovo je vrijeme odmora / /sada provjerite da li smo sada timeCurrent između timeStopWork i timeStartWork, ako da onda ne radi ako (timeCurrent>=timeS topWork && timeCurrent<=timeStartWork) { DrawLabel("EnableNewsWork","Не работаем, новость: "+GetEventInfo(foundEventTime)+"",5,80,Red); return false; } else { DrawLabel("EnableNewsWork","Нормальная работа, новостей нет",5,80,Green); return true; } }

Za periodično čitanje iz datoteke rasporeda, potreban nam je tajmer koji radi na primjer jednom sedmično, kako je konfigurirano

//Provjera prisutnosti datoteke s vijestima pomoću tajmera void OnTimer() ( if (StopOnNewsEvent) ( LoadNews(); //pročitaj datoteku ) )

Prilikom inicijalizacije savjetnika potrebno je 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 greška:",GetLastError()); OnTimer();//Odmah prvo pokretanje )

U svakom tiku provjeravamo da li možemo 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 uslova i otvaranje trgovine na paru

To je sve. Nažalost, ovaj kod još nisam testirao na pravom računu, pošto sam ga pisao vikendom, emulirao tikete sa tajmerom i ručno mijenjao trenutno vrijeme koje se zaustavlja vikendom. Ali sledeće nedelje ću pogledati u stvarnom životu, u novoj verziji "Forex Grala 1.11", gde sam napravio gornji kod.

U budućnosti će možda biti potrebno napraviti zgodan uslužni program za generiranje datoteke ht-news.csv, na primjer, u istom

Vjerovatno ste primijetili da transakcije određenim danima ili čak satima donose gubitak. Na primjer, to mogu biti transakcije u petak uveče, čiji je rezultat, kada se prenese preko vikenda, č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 Trade Scheduler, što vam omogućava da ograničite vrijeme rada drugih stručnih savjetnika prema rasporedu koji odredi trgovac. Na primjer, možete ograničiti trgovinu robotima 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 jedan od servisa za praćenje, kao što je myfxbook, koji daje detaljnu statistiku trgovanja tokom vremena. Da bi analiza bila pouzdana, poželjno je imati statistiku trgovanja za najmanje tri mjeseca.

Dakle, za početak, morate započeti praćenje na myfxbook. Za informacije o tome kako to učiniti, pogledajte našu web stranicu. . Na primjer, uzmimo praćenje savjetnika Forex Hunter.

Također možete prenijeti izvještaj od testera strategije na web stranicu. 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 ponovoposeban članak .

Dalje, nakon što je praćenje učitano i obrađeno, idite na odjeljak proširene statistike, na karticu “Dnevno”. Prikazuje broj profitabilnih i gubitnih trgovina po danima u sedmici. Kao što vidite, u četvrtak i petak najveći relativni broj gubitnih poslova iznosi 73% i 74%, respektivno. To znači da tržišni uslovi ovih dana nisu pogodni za ovu strategiju, prognoze su manje tačne i EA gubi novac. Da bi se poboljšala efikasnost automatske strategije, razumno je ove dane ukloniti iz trgovanja.

Zatim gledamo statistiku po satu. Strelice na snimku ekrana označavaju sate sa najvećim brojem izgubljenih trgovina. Pored činjenice da tokom noćnog perioda (uglavnom azijske sesije) nema samo mnogo manje transakcija nego usred dana, već i kvalitet unosa ostavlja mnogo da se poželi.

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 garantovano poboljšati.

EA postavke za promjene u ovom primjeru će izgledati ovako:


Instalacija i podešavanje

Savjetnik se instalira na standardni način. Otvorite direktorij podataka terminala preko File - Open data directory, i idite na direktorij MQL4 - Experts. Ovdje kopiramo prethodno preuzetu datoteku stručnog savjetnika sa ekstenzijom “.ex4”. Da bi se stručni savjetnik pojavio u prozoru Navigatora, ponovo pokrenite terminal.

U postavkama morate odrediti vrijeme rada prema danima u sedmici. 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 na najbliži minut. Vrijeme početka može biti duže od vremena završetka, kao što su 19:00 i 9:00. U ovom slučaju, trgovanje će biti dozvoljeno 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.


Ne zaboravite omogućiti automatsku trgovinu i funkcije uvoza iz DLL biblioteka.

Vrijeme se mora specificirati, fokusirajući se na vrijeme terminala, koje je prikazano u naslovu prozora Market Watch. Vreme je vašeg brokera.

Takođe, ne pokušavajte da instalirate više instanci savetnika na jedan nalog – dovoljna je samo jedna instanca. U suprotnom, nijedan od njih neće raditi ispravno.

Zaključak

Vremensko ograničenje je najlakši i najefikasniji način da poboljšate svoje trgovačke performanse. 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 trgujući u ovom periodu - 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/

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 kojoj njegovoj akciji.

Jedan od takvih upečatljivih obrazaca, koji je poznat gotovo svakom trgovcu, očituje se u aktivnosti cijene u određeno doba dana.

Zapravo, zato većina savjetnika i trgovačkih strategija danas ima filter za trgovanje prema vremenu, kada trgovac zabranjuje trgovanje strategijom u nepovoljnom vremenskom periodu.

Trgujte visoko samo sa vodećim brokerom

Međutim, vremenski faktor često može biti obrazac signala i trgovac ga mora nekako implementirati.

Prirodno je stalno biti za monitorom u određeno vrijeme sa tačnošću od sekunde da bi se otvorila planirana pozicija nije uvijek moguće.

Zato trgovci koriste posebne skripte i savjetnike koji vam omogućavaju da otvorite poziciju u određeno vrijeme za njih. Zapravo, u ovom članku ćemo se upoznati s jednim od ovih savjetnika.

OpenTime 2 Time Advisor je potpuno nezavisni stručnjak za trgovanje za MT5 trgovački terminal, koji vam omogućava da implementirate strategije zasnovane na obrascima kretanja cijena u određeno doba dana.

Značajna karakteristika OpenTime 2 je činjenica da funkcionalnost robota omogućava da ga učinite potpuno nezavisnim stručnjakom i pomoću optimizacije pronađete obrasce kretanja cijena na određenoj imovini.

Dakle, trgovac može kreirati strategije zasnovane na vremenskim obrascima, kao i da ga koristi kao pomoćnika za implementaciju svojih ideja, na primjer, za otvaranje poslova tokom objavljivanja vijesti (trgovanje na očekivanjima).

Instaliranje skripte na grafikonu.

Prva verzija Time Advisora ​​za MT5 trgovački terminal razvijena je još 2017. godine, međutim, funkcionalnost robota je bila toliko ograničena da se može sa sigurnošću pripisati jednostavnim skriptama, a ne punopravnim robotima.

Međutim, nakon proširenja funkcionalnosti 2018. godine, 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 preko biblioteke u vašem MT5, ili preko direktorija podataka prema standardnoj šemi.

Da biste instalirali savjetnika kroz biblioteku, pokrenite svoj MT5 trgovački terminal i prijeđite na panel "Alati", gdje možete pronaći informacije o svojim pozicijama i bilansu.

Zatim prijeđite na karticu "Biblioteka" i izvršite jednostavno sortiranje tako da se na listi pojavljuju samo savjetnici.

Nakon što sortirate listu, pronađite OpenTime 2 savjetnik za vrijeme u njoj i učitajte je pomoću dodatnog menija kao što je prikazano na slici ispod:

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 spustiti preuzetu datoteku robota u direktorij terminala MT5, odnosno u mapu Experts.

Bez obzira na način instalacije koji odaberete nakon instaliranja Stručnog savjetnika, morate ponovo pokrenuti trgovački terminal ili ga ažurirati u Navigator panelu, inače se OpenTime 2 neće pojaviti na listi stručnih savjetnika.

Primjena OpenTime 2 Time Advisor-a

Kao što smo napomenuli na samom početku članka, OpenTime 2 savjetnik za vrijeme je pomoćnik koji vam omogućava da implementirate strategije zasnovane na obrascima kretanja cijena u određeno doba dana.

Druga verzija robota postala je autonomnija i fleksibilnija, što vam omogućava da pažljivije konfigurirate sistem za otvaranje i praćenje poslova.

Tako u redovima Koristi vremenski interval zatvaranja i Vremenski interval zatvaranja #2 možete dati dozvolu za rano zatvaranje poslova za prvi i drugi vremenski interval, dok se vrijeme za svaki od intervala zatvaranja može podesiti u redovima Vremenski interval zatvaranja 1 ,2.

Trailing stop varijabla vam omogućava da aktivirate trailing stop, dok je korak kretanja stop specificiran u liniji Trailing step.

U varijablama Trgovina ponedjeljak - petak možete onemogućiti trgovanje određenog dana u sedmici, a u linijama Interval vremena početka otvaranja i Vremenski interval završetka otvaranja možete podesiti vremenski period tokom kojeg treba otvoriti poziciju.

Varijabla Trajanje u sekundama je odgovorna za vrijeme održavanja otvorene pozicije, a u liniji Vrsta trgovine u vremenskom intervalu možete odrediti smjer trgovine, odnosno kupiti ili prodati.

Varijabla Volume transakcije odgovorna je za trgovački lot otvorenog naloga, a u varijablama StopLoss vremenski interval i TakeProfit vremenski interval možete odrediti profit i stop nalog za svoju poziciju.

U zaključku, vrijedno je napomenuti da je OpenTime 2 savjetnik za vrijeme napredniji i autonomniji asistent koji vam omogućava da implementirate strategije zasnovane na otvaranju pozicija u određeno doba dana.

Danas ćemo govoriti o robotu Trade Scheduler, koji ima vrlo zanimljivu funkciju. Kada koristite automatske sisteme u Forex trgovanju, jeste li primijetili da u određenim danima u sedmici ili satima često donose gubitke? Na primjer, prvog dana u sedmici savjetnik otvara vrlo malo poslova, a većina njih je i neprofitabilna. U takvim slučajevima ima smisla isključiti savjetnik prije subote i uključiti ga u utorak. Ovu jednostavnu operaciju možete izvršiti 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 upotreba robota Trade Scheduler, koji ne trguje sam, ali vam omogućava da ograničite vrijeme rada ostalih stručnih savjetnika prema rasporedu, na osnovu analize rada ovih stručnih savjetnika.

Prije prilagođavanja privremenog načina rada, potrebno je saznati u kojim trenucima se često trguje u minusu. U ovom slučaju će biti od pomoći servis MyFXbook, gdje je prikazana detaljna statistika trgovanja sistema po danima u sedmici i satima. Optimalni period trgovanja za analizu rada sistema je 3 mjeseca. Da biste ga izvršili, 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:

Rice. 1. Praćenje rada Transient Zones 2.0 Expert Advisor na MyFXbook servisu.

Kao opcija za one koji još nemaju dovoljno istorije trgovanja robota da ga analiziraju na stvarnom računu, ali se u isto vrijeme može testirati, slobodno prenesite izvještaj dobijen od .

Nakon učitavanja i obrade praćenja, potrebno je da odete na odjeljak proširene statistike, karticu Dnevni. Ovdje možete pronaći informacije o relativnom iznosu po danu u sedmici. U našem primjeru, najveći broj gubitnih poslova pada u četvrtak i petak, što znači da bi bilo razumno suspendovati Stručnog savjetnika ovih dana. Razlog ovakvom ponašanju možda leži u stanju na tržištu, koje ovih dana nije pogodno za strategiju robota, a njegove kalkulacije su manje točne:


Rice. 2. Odnos profitabilnih i neprofitabilnih transakcija Transient Zones 2.0 Expert Advisor za sedmicu.

Nakon analize po danu, možete analizirati efektivni rad po satima. Da biste to učinili, idite na karticu Po satu i pogledajte kada je relativni broj izgubljenih trgovina veći:


Rice. 3. Relativni broj gubitnih i profitabilnih trgovina po satima.

Zaključak: bilo bi razumno zaustaviti proces trgovanja u četvrtak, petak, a za ostale dane blokirati njegov rad u prva dva sata novog dana, a tokom dana u onim satima kada preovlađuju gubitne trgovine - posebno 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 popodne. Rezultat rada savjetnika trebao bi se značajno poboljšati.

Instalacija i konfiguracija stručnjaka.

Instalacija pomoćnog savjetnika Trade Scheduler-a vrši se po analogiji sa bilo kojim drugim savjetnikom, više o tome piše u . Arhivu sa stručnjakom možete preuzeti sa linka ispod:

Skinuti trade-scheduler.rar (preuzimanja: 147)

Raspakujte trade-scheduler.rar arhivu, kopirajte ekspertsku datoteku TradeScheduler v2.3.ex4 u fasciklu data_folder\MQL4\Experts\. Da biste otvorili katalog podataka, izaberite stavku Otvori katalog podataka iz menija Datoteka. Zatim se terminal ponovo 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 sedmici i satima. Vrijeme se postavlja ovisno o vremenu terminala, to je ujedno i vrijeme. Postoje 3 ulazna parametra za svaki dan. Prvi parametar je odgovoran za uključivanje/isključivanje robota na određeni dan u sedmici, drugi parametar je za vrijeme početka trgovanja, a treći je vrijeme zaustavljanja. Vrijeme je navedeno u formatu sati: minute:


Rice. 4. Ulazni parametri postavljeni nakon analize stručnog savjetnika.

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 je odgovoran za maksimalno dozvoljeno klizanje.

Uvjerite se da su automatska trgovina i uvoz funkcija iz DLL-a dozvoljeni u terminalu. Za jedan terminal je instalirana jedna verzija savjetnika.

Zaključak.

Želim to poboljšati performanse tvoj savjetnik? Isprobajte metodu ograničavanja njegovog rada i analizirajte rezultate. Ako statistika pokazuje da se vaš stručni savjetnik "konstantno spaja" u određeno doba dana, to znači da na tržištu postoji obrazac koji ne može podnijeti. Zaustavite trgovinu u ovom nepovoljnom periodu i povećajte njenu profitabilnost!