haridus

Amibrokeri Backtestable Open Range Breakout (ORB) uuring

CDC # การใช้โปรแกรม AMIBROKER เบื้องต้น Part1 (November 2018).

Anonim

Amibrokeri klassikalise ORB uuringu peamine väljakutse on see, et see tekitab liiga palju signaale igapäevaste diagrammide kohta ja selline uuring ei võimalda backtestingut. Hr Dinesh Tarte on selle probleemi lahendanud ORB-uuringu peenhäälestamisega, mis muudab koodi võimatuks

Dinesh on tarkvara insener elukutseliselt ja kaupleja omakapitali- ja kaubaturgudel. Ta teostab erinevaid tehnilisi analüüse ja armastab strateegiate väljatöötamist amibrokeritesse. Tähelepanuväärselt on ta õpilane.

ORB kauplemisreegleid
1) Osta pärast kella 11.15, kui turg ületab ORBH (ORB-High) ja exit logs (150 pts) kasumit pangaülekandega või väljumisega umbes 3.30 pärast või kui stoploss ORBL (ORB-Low) tabab.

2) Lühike pärast 11:15 maja, kui turg ületab ORBL-i (ORB-Low) ja väljumispintslite 150 pts kasumit pangaülekandega või väljumisega umbes 3.30 pärast või kui stopblokk ORBH (ORB-High) tabab

Mida see kood teeb?
Näide ORB-i strateegia kohta on näidatud üle Bank Nifty April Futures Charts. Kui Rohelised ja Punased nooled osutavad vastavalt ostu- ja müügisignaalidele. Ja roheline ja punane täht viitab sellele, et osta väljaostu ja müüa vastavalt vajadusele.

ORB-uuringus arvutatakse kõrge (ORBH) ja madal (ORBL) kahe esimese tunni jooksul ehk 9, 15-st kuni 11, 15-ni. See võtab signaali tühiku, kui turg ületab vahemikku või mõlemal küljel pärast 11:15 a.m. Koodi allpool olev parameeter märgib turu avanemist, sulgemisaega ja signaali läbipaistvuse aega. Siin ilmneb signaali läbitung ainult siis, kui ORBH ja ORBL lähevad pärast 11:15 kell.

Market_Start_Time = 091500;
Market_Open_Brakeout = 111500;
Market_end_time = 151500;

Kood on optimeeritud Bank Nifty jaoks ja see ka väljub kasumilt (näiteks Bank Nifty puhul 150 punkti). Siiski võite muuta väärtusi vastavalt oma lemmikvarudele / indeksile. Järgmine kood otsustab sihtpunkti

target_point = optimeerima ("target_point", 150, 20, 200, 1);

Stop Loss Hits kaks tingimust

1) Kui esimene signaal on aktiivne ja turg rikub, on stoploss, st ORBL, stop-kadu aktiivse ostusignaali korral
ja ORBH on stoploss aktiivse müügi signaali korral

2) Positsioon suletakse päeva lõpus.

See süsteem on puhtalt optimeeritud panga silmapaistvaks ja arvestab partii suurust 50 (2 partiiga) Bank Nifty puhul. Seda koodi saab kasutada kõrgete beetaversioonivarudega, nagu SBI ja teised, ja täpselt häälestatud, nagu esimene 1 või pool tundi, sõltuvalt teie analüüsist ja kogemustest ORB uuringus.

Amibrokeri seaded

Selle koodi korralikuks toimimiseks on vajalikud järgmised sätted.

Goto-> Tööriistad-> Eelistused-> päevane sisestus ja esimese sisemise kellaaja seadistamise aeg, nagu allpool näidatud

Laadige alla AmbrokerBackTestable ORB Backtesttable ORB-kood

