Blini kufirin dhe goditni kufirin në kohën e duhur. Trade Scheduler - kufizim i punës së Këshilltarit Ekspert Eksperti i Urdhrave në pritje

Sot do të flasim për robotin Trade Scheduler, i cili ka një funksion shumë interesant. Kur përdorni sisteme të automatizuara në tregtimin Forex, a keni vënë re se në ditë ose kohë të caktuara të javës ka më shumë gjasa të gjenerojnë humbje? Për shembull, në ditën e parë të javës, këshilltari hap shumë pak transaksione, dhe shumica e tyre janë gjithashtu jofitimprurëse. Në raste të tilla, ka kuptim të çaktivizoni këshilltarin para të shtunës dhe ta aktivizoni atë të martën. Ju mund ta kryeni këtë operacion të thjeshtë me dorë, por gjithashtu mund të harroni lehtësisht të çaktivizoni ose aktivizoni këshilltarin në kohën e duhur.

Zgjidhja e këtij problemi (dhe disa të tjerëve) mund të jetë duke përdorur robotin Trade Scheduler, i cili nuk tregton vetë, por ju lejon të kufizoni kohën e punës së këshilltarëve të tjerë sipas një orari, të përpiluar në bazë të një analize të punës së këtyre këshilltarëve.

Para se të bëni rregullime në mënyrën e funksionimit të kohës, duhet të zbuloni se në cilat momente ajo tregton më shpesh në të kuqe. Në këtë rast, shërbimi MyFXbook do të ndihmojë, ku statistikat e detajuara të tregtimit të sistemit paraqiten sipas ditës së javës dhe orës. Periudha optimale e tregtimit për të analizuar funksionimin e sistemit është 3 muaj. Për ta kryer atë, duhet të filloni monitorimin në shërbim. Mund të lexoni për instalimin e robotit në MyFXbook. Si shembull, le të shohim rezultatet e punës së ekspertit, monitorimi i të cilit mund të gjendet duke klikuar në foto:

Oriz. 1. Monitorimi i punës së këshilltarit të Zonave Transiente 2.0 në shërbimin MyFXbook.

Si opsion për ata që nuk kanë ende histori të mjaftueshme tregtare të robotit për analiza në një llogari reale, por në të njëjtën kohë mund të testohet, atëherë ndjehuni të lirë të ngarkoni raportin e marrë nga shërbimi në shërbim.

Pas shkarkimit dhe përpunimit të monitorimit, duhet të shkoni te seksioni i statistikave të avancuara, skeda Ditore. Këtu mund të gjeni informacione për sasitë relative sipas ditëve të javës. Në shembullin tonë, numri më i madh i tregtimeve me humbje ndodh të enjten dhe të premten, që do të thotë se në këto ditë do të ishte e arsyeshme të pezullohej puna e Këshilltarit të Ekspertëve. Arsyeja e kësaj sjelljeje mund të qëndrojë në kushtet e tregut, të cilat këto ditë nuk janë të përshtatshme për strategjinë e robotit dhe llogaritjet e tij janë më pak të sakta:


Oriz. 2. Raporti i transaksioneve fitimprurëse dhe jofitimprurëse të këshilltarit të Zonave Kalimtare 2.0 për javën.

Pas analizimit të ditës, mund të analizoni efikasitetin e punës për orë. Për ta bërë këtë, duhet të shkoni te skedari "Orë" dhe të shihni kur numri relativ i tregtimeve të humbura është më i madh:


Oriz. 3. Numri relativ i tregtimeve humbëse dhe fitimprurëse sipas orës.

Përfundim: do të ishte e mençur të ndaloni procesin e tregtimit të enjten, të premten dhe për ditë të tjera të bllokoni punën e tij në dy orët e para të ditës së re, dhe gjatë ditës gjatë atyre orëve kur mbizotërojnë tregtitë humbëse - veçanërisht, në 12 , 13, 14 pasdite. Domethënë, lëreni të punojë natën nga ora 2 deri në 8 të mëngjesit përfshirëse, dhe nga ora 13:00 deri në 21:00 gjatë ditës. Rezultati i punës së këshilltarit duhet të përmirësohet ndjeshëm.

