Kupite limit i stavite limit u pravo vrijeme. Stručni savjetnik koji otvara naloge svaki sat, u pravo vrijeme i u pravo vrijeme Kada se pojave uvjeti za korištenje ovih stručnih savjetnika
Danas ćemo govoriti o tome kako postoje pomoćni stručni savjetnici koji daju narudžbe prema vremenu na tržištu i na čekanju, kao io tome kako se transakcije zatvaraju.
Najbolji broker
Stručni savjetnik koji otvara naloge svaki sat ili na vrijeme je alat koji pomaže u raznim situacijama trgovanja. Općenito, koliko znam, interes za takve savjetnike koji obavljaju takve radnje postoji već duže vrijeme. I 2006. su postojali takvi roboti, a 2008., po zahtjevu, možete pratiti interes za njih, a sada se i dalje pojavljuju zahtjevi da se takvi stručnjaci navedu. Pritom početnicima pomažu često iskusni trgovci, i to ne samo trgovci, već oni koji su angažirani. Općenito, ovo je dobra tradicija. Obično se temelji na međusobnoj razmjeni. Početnik daje ideje, a iskusna osoba dobiva pravo na korištenje te ideje i stvara stručni kod koji dijeli sa svojim partnerom.
Kada se stvore uvjeti za korištenje ovih stručnjaka
Međutim, prijeđite na stvar! Moja današnja priča je priča o stručnjaku za narudžbu u pravo vrijeme. Koristite ga u razne svrhe. Na primjer, postoje sustavi trgovanja koji su čvrsto vezani za početak svijeće ili sesije. Na primjer, postoje i, prema mom skromnom istraživanju, neka vrsta takvih valova postoji u stvarnosti, ali se pojavljuju u različitim vremenskim okvirima, a postoje i razdoblja različitog trajanja. Možete ih, na primjer, pronaći na USDCAD na Mn.
Svaki mjesec postoje svijeće koje su međusobno vrlo slične. U siječnju, na primjer, tijekom, na primjer, šest godina, postoji uzlazni trend ili opadajući trend nije poanta. Da biste ostvarili prihod od korištenja ovog pristupa, potrebno je na početku mjeseca izvršiti narudžbu u smjeru određenom metodom istraživanja, a na kraju ga izbrisati, i to samo u određenim mjesecima u godini. Samo za ovo, stručnjak postavlja narudžbe po datumu, satima i minutama.
Stručnjak koji daje naredbe pravo vrijeme također provodi druge zadatke, na primjer, poznato je da će sutra biti trend na tržištu i ideja trgovanja predviđa da trebate zauzeti pozicije na svakoj satnoj svijeći u smjeru trenda. I na kraju morate ukloniti narudžbe trgovački dan.
Tako će se narudžbe pojaviti u obliku takve mreže. Kako to rade drugačije možete vidjeti na stranici gdje . Do kraja radnog dana dolazi do uklanjanja, također u pravo vrijeme, narudžbi buy-, sellstop ili na tržištu.
Zašto točno? Zato što sam vidio takav pristup u takvoj modifikaciji: postavljanje naloga na svaku svijeću s tržišnim nalogom ili također na svaku svijeću, ali buy-, sellstop-ami u suprotnim smjerovima. U drugom slučaju možda ne znate ni u kojem smjeru će se tržište kretati, već jednostavno uhvatite kretanje, kao s mrežom za leptire. Također, prilikom postavljanja buy-, sellstop-s naloga u oba smjera, možda se do kraja dana jedan od njih neće otvoriti i ostati će visjeti.
preuzimanje datoteka
Dakle, postaje jasno da danas postoje tri vrste pomoćnih stručnjaka u ovom kontekstu.
- Prvi tip je stručnjak za stavljanje narudžbi na tržište, uzimajući u obzir određene sate i minute,
- Druga vrsta je stručni savjetnik za narudžbe na čekanju po satima i minutama.
- Treći tip se može implementirati unutar prva dva ili biti zaseban program. U našem primjeru upravo je to slučaj.
Stručnjak za tržišne narudžbe
Kada znate da će uzlazni trend krenuti u 23:50, tako da će cijena sigurno proći 60 pipsa, sa stop gubitkom od 30 pipsa, a imate i stručnog savjetnika koji će pratiti stop gubitak, tako da vam je potreban nalog. Pritom nećete biti daleko pa će vam zvuk koji najavljuje otvaranje dobro doći. U takvim uvjetima trebat će vam prva vrsta stručnjaka. U ovom slučaju, ovo je e-OpenByTime Expert Advisor. Ovaj stručni savjetnik, koji se može preuzeti pomoću društvenih gumba, ima sljedeće parametre:
- TimeTrade - ovdje se postavlja točan trenutak kada se nalog treba otvoriti. Format podataka je hh:mm.
- Trajanje – razdoblje u sekundama tijekom kojeg će savjetnik pokušati izdati narudžbu.
- Prodaja - ovdje morate navesti vrstu naloga true - to znači da će se na tržištu otvoriti nalog za prodaju imovine. Vrijednost false odgovara narudžbi za kupnju.
- Lotovi - ova opcija će ograničiti vaš lot za trgovanje na zadanu vrijednost.
- SopLoss - stop gubitak izračunava se za četveroznamenkaste brokere, pa da biste odredili njegovu veličinu na 30 bodova, trebate postaviti vrijednost na 300
- TakeProfit - ista priča s take profitom.
- MagicNumber - Mislim da je ovdje sve jasno.
- UseSound - slijede postavke zvuka.
- NameFileSound - ovdje odaberite zvučnu datoteku.
- Od preostalih postavki samo MaketWatch može izazvati pitanja. Ispostavilo se da je ova postavka neophodna kako bi se zahtjevi za trgovinu slali prema pravilima Market Watcha, koja zahtijevaju neki brokeri.
Stručnjak za narudžbe na čekanju
Druga vrsta stručnih savjetnika koji rade na otvaranju naloga na čekanju su stručni savjetnici za različite box trading sustave. Sličan
Ovoga puta opisat ću stručnog savjetnika, recimo, pomoćnog, koji će otvoriti dvije buy-, sellstop transakcije u oba smjera bez obzira na trendove i druge znakove grafikona.
Riječ je o o EA 37_Exp-TimeOpenBuy. Postavljanje je prilično jednostavno.
- BuyStopOpen i SellStopOpen su u ovom slučaju definirani kao istiniti.
- Udaljenost - određuje na kojoj udaljenosti od trenutne cijene će se ovi nalozi postaviti. Imajte na umu da se vrijednost ovdje i u sljedećem retku izračunava za četveroznamenkastog brokera, tako da za postavljanje udaljenosti trebate upotrijebiti broj, na primjer, 30 bodova i dodati još 0 na kraju.
- TPBuyStop, SLBuyStop, TPSellStop, SLSellStop - omogućuju vam da odredite udaljenost za preuzimanje profita i stop gubitka za svaki od naloga. (I ovdje dodajte nulu na kraj broja.)
- CloseAfterOpen - omogućuje vam brisanje posla koji ostaje nakon što se aktivira jedan od buy-, sellstop-naloga.
- Slippage je postavka koju prema mom iskustvu treba postaviti na bilo što osim na nulu kako bi se narudžbe mogle postavljati. Ovo je maksimalno proklizavanje.
- CloseIfNotOpen - zamišljen je kao funkcija koja uklanja sve neuspjele kupnje, zaustavlja prodaju u novo vrijeme. Međutim, koliko god se trudio koristiti ovu operaciju, ništa od toga nije bilo.
- Preostale opcije su potrebne kako bi se odredio trenutak ulaska na tržište i izlaska s njega.
Stručnjak za odgodu uklanjanja
Konačno, treći stručni savjetnik, koji pomoću mql4 koda koji sam sastavio, vrši uklanjanje buy-, na vrijeme, točnije, svih njih. Općenito, sada ćete imati punu punu savjetnika za postavljanje buy-, sellstop naloga i po tržištu i stručnjaka koji će zatvoriti narudžbe na vrijeme. Da biste to učinili, prije ciklusa, koji jednostavno zatvara buy-, sellstop naloge, ili bi bilo ispravnije reći: briše ih, trebate provjeriti je li (TimeCurrent()>=BlackTime). U tom slučaju varijabli se dodjeljuje vrijeme nakon kojeg se nalozi brišu.
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 poslova.
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.
Ovaj stručni savjetnik idealan je za one koji trguju po razinama i svim strategijama koristeći ograničene naloge na čekanju. EA će postaviti narudžbe u pravo vrijeme na pravoj udaljenosti od trenutne cijene! U postavkama robota možete postaviti stop gubitke, uzeti profite naloga, kao i lot svakog naloga. Sve se postavlja za svaku narudžbu posebno. Možete postaviti samo limit za kupnju ili ograničenje prodaje ili obje narudžbe zajedno!
EA je spreman za rad na bilo kojem trgovačkom instrumentu, u bilo kojem trgovačkom terminalu Metatrader 4. Robot je također spreman za rad na nekoliko valutni parovi odmah. Odnosno, možete otvoriti bilo koji broj parova i na njih instalirati savjetnika, postavljajući svaki sa svojim čarobnim brojem i vremenskim postavkama. Nakon toga, svaki par će raditi strogo pojedinačno. Ako još uvijek radite s ograničenim nalozima ručno, ovaj robot je za vas!
- BUY_limit- Treba li naručiti kupnju limita.
- lot_buy_limit- Ograničenje kupnje narudžbi lota.
- R_kupi_limit- Udaljenost od trenutne cijene do limit naloga za kupnju u bodovima.
- Stop_Loss_buy_limit- Stop Loss buy limit orders.
- Take_Profit_buy_limit - Uzeti profit kupnju limitiranih naloga.
- SELL_limit- Treba li postaviti ograničeni nalog za prodaju.
- Lot_sell_limit- Ograničenje prodaje narudžbi lota.
- R_sell_limit- Udaljenost od trenutne cijene do graničnog naloga prodaje u bodovima.
- stop_gubitak_ograničenje_prodaje- Ograničenje prodaje naloga za zaustavljanje gubitka.
- Take_Profit_sell_limit- Ograničenje narudžbi za preuzimanje profita.
- proklizavanje- Maksimalno proklizavanje u bodovima.
- Zatvori_Narudžbe- Zatvaranje drugog naloga prilikom otvaranja prvog.
- Vremena- Životni vijek narudžbe u minutama.
- Vrijeme_Početak- Naručiti na vrijeme?
- Vrijeme_Sat- Sat otvaranja naloga 0-23
- Vrijeme_Minuta- Minuta otvaranja naloga 0 - 59. Na primjer, sat = 5, minuta 40, pa će u 5.40 biti isporučeni nalozi od cijene u tom trenutku.
- Stručnjak_I- čarobni broj za određivanje vaših narudžbi i multivalutno trgovanje.
Danas govorimo o robotima. Planer trgovine, 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:
Riža. 1. Praćenje rada Transient Zones 2.0 Expert Advisor na usluzi MyFXbook.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:
Riža. 2. Omjer profitabilnih i neprofitabilnih transakcija Transient Zones 2.0 Expert Advisor za tjedan.
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:
Riža. 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, te tijekom dana u onim satima kada gubitke obrta prevladavaju - 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.
Instaliranje i konfiguriranje stručnjaka.
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:
Riža. 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 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.
Zaključak.
Ž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!
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-a 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 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 pravom 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