Egy egyszerű stochastikus indikátoron mutatom be az AMibrokerben rejlő optimalizálási lehetőséget.
Két progit másolok ide be, mindkettő tartalmazza az utasításokat is, hogy mit kell velük tenni, hogy optimalizálni tudj.
1. progi:
//////////////////////////////////////////////////////////////////////////
// Ezt a progit húzd ki pane-re
// Itt megadom neki, hogy a felhasználó jobb gombbal a pane-re aztan a parameters menüre kattintva milyen
// állítási lehetőségek közül választhasson.
// Beállíthatja a periódust. A formula a következő:
// Periods változó legyen egyenlő egy beállított értékkel, aminek a neve "Period", alapértéke 52,
// minimuma 1, maximuma 100, lépésköze pedig 1
// Tehát ezt az értéket állítgathatjuk a fent leírt módon. Jobb gomb a pane-re -> Parameters
// és ott már látjuk is
Periods = Param( "Periods", 15, 1, 100, 1 );
// Az előző analógiájára megadjuk a %K-t is változtathatóra, hogy szabadon módosíthassuk a kívánt értékre
Ksmooth = Param( "%K avg", 3, 1, 30, 1 );
// És a %D-t is ugyanígy
Dsmooth = Param( "%D avg", 3, 1, 30, 1 );
// Itt megadjuk, hogy a Stoch_D legyen egyenlő a Stochastic D indikátorral,
// mégpedig az általunk megadott paraméterekkel vegye fel az értékét.
Stoch_D = StochD( periods , Ksmooth, DSmooth );
// Stochastic K-ra ugyanez
Stoch_K = StochK( periods , Ksmooth);
//Itt kirajzoltatom az indikátorokat.
Plot( Stoch_D, _DEFAULT_NAME(), colorRed, 0 );
Plot( Stoch_K, _DEFAULT_NAME(), colorBlue, 0 );
// Itt megadom, hogy mit tekintsen vételi, eladási, short nyitási és zárási pontnak.
// A cross függvény 1-et ad, amikor az első fügvény alulról metszi a másodikat.
// Ebben az esetben vétel, ha stochk alulról metszi stochd-t és eladás, ha fordítva.
Buy= Cross(Stoch_K, Stoch_D);
Sell= Cross(Stoch_D, Stoch_K);
Short= Sell;
Cover= Buy;
// Itt a kereskedési nyilakat rajzoltatom ki vele.
PlotShapes( IIf(Buy, shapeUpArrow, Null), colorGreen, 0, Stoch_K*1.03);
PlotShapes( IIf(Sell, shapeDownArrow, Null), colorRed, 0, Stoch_K*0.97);
//////////////////////////////////////////////////////////////////////////////////
2. progi:
//////////////////////////////////////////////////////////////////////////////////
// Ez a program ugyanaz, mint a másik volt kis különbséggel.
// Itt a paraméterek definiálásához nem a Param utasítást használtam, hanem az Optimize-t.
// Ezt így nem lehet kitenni pane-re, mert nem rajzol semmit és nem is lehet állítani benne a paramétereket.
// Viszont ezt lehet optimalizálni!
//
// Ez úgy működik, hogy fent megnyomod a felkiáltójel gombot.
// A felugró ablakban megnyomod a settings gombot.
// Alul a Commissions Rates-nél bepontozod a percent-et és beírod a szövegmezőbe, hogy lábanként hány % a brokidíj.
// Fent Initial Equity-nek az egyszerűség kedvéért állíts be 1 millát.
// Alatta positions: long. Ha hatira nézed, akkor: short és long.
// Periodicity Hourly.
// Ezután nyomd meg az OK-t
//
// Ekkor visszajutsz az Automatic Analysis ablakba
// bepontozod, hogy Apply to current symbol.
// Range-nél meg beállítod, hogy from to tetszőleges általad válsztott időpontot.
// Ne legyen túl tág, mert más a stratégia 5k-n, mint 1,5k-n. Túl szűk se legyen, mert akkor meg kevés a minta.
// Utána klikkelj rá az Optimize gombra.
// Ekkor feldob egy kérdést, hogy sok lesz a számítás biztos akarod-e.
// Nyomj Yes-t és akkor elkezd számolni.
// Várd ki a végét.
//
// Ha végzett akkor látnod kell egy táblázatot a profitra rendezve.
// A táblázat végén pedig az ideális paraméterek lesznek a megfelelő oszlopban. "Periods" oszlopban a periódus,
// "%K avg" oszlopban a %K, stb.
Periods = Optimize( "Periods", 52, 1, 100, 1 );
Ksmooth = Optimize( "%K avg", 8, 1, 30, 1 );
Dsmooth = Optimize( "%D avg", 9, 1, 30, 1 );
Stoch_D = StochD( periods , Ksmooth, DSmooth );
Stoch_K = StochK( periods , Ksmooth);
Buy= Cross(Stoch_K, Stoch_D);
Sell= Cross(Stoch_D, Stoch_K);
Cover=Buy;
Short=Sell;
////////////////////////////////////////////////////////////////////////////////////
Legutóbbi hozzászólások
stoppal kilépni?
#57081 balacyHogyan tudom megoldani, hogy a
Sell= opciót nem adom meg, hanem stoppal lépek ki?
Ha üresen hagyom, akkor hibát jelez. Egyszerűen a belépést szeretném indikátorhoz kötni, de a kilépést a stop mértékével megadni (ApplyStop(stopTypeLoss,stopModePercent,Optimize("MaxLoss",10,1,20,1),True,True);)
Extrém, túlhúzott helyzetekben sok indikátor túl hamar ad kilépési jelzést, majd rá két időegységre megint belépési jelzést ad.
Re: Kis videó
#53296 balacy Előzmény: #53263Nem az én érdemem, hanem Attiláé :)
Re: Kis videó
#53263 Zabás Előzmény: #53199Köszi!
Kis videó
#53199 balacyEgy kis videó a témában, érdemes megnézni:
http://www.elemzeskozpont.hu/content/indikator-parameterek-optimalizalasa-amibroker