Instalimi dhe konfigurimi i ekspertit.

Instalimi i këshilltarit ndihmës të Trade Scheduler kryhet në analogji me çdo këshilltar tjetër. Nga lidhja më poshtë mund të shkarkoni arkivin me ekspertin:

Shkarko trade-scheduler.rar (shkarkime: 139)

Shkëputni arkivin trade-scheduler.rar dhe kopjoni skedarin ekspert TradeScheduler v2.3.ex4 në dosjen data_directory\MQL4\Experts\. Për të hapur drejtorinë e të dhënave, zgjidhni Open Directory të dhënave nga menyja File. Pastaj terminali rindizet dhe pas kësaj këshilltari mund të gjendet në dritaren Navigator - Advisors.

Kur instaloni Këshilltarin e Ekspertit në një tabelë, koha e kërkuar e funksionimit specifikohet në dritaren e cilësimeve sipas ditës së javës dhe orës. Ora caktohet në varësi të kohës së terminalit, që është edhe koha. Për çdo ditë ka 3 parametra hyrës. Parametri i parë është përgjegjës për ndezjen/fikjen e robotit në një ditë të caktuar të javës, parametri i dytë është për kohën e fillimit të tregtimit, i treti është koha e ndalimit. Koha tregohet në formatin orë: minuta:


Oriz. 4. Parametrat e hyrjes të specifikuara pas analizimit të funksionimit të këshilltarit.

Ekziston gjithashtu një parametër shtesë CloseBeforeSwitchOFF në cilësimet. Kur vendoset në CloseAll, të gjitha tregtitë do të mbyllen automatikisht përpara se roboti të fiket. Kur CloseAllProfitable - vetëm porositë fitimprurëse do të mbyllen, kur Jo - transaksionet nuk do të mbyllen. Parametri Slip është përgjegjës për rrëshqitjen maksimale të lejueshme.

Sigurohuni që tregtimi automatik dhe importimi i funksioneve nga DLL të lejohen në terminal. Një version i këshilltarit është instaluar për një terminal.

konkluzioni.

Dua të përmirësojnë performancën këshilltari juaj? Provoni metodën e kufizimit të funksionimit të tij dhe analizoni rezultatet. Nëse statistikat tregojnë se eksperti juaj "humbet vazhdimisht" në një kohë të caktuar të ditës, atëherë ekziston një model në treg që ai nuk mund ta përpunojë. Pezulloni tregtimin gjatë kësaj periudhe të pafavorshme dhe rrisni rentabilitetin e tij!

Ky këshilltar është ideal për ata që tregtojnë sipas niveleve dhe çdo strategjie që përdorin urdhra limit në pritje. Këshilltari do të bëjë porosi në kohën e duhur në distancën e duhur nga çmimi aktual! Në cilësimet e robotit, mund të vendosni humbje të ndalimit, të merrni fitime nga porositë, si dhe shumën e çdo porosie. Gjithçka është vendosur për çdo porosi veç e veç. Ju mund të vendosni vetëm një kufi blerjeje, ose një kufi shitjeje, ose të dyja porositë së bashku!

