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

Forex Klub

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

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

Írta:
  • Betűméret Betűméret csökkentése Betűméret növelése
  • Nyomtatás
  • E-mail
Értékelés:
(4 szavazat)


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.

Megjelent: 1081 alkalommal Utoljára frissítve: 2016. május 05., csütörtök 13:41
A hozzászóláshoz be kell jelentkezned

Keresés

Forex Tester

Manuális kereskedések szimulálására, és a különféle kereskedési stratégiák professzionális tesztelése alkalmas program. Vásárlás...

forextester

Idézet

"Rengeteg út van és rengeteg zsákutca. Rengeteg lehetőség és rengeteg rossz döntés. Megyünk az úton, ami adatott, és néha megesik, hogy az ember lánya egyszerűen eltéved, mert rossz sarkon fordul be. Nem érdemes azon rágódni, mi lett volna ha... Meg kell keresni a helyes utat, és tovább kell menni. Mindannyian a saját utunkat járjuk. És mi a cél? Hogy megvalósítsuk önmagunkat."

Szex és New York c. film

Reklám