Tőzsde, CFD, Forex kereskedés, oktatás, tanácsadás, vagyonépítés, érdekvédelem. 

Forex Klub

csütörtök, 24 december 2015 08:06

Mozgóátlagok másképpen 2. rész


Az első programozói lépések, avagy az elmélet gyakorlati továbbfejlesztése.

vikgas mozgo maskepp2

  1. Csinálj egy új Custom indicator-t a MetaEditor segítségével. Elég az OnCalculate (...) rendszerfügvényt beépíteni (ezt a varázsló helyetted elvégzi). Az OnCalculate rendszerfüggvény az aktuális gyertya összes változásakor meghívódik. A kódunk döntő, legfontosabb része ebben fog futni.
  2. Futtasd le (F7), majd tedd rá az üres csártra. Láss csodát, nem látsz semmit, hiszen ez egy üres indikátor:) 
    A "Limit_Ema_step01" néven megtalálod az üres indikátor kódját (.mq4). 
  3. Nyisd meg a "Limit_Ema_step02" indicator kódját és a tartalmát másold a Metaeditorba. Mentsd el, a lefordított állományt pedig húzd rá a csártra. Megjelenik egy EMA piros vonalat rajzolva. Tehát ez már egy működő indikátor. Ezen állománynak a mt4 "Indicators" könyvtárában kell lennie, hogy lássd a Navigator ablakban. 

Hasonlítsd össze a két kódot a Meta Editor segítségével. A különbség, azaz néhány plussz kódsor teszi a saját indikátorunkat működő képessé. A legfontosabb mindig az egyszerűség!

Gyorsan soroljuk fel az új kódsorokat:

#property indicator_color1 Red - beállítja az első indikátorunk színét pirosra

input int InpEMAPeriod=3; // 01_EMAPeriod - ez egy input változó, segítségével müködés közben az MT4-ben változtathatunk az indikátor működésén. Az így definált változók jelennek meg a "bemenő adatok" felsorolásban az MT4-ben. Itt az egy szem EMA indikátorunk periódus értékét állíthajuk be.

double Ema_Buffer[]; - ez az első indikátorunk Bufferje, ezen tömbváltozó segítségével tudjuk tartalommal feltölteni az esetünkben az Ema értékeit. Azért tömb, mivel az összes gyertya eleméhez társít egy ár(price) értéket.

double _ema; -az aktuális (utlosó) gyertyához tartozó indikátor érték változója

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,Ema_Buffer); - ez a két kód-sor kimondottan az OnInit() függvényhez tartoznak, segítségével az indikátorok működést tudjuk meghatározni. Az első paraméter ( 0 ) határozza meg hogy, melyik indikátorhoz tartoznak. első indikátor =0, nyolcadik indkiátor= 7, stb. SetIndexStyle meghatározza, hogy vonalat lássunk a csárton, a SetIndexBuffer összefüzi az első indkiátorunkat az Ema_Buffer tömbhöz.