Këshilltari është i gatshëm të punojë në çdo instrument tregtar, në çdo terminal tregtar Metatrader 4. Roboti është gjithashtu i gatshëm të punojë në disa çifte monedhash menjëherë. Kjo do të thotë, ju mund të hapni çdo numër çiftesh dhe të instaloni një këshilltar mbi to, duke i dhënë secilit numrin e vet magjik dhe cilësimet e kohës. Pas së cilës, secili çift do të punojë në mënyrë rigoroze individualisht. Nëse ende punoni me porositë limit manualisht, ky robot është për ju!

  • BUY_limit- Nëse do të caktohet një porosi limit blerjeje.
  • Lot_bley_limit- Kufiri i blerjes së porosisë së lotit.
  • R_buy_limit- Distanca nga çmimi aktual deri në porosinë kufitare të blerjes në pikë.
  • Stop_Loss_buy_limit- Stop humbjet e blerjeve të porosive limit.
  • Take_Profit_buy_limit- Merrni kufirin e blerjes së porosive të fitimit.
  • SELL_limit- Nëse do të caktohet një urdhër kufiri i shitjes.
  • Limit_shumë_shitje- Kufiri i shitjes së porosisë së lotit.
  • R_sell_limit- Distanca nga çmimi aktual deri te porosia e limitit të shitjes në pikë.
  • Stop_Loss_sell_limit- Kufiri i shitjes së porosive të ndalimit të humbjes.
  • Take_Profit_sell_limit- Merr kufirin e shitjes së porosive të fitimit.
  • Rrëshqitje- Rrëshqitje maksimale në pikë.
  • Mbyll_porositë- Mbyllja e rendit të dytë kur hapet e para.
  • Kohët- Jetëgjatësia e porosisë në minuta.
  • Koha_Fillimi- Bëni porosi sipas kohës?
  • Koha_Ora- Ora e hapjes së porosisë 0-23
  • Koha_minuta- Minuta për hapjen e porosive 0 - 59. Për shembull, orë = 5, minutë 40, që do të thotë në 5.40 porositë do të bëhen në bazë të çmimit në atë moment.
  • Eksperti_I- numër magjik për përcaktimin e porosive tuaja dhe tregtimin me shumë monedha.

Nga artikulli do të mësoni:

Mirëdita, të dashur lexues dhe të ftuar të blogut. Sot do të flasim për mënyrën se si ka këshilltarë ndihmës që vendosin urdhra të bazuara në kohë dhe në pritje, si dhe se si mbyllen transaksionet.

Ndërmjetësi më i mirë

Një këshilltar që hap porositë çdo orë ose me kohë është një mjet që ndihmon në situata të ndryshme tregtare. Në përgjithësi, me sa mund të them, interesi për këshilltarë të tillë që kryejnë veprime të ngjashme ka ekzistuar prej kohësh. Dhe në vitin 2006 kishte robotë të tillë, dhe në 2008, në bazë të kërkesave, mund të gjurmoni interesin për ta, dhe tani kërkesat për të prodhuar ekspertë të tillë vazhdojnë të shfaqen. Në të njëjtën kohë, tregtarët shpesh me përvojë, dhe jo vetëm tregtarët, por ata që merren me tregti, ndihmojnë të ardhurit. Në përgjithësi, kjo është një traditë e mirë. Zakonisht bazohet në shkëmbim të ndërsjellë. I riu ofron ide, dhe eksperienca merr të drejtën për të përdorur idenë dhe krijon kodin e ekspertit që ndan me partnerin e tij.

Kur krijohen kushtet për përdorimin e këtyre ekspertëve

Megjithatë, le të shkojmë në temë! Historia ime sot është një histori për një ekspert për vendosjen e porosive në kohën e duhur. Përdoret për qëllime të ndryshme. Për shembull, ka sisteme tregtare që janë të lidhura rreptësisht me fillimin e një qiri ose sesioni. Për shembull, ekziston dhe, sipas hulumtimit tim modest, ekziston në realitet një pamje e caktuar e valëve të tilla, por ato shfaqen në korniza të ndryshme kohore dhe ka periudha me kohëzgjatje të ndryshme. Për shembull, mund t'i gjeni në USDCAD në Mn.

Ka qirinj që janë shumë të ngjashëm me njëri-tjetrin çdo muaj. Për shembull, në janar, për shembull, për gjashtë vjet ka pasur një tendencë në rritje ose një prirje rënëse, nuk është kjo gjëja. Për të marrë të ardhura nga përdorimi i kësaj qasjeje, duhet të bëni një porosi në një drejtim të përcaktuar nga metoda e kërkimit në fillim të muajit dhe ta fshini atë në fund, dhe ta bëni këtë vetëm në muaj të caktuar të vitit. Kjo është pikërisht arsyeja pse eksperti bën urdhra sipas datës, orës dhe minutës.