Amibroker kood

 // Arendaja Dinesh R Tarte _SECTION_BEGIN ("Backtestable ORB"); SetBarsRequired (100000, 0); GraphXSpace = 15; SetChartOptions (0, chartShowArrows | chartShowDates); SetChartBkColor (ParamColor ("bkcolor", ColorRGB (0, 0, 0))); GfxSetBkMode (0); GfxSetOverlayMode (1); SetBarFillColor (IIf (C> O, ParamColor ("Candle UP Color", värvGreen), IIf (CO, ParamColor ("Wick UP Color", colorDarkGreen), IIf (C "+ Bars_in_Signal); // (5 Min Chart divide 5 ja 15 min kaartide kohta jagatakse 15 (Min)) printf ("n market singal Time =>" + Market_Signal_time); SetTradeDelays (1, 1, 1, 1); ST = MArket_start_time = 091500; BT = brake_out_time = 111500 Currtime = TimeNum (); Currentdate = DateNum (); afterbreakout0 = Rist (TimeNum (), BT); printf ("N tänane kuupäev on +" + NumToStr ((Currentdate), formatDateTime)); Curren_Dae = Day (); SetPositionSize (1, spsShares); // - Uus päev ja kellaaeg. Lõpppäev ja kellaaeg. Lõpppäev ja kellaaeg on null kuni 1. päevani // IT kontrollib iga riba seisukorda. NewDay = Day ()! = Ref (päev (), -1); printf ("päev + algusaeg:" + päev ()); EndDay = (päev ()! = Ref (päev (), 1)); printf ("n newday Value is => "+ NewDay); printf (" n Lõppkuupäeva väärtus on => "+ EndDay); printf (" n EndDay: "+ EndDay); starttime = Rist (TimeNum (ST); TimeNum () ; / / see kalibreerib kõrgeim ja madalaim massiiv st kunstiaeg //.its läheb kogu massiivi arvutamiseks järgmise päevani Exit_Time = TimeNum ()> Market_end_time; Highest_science = HighestSince (starttime, H, 1); Lowest_science = LowestSince (starttime, L, 1); "WriteIf" (IsNan (Highest_science)), "higest_scinece väärtus on =" + Highest_science + "", "") + "n" + // arvutab BT aja kõrge või madala väärtuse ORBH = ValueWhen (afterbreakout0, Highest_science, 1) ; ORBL = Väärtus Kui (pärast lööki0, Lowest_science, 1); // Krundid ORB kõrge ja madala joonisega (ORBH, "", colorGreen, styleDots); Maatükk (ORBL, "", colorBlue, styleDots); Osta = IIf (Rist (C, ORBH) JA (Currtime> BT), True, Null); Lühike = IIf ((Rist (ORBL, C) JA (Currtime> BT)), True, Null); Shortflag99; BarsToday = 1 + BarsSince (päev ()! = Ref (päev (), -1)); Buy_Bar_count = Value Kui (Osta, Baarid täna, 1); Short_bar_Count = Value Kui (Lühike, Baarid Täna, 1); printf ("n Buy's signaal tulevad baaris =>" + Buy_Bar_count); printf ("n Tänapäeva kuupäev on =>" + Date ()); printf ("Bar is =>" + BarsToday); ReministabBarinDay = ReministabBarinDay_short = 60; Osta = ExRemSpan (Osta, ReminderBarinDay); Lühike = ExRemSpan (lühike, RemindingBarinDay_short); // see on siis, kui ost on aktiivne ja läheb lühisignaal sellflag_short = IIf (lühike == 1, tõsi, 0); // Shortflag = Buyflag = IIf (New Day == 1, 2, Null); // see on ette nähtud siis, kui lühike on aktiivne ja tulevad osta signaali Coverflag_buy = IIf (osta == 1, tõsi, 0); // märkimise määramiseks, kui ostutingimus on tõene IIf (Osta == 1, Buyflag = 1, 0); BuyPrice1 = ValueWhen (Osta, C, 1); SellPrice1 = BuyPrice1 + target_point; printf ("n enne müüki signaali tulevad SellPrice: -" + SellPrice1); Sell_Cond = Cross (H, SellPrice1); // Sell_Cond = IIf (H> = SellPrice1, True, False); printf ("n DD-> Müüa Cond Value on =>" + Sell_Cond); // lühiajalist lippu kasutatakse tingimuse sulgemiseks, kui ostutingimus on aktiivne samal ajal lühike on ka aktiivne (lühidalt, kui ostusignaal on aktiivne, saab lühikese signaali, mis sulgeb positsiooni buy @ short price); printf ("n Luba väärtuse ostmine =>" + BuyFlag); printf ("n Sell_flag_short value is =>" + Sellflag_short); // Shortflag = Sulgege olemasolev positsioon, kui lühike signaal saabus // End Day: -lõputage avatud positsioon päeva lõpus. Sell = IIf (((BuyFlag == 1) JA ((Sell_Cond == 1) VÕI (EndDay == 1))), True, Null); // see on siis, kui ost on aktiivne ja läheb lühisignaal Müük = IIf (((BuyFlag == 1) JA (Sellflag_short == 1)), True, Sell); Shortflag = Buyflag = IIf (New Day == 1, 2, Null); Müü = ExRem (müüa, ostma); printf ("Buy Buy Verible value is =>" + Buy); printf ("n Müüa verifitseeritav väärtus on =>" + müüa); Müügihind = väärtus, kui (Müü, H, 1); printf ("n sellselli hind on: -" + SellPrice); ShortPrice = väärtus, kui (lühike, C, 1); // Lipuri määramine, kui lühike seisund on aktiivne IIf (Short == 1, Shortflag = 1, 0); printf ("Lühike lipu väärtus on =>" + Lühike lipp); printf ("n lühikeseks müügi lipuriik väärtus on =>" + Sellflag_short); ShortPrice1 = ValueWhen (lühike, C, 1); // katke madalama punkti seisund CoverPrice1 = ShortPrice1-target_point; printf ("Lühike hind on hind1 on =>" + ShortPrice1); printf ("CoverPrice on for price1 = =" + CoverPrice1); Cover_cond = IIf (L "+ Cover_Cond) // Postituse katmine, kui Lühike on aktiivne JA Praeguse hinna (L) väärtus on Vähem kui Seisundi hind VÕI Sulge päevakorra lõppu = IIf ((ShortFlag == 1) JA ( Cover_Cond == 1 VÕI EndDay == 1), True, Null); // see on positsiooni katmiseks, kui signaali ostmine muutub lühikese signaali aktiivseks. Olemasoleva lühikese positsiooni koopia Cover = IIf ((ShortFlag == 1) JA (Coverflag_buy == 1), True Cover); printf ("Cover Cover value = =" + Cover); CoverPrice = Value Kui (Cover, C, 1); printf ("Cover Cover ->" + CoverPrice ); Cover = ExRem (Cover, Short); PlotShapes (IIf (Buy, shapeSquare, shapeNone), colorGreen, 0, L, Offset40); PlotShapes (IIf (Buy, shapeSquare, shapeNone), colorLime, 0, L, Offset50) ; PlotShapes (IIf (Osta, shapeUpArrow, shapeNone), colorWhite, 0, L, Offset45); PlotShapes (IIf (Lühike, shapeSquare, shapeNone), colorRed, 0, H, Offset = 40); PlotShapes (IIf (Short, shapeSquare, shapeNone), colorOrange, 0, H, Offset = 50); PlotShapes (IIf (Lühike, shapeDownArrow, shapeNone), colorWhite, 0, H, Offset4 5); PlotShapes (IIf (müüa, shapeStar, shapeNone), colorGreen, 0, H, Offset70); PlotShapes (IIf (kate, kujutav staatus, kuju pole), colorBlue, 0, L, Offset70); 

Märkus: Kood on testitud Amibroker 5.60 versiooniga
Bank_nifty_ORB - Backtest Report_April (1)