{
int i=0;
for(i=rates_total-1; i>-1 && !IsStopped(); i--)
{
_ema=iMA(NULL,0,InpEMAPeriod,0,MODE_EMA,PRICE_MEDIAN,i);
Ema_Buffer[i]= _ema;
}
-A fenti kód az OnCalculate() rendszerfüggvényben az indkátorunk tényleges motorja, "for" ciklusutasítás segítségével feltölti az első indikátrounkat az összes gyertyához tartozó adatokkal. Az iMA() MQL4-es függvény végzi a tényleges számítást, tehát ez a kód valósítja meg a mi Ema-nkat. Akit érdekel a leírása, írja be a google-ba "mql4 iMA" szavakat és azonnal megkapja a függvény leírását angol nyelven.

_ema=iMA(NULL,0,InpEMAPeriod,0,MODE_EMA,PRICE_MEDIAN,i); -mediánra húzza a mozgó átlagot
_ema=iMA(NULL,0,InpEMAPeriod,0,MODE_EMA,PRICE_HIGH,i); -High értékre húzza
_ema=iMA(NULL,0,InpEMAPeriod,0,MODE_EMA,PRICE_LOW,i); -Low értékre húzza

A legutolsó paraméter az "i", a ciklusutasításból származik, tehát az iMA függvény annyiszor hívódik meg ahány gyertya van az aktuális csárton.

Ha a kódsor előtt "//" jelet látunk, akkor azt a sort fordításkor a Meta Editor nem veszi figyelmbe, mint ha ott sem lenne. Ez a kód-tesztelésénél nagyon hasznos segéd eszköz.

Ez a világ legegyszerűbb indikátora ("Limit_Ema_step02") mt4 alá, bátran kezdjétek el próbálgani a kód-sorokat ki-be kapcsolva, hogyan változik meg az indikátor működése azonnal (F7). A változás csak új ár jegyzésekor fog történni, ha nincs az instrumentumon forgalom (pl: hétvégén), akkor rakjátok fel az indikátort egy lassan futó BackTester csártjára és ott ugyanúgy fog müködni minden gyertya változáskor.


Legvégül az összefoglalás:

  1. Létrehoztunk egy üres costum indicator-t, ami lefordítva (F7) és a chartra húzva semmi eredményt nem produkált. Ez minden indikátor üres csontváza. - "Limit_Ema_step01"
  2. Beleépítettünk egy egyszerű Ema-t, az mql4-ből elérhető gyári fügvényhívással. A többi elérhető függvény listája: "http://docs.mql4.com/indicators".

Rendeltünk hozzá:

  • színt,
  • bemeneti (input) változót (mellyel meghatározhatjuk az EMA periódusát), 
  • buffert (ami a gyertyákhoz tartozó EMA értékek tömbje)
  • változót, amely az aktuális EMA értéket fogadja
  • vonal nézetet rendeltünk az indikátorhoz (DRAW_LINE)
  • összekötöttük a buffert az indkátorral
  • végül az onCalculate() függvényben egy ciklusutasítás segítségével az indikátor tömbjét feltöltöttük, és az eredményben lefordítás utána a csárton gyönyörködhettünk:)


A következős lépésben az saját fejlesztésű indikátorunkba újabb indikátorokat építünk, hisz a célunk továbbra is a felvázolt kereskedési stratégia leprogramozása, és ehhez egy valódi kompozit indikátorra lesz szükségünk. Jóccakát.

Kategória: Ti írtátok
csütörtök, 12 február 2015 15:08

A kis veszteség is lehet nyereség

Ismét egy alul kanócos gyertyával szúrt bele a 250-es mozgóba,majd úgy nézett ki elindul felfelé, ezért longot nyitottam.

Megint nem volt túl szép a kép, mert a többi mozgó felette volt.

DAX kereskedés

Egy kis megindulás után elkezdett csapkodni, élesen visszapattant a rövidebb mozgókról, ezért kézzel zártam  8 pont veszteséggel. Kiderült, hogy jó döntés volt, mert vitte volna stopot is, ami 22 pont volt. 

DAX kereskedés

Veszteség után nem szívesen szállok vissza, de ahogy elnézem utólag a chartot, nem is lett volna jó lehetőség. Bezzeg másnap! Arról viszont lemaradtam, mert reggel az FXCM beépített renko chartját próbálgattam, aminek az eredménye egy 0-s és egy 10 pontos veszteség lett. Ezután már csak akkor néztem rá a charta, miután a fegyverszünet hírére elszaladt a vonat nélkülem. 

Tanulság: nem akkor kell új stratégiát próbálgatni, amikor a meglévővel pénzt lehetne keresni!

Kategória: Ti írtátok
 

Regisztrálj!

Tagjaink további tartalmakat is elérhetnek!
A regisztráció INGYENES!

Keresés

Idézet

"A legvégén nem az fog számítani, hogy mennyi év volt életedben, hanem hogy mennyi élet volt éveidben."

Abraham Lincoln

Reklám