Një ekspert që jep urdhra në kohën e duhur zbaton edhe detyra të tjera, për shembull, dihet që nesër do të ketë një tendencë në treg dhe ideja e tregtimit përcakton që duhet të merrni pozicione për çdo qiri për orë në drejtim të trend. Dhe ju duhet të anuloni porositë në fund të ditës së tregtimit.

Kështu, porositë do të shfaqen në formën e një rrjeti të tillë. Ju mund të shihni se si kjo bëhet ndryshe në faqen ku. Deri në fund të ditës së punës, porositë e blerjes, të ndalimit të shitjes ose të tregut fshihen, gjithashtu në momentin e duhur.

Pse është kështu? Sepse unë e kam parë këtë qasje në modifikimin e mëposhtëm: vendosja e porosive për çdo qiri me një porosi tregu ose gjithashtu për çdo qiri, por me blerje dhe shitje ndalon në drejtime të kundërta. Në rastin e dytë, mund të mos e dini se në cilin drejtim do të lëvizë tregu, por thjesht kapni lëvizjen, sikur të përdorni një rrjetë fluturash. Gjithashtu, kur vendosni urdhra ndalimi për blerje dhe shitje në të dy drejtimet, ndoshta deri në fund të ditës njëri prej tyre nuk do të hapet dhe do të mbetet i varur.

Shkarko

Pra, bëhet e qartë se sot ekzistojnë tre lloje ekspertësh ndihmës në këtë kontekst.

  1. Lloji i parë është një ekspert që vendos porositë në treg, duke marrë parasysh orë dhe minuta të caktuara,
  2. Lloji i dytë është ekspert i urdhrave në pritje sipas orëve dhe minutave.
  3. Lloji i tretë mund të zbatohet brenda dy të parave ose të jetë një program i veçantë. Ky është pikërisht rasti në shembullin tonë.

Eksperti i rendit të tregut

Kur e dini se trendi në rritje do të fillojë në orën 23:50, kështu që çmimi do të kalojë patjetër 60 pika, me një humbje të ndalimit prej 30 pipa, dhe ju keni një ekspert që do të ndjekë humbjen e ndalimit, kështu që do t'ju duhet një porosi. Në të njëjtën kohë, nuk do të jeni larg, kështu që tingulli që njofton hapjen do të jetë i dobishëm. Në kushte të tilla, do t'ju duhet eksperti i llojit të parë. Në këtë rast, ky është eksperti i e-OpenByTime. Ky ekspert, i cili mund të shkarkohet duke përdorur butonat social, ka parametrat e mëposhtëm:

  • TimeTrade – këtu ju vendosni momentin e saktë kur duhet të hapet porosia. Formati i të dhënave hh:mm.
  • Kohëzgjatja - periudha në sekonda gjatë së cilës eksperti do të përpiqet të bëjë një porosi.
  • Shitet – këtu duhet të specifikoni llojin e porosisë së vërtetë – kjo do të thotë se një porosi do të hapet në treg për të shitur aktivin. Vlera false korrespondon me një porosi blerjeje.
  • Shumë - ky opsion do të kufizojë pjesën tuaj të tregtimit në një vlerë të caktuar.
  • SopLoss – humbja e ndalimit është projektuar për ndërmjetës me katër shifra, kështu që për të përcaktuar madhësinë e saj në 30 pikë, duhet të vendosni vlerën në 300
  • TakeProfit – është e njëjta histori me fitimin.
  • MagicNumber – Unë mendoj se gjithçka është e qartë këtu.
  • UseSound – më pas janë cilësimet e zërit.
  • NameFileSound – këtu zgjedhim një skedar zanor.
  • Nga cilësimet e mbetura, vetëm MaketWatch mund të ngrejë pyetje. Rezulton se ky cilësim është i nevojshëm për të siguruar që kërkesat për tregti të dërgohen sipas rregullave të Market Watch që kërkojnë disa ndërmjetës.

Eksperti i porosive në pritje

Lloji i dytë i ekspertëve që punojnë në hapjen e urdhrave në pritje janë ekspertë për sisteme të ndryshme të tregtimit të kutive. I ngjashëm

Kësaj radhe do të përshkruaj një ekspert, si të thuash, një ndihmës, i cili, pa marrë parasysh tendencat dhe shenjat e tjera të grafikut, do të hapë dy transaksione blerjesh dhe shitjesh në të dy drejtimet.

Po flasim për ekspertin 37_Exp-TimeOpenBuy. Vendosja është mjaft e thjeshtë.

  • BuyStopOpen dhe SellStopOpen - të dyja në këtë rast përcaktohen si të vërteta.
  • Distanca – përcakton se në cilën distancë nga çmimi aktual do të vendosen këto porosi. Ju lutemi vini re se vlera këtu dhe në rreshtin tjetër llogaritet për një ndërmjetës me katër shifra, kështu që për të vendosur distancën duhet të përdorni një numër, për shembull, 30 pikë dhe të shtoni një 0 tjetër në fund.
  • TPBuyStop, SLBuyStop, TPSellStop, SLSellStop – ju lejojnë të përcaktoni distancën për të marrë fitim dhe për të ndaluar humbjen për çdo porosi. (Këtu i shtojmë edhe një zero numrit në fund.)
  • CloseAfterOpen – ju lejon të fshini një marrëveshje që mbetet pasi një nga porositë e ndalimit të blerjes dhe shitjes është aktivizuar.
  • Slippage është një cilësim që, në përvojën time, duhet të vendoset në çdo vlerë tjetër përveç zeros në mënyrë që të bëhen porositë. Kjo është vlera maksimale e rrëshqitjes.
  • CloseIfNotOpen – u konceptua si një funksion që fshin të gjitha ndalesat e blerjeve dhe shitjeve të dështuara në një kohë të re. Megjithatë, sado që u përpoqa ta përdorja këtë operacion, asgjë nuk doli prej tij.
  • Opsionet e mbetura nevojiten për të përcaktuar momentin e hyrjes në treg dhe daljes prej tij.

Ekspert heqës i depozitave

Më në fund, këshilltari i tretë, i cili, duke përdorur kodin mql4 që përpilova, kryen heqjen e blerjeve, me kohë, më saktë se të gjithë. Në përgjithësi, tani do të keni një grup të plotë këshilltarësh për vendosjen e porosive për blerje, shitje dhe në treg dhe një ekspert që do të mbyllë porositë në kohë. Për ta bërë këtë, përpara ciklit, i cili në fakt thjesht mbyll porositë blej-, sellstop, ose do të ishte më e saktë të thuash: i fshin ato, duhet të kryesh një kontroll nëse (TimeCurrent()>=BlackTime). Në këtë rast, ndryshores i caktohet koha pas së cilës fshihen porositë.

konkluzionet

Sot u njohëm me një grup këshilltarësh ndihmës shumë të dobishëm që mund të përdoren në kushte të ndryshme tregu. Për t'i përdorur ato, do t'ju duhet një konfigurim i shpejtë dhe një lloj parashikimi i tregut. Si rezultat i përdorimit të tyre, ju do të jeni në gjendje të organizoni hyrje dhe dalje krejtësisht të pavarura dhe pothuajse plotësisht automatike. Madje do të thosha se gjithçka do të ndodhë automatikisht, por vetëm në kuadrin e disa veprimeve, atëherë do të duhet të ndryshohen cilësimet e ekspertëve. Megjithatë, kjo tashmë është një ndihmë e mirë për ata që nuk kanë kohë të ulen para një monitori pa kufizime. Kjo është e gjitha, të dashur miq. Shpresoj t'ju duket interesante kjo faqe.

(2 vlerësime, mesatare: 5,00 nga 5)

Nëse sistemi juaj i tregtimit nuk bazohet në kërcimet e lajmeve, atëherë mund të jetë shumë e dobishme për shëndetin tuaj financiar dhe mendor të ndaloni punën e këshilltarit përpara se të publikohen lajme të rëndësishme. Dhe pasi paqëndrueshmëria të qetësohet, pas disa orësh, ndizeni përsëri. Është mirë nëse keni në dorë një terminal pune. Dhe nëse jo? Këtu vjen në ndihmë automatizimi i aktiviteteve të tilla.

Një nga opsionet për zgjidhjen e problemit tonë është përpilimi i një skedari me një orar të ngjarjeve të rëndësishme. Leximi i këtij skedari nga eksperti ynë dhe përcaktimi kur mund të punoni dhe kur jo. Libri shkollor MQL4 ofron një shembull të punës me një skedar teksti CSV, dhe ne do ta marrim atë si bazë, duke hequr qafe disa gabime që autorët kanë bërë pa dashje ose për të testuar vëmendjen tonë (për të cilën ata vetë paralajmërojnë - nuk duhet t'i besojmë askujt verbërisht, gabimet ndodhin gjithmonë).

Pra, le të bëjmë një orar të ngjarjeve të rëndësishme javën e ardhshme në formatin e mëposhtëm:
Data dhe ora e ngjarjes;

2016.04.01 14:00;USD;Indeksi i aktivitetit të biznesit ISM në sektorin e prodhimit 2016.04.01 14:00;USD;Indeksi i përshpejtimit gradual të inflacionit nga ISM 2016.04.04 09:00;EUR index;Producerm ) 04.04.2016 09:00;EUR;Indeksi i Çmimeve të Prodhuesit (Vit) 2016.04.05 04:30;AUD;Vendimi i Bankës së Rezervës së Australisë mbi normën e interesit 2016.04.05 04:30;Deklarata e rezervimit të AUD;Ac. Banka e Australisë 2016.04.06 07: 00;EUR;Takimi i BQE 2016.04.06 18:00;USD;Procesverbalet e takimit të Komitetit Federal të Tregut të Hapur të SHBA 2016.04.07 11:30;EUR;Informacion mbi mbledhjen e BQE-së mbi monetare politikë

Le ta shkruajmë në skedarin ht-news.csv dhe ta vendosim në direktorinë e kërkuar \MQL4\Files\ht-news.csv, nga ku mund ta lexojë këshilltari ynë.

Së pari, le të vendosim variabla të jashtëm për konfigurim, komentet që shpjegojnë qëllimin e tyre:

Extern string startNewsEvent="Kufizimi i punës në lajme"; input bool StopOnNewsEvent=e vërtetë; //Aktivizo vargun e hyrjes së kufizimit NewsEventFileName="ht-news.csv"; //Skedari me hyrje të programit uint LoadNewsEventTimerInDay=7;//Sa shpesh në ditë duhet të ringarkohet hyrja e skedarit uint StopPriorEventHours=2; //Ndalo X orë para hyrjes së ngjarjes uint StartAfterEventHours=3; //Fillimi X orë pas ngjarjes string extern stopNewsEvent="----------------";

Struktura e mëposhtme do të na ndihmojë të aksesojmë përshkrimin e ngjarjes që përpunohet:

Struct NEWS_EVENT (data Ora e ngjarjes; //vargu i kohës së ngjarjes Instrumenti; //vargu i instrumentit të ngjarjes Komenti i ngjarjes; //komenti i ngjarjes);

Funksion i personalizuar për të lexuar informacion nga një skedar

Bool LoadNews() ( int handle; // Instrumenti i vargut të përshkruesit të skedarit, // Emri i monedhës së ngjarjes firstInstrument,secondInstrument, // Pjesa e parë dhe e dytë e emrit të çiftit aktual eventComment, // Teksti i përshkrimit të ngjarjes stringDateTime; // Shprehja e vargut të datës dhe orës së ngjarjes datetime eventDateTime // Data dhe ora e ngjarjes në formatin datetime handle=FileOpen(NewsEventFileName,FILE_CSV|FILE_READ,";");// Hapja e një skedari 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; }

Ne kërkojmë kohën e kërkuar në grupin NewsEventTime dhe nëse gjendet koha, marrim përshkrimin e saj të grupit të strukturës së tyre NewsEvent

String GetEventInfo (data e datës) ( për(int i=0;i

Funksioni ndihmës për të përcaktuar nëse koha aktuale bie brenda kohës së papunë

//kontrolloni nëse duhet të çaktivizojmë këshilltarin e lajmeve True - work False - rest bool CheckEnableNewsWork() ( if (ArraySize(NewsEventTime)==0) kthehet true; //për disa arsye grupi me orar ishte bosh, që do të thotë ne jemi duke punuar //tani duhet të gjejmë datën më të afërt në NewsEventTime para së cilës duhet të ndalojmë punën për StopPriorEventHours orë datatime timeCurrent =TimeCurrent(timetimetimeStopWork=timeCurrent+StopPriorEventHours*3600) //Nëse ka një kohë në E; që është më pak se timeStopWork, atëherë ne ndalojmë së punuari int dateindex= ArrayBsearch(NewsEventTime,timeStopWork,WHOLE_ARRAY,0,MODE_ASCEND datetime foundEventTime=NewsEventTimestopWork=foundEventTime-StopPriorEvent0; timeStartWork=foundEventTime+StartAfterEventHours*3600 /tani le të kontrollojmë nëse jemi tani TimeCurrent ndërmjet timeStopWork dhe timeStartWork Nëse po, atëherë nuk jemi duke punuar nëse (timeCurrent>=timeStopWork & timeCurrent;<=timeStartWork) { DrawLabel("EnableNewsWork","Не работаем, новость: "+GetEventInfo(foundEventTime)+"",5,80,Red); return false; } else { DrawLabel("EnableNewsWork","Нормальная работа, новостей нет",5,80,Green); return true; } }

Për të lexuar periodikisht nga një skedar me një orar, na duhet një kohëmatës që funksionon, për shembull, një herë në javë, siç është konfiguruar

//Kontrollo për praninë e një skedari lajmesh duke përdorur kohëmatësin void OnTimer() ( if (StopOnNewsEvent) ( LoadNews(); //lexo skedarin ) )

Kur inicializoni këshilltarin, duhet të filloni kohëmatësin dhe të lexoni lajmet për herë të parë

OnInit() .... nëse (StopOnNewsEvent) //Nëse është caktuar, ngarkoni skedarin me lajmet ( bool tm=EventSetTimer(LoadNewsEventTimerInDay*86400); //nisni kohëmatësin për të ngarkuar skedarin me orarin nëse (!tm) Alert("Gabim EventSetTimer :",GetLastError());

Në çdo shenjë kontrollojmë nëse mund të hapim pozicione. Nga rruga, kjo nuk duhet të ndikojë në zvarritje.

OnTick() .... bool enableNewsWork=true; //mund të punoni në ngjarjet e lajmeve nëse (StopOnNewsEvent) ( enableNewsWork=CheckEnableNewsWork(); //Nëse ka një kufi lajmesh, kontrolloni kohën) nëse (Keni para && aktivizoniNewsWork) Traiding(çifte); //kontrolloni kushtet dhe hapni tregtinë në një palë

Kjo eshte e gjitha. Fatkeqësisht, nuk e kam testuar ende këtë kod në një llogari reale, pasi e shkrova atë në fundjavë, emulova rriqrat me një kohëmatës dhe ndryshova orën aktuale, e cila ndalon në fundjavë, manualisht. Por javën e ardhshme do të shikoj në jetën reale, në versionin e ri "Forex Grail 1.11", ku kam futur kodin e mësipërm.

Në të ardhmen, mund t'ju duhet të krijoni një mjet të përshtatshëm për gjenerimin e skedarit ht-news.csv, për shembull në të njëjtën