Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Pontos Cross Kód
-
SzerzőBejegyzés
-
Tisztelt Radu!
2 kérdést szeretnék feltenni, illetve megkapni az esetleges választ.
1.kérdésem egy olyan kereszteződéses indikátorral működő robot kódrész lenne,ami pontosan köt( amivel még nem találkoztam, pedig sok if ..feltételt láttam és próbáltam).
Probléma:
Vegyünk egy akármilyen külön ablakban lévő cross típusú indikátort, ami folyamatos és szaggatott vonalat rajzol.
Ha a szaggatott(SZAGG) vonal van felül és a folyamatos(FOLY) kerül alulra akkor buy, ha fordítva sell.
Gyakorlatilag a robot működése során a pozíciót zárnia kell és nyitnia az ellentétest (agresszívan kereskedünk folyamatosan tartunk 1db pozíciót), ha a feltétel megváltozik. TP-t, SL-t nem alkalmazunk.2, 1,és 0(jele) idősíkban vizsgált adatot kapunk az icustom-ból. Az if operátor segítségével összehasonlítjuk a múltak és jelen gyertyához(gyertyákhoz) tartozó értékeket:
pl:
//———–BUY
if(SZAGG2=FOLY1&&SZAGGjelen>FOLYjelen)BUY=”true”;
//———–SELL
if(SZAGG22>FOLY2&&SZAGG1<=FOLY1&&SZAGGjelen<FOLYjelen)SELL="true";Ezzel az a gond, hogy előfordul olyan piaci környezet,és ennek következtében indikátor működés,amely során nem fordul meg a pozíció,pedig az indikátor(mutatja a kereszteződést) és tartja a robotunk a "rossz irányt". Nem alkalmazunk TP-t,és SL-t e miatt nagyon fontos lenne a pontos működés.
Tehát egy olyan változatra lennék kíváncsi, ami ténylegesen tudja ezt az elvárást.
2.kérdésem, pedig egy olyan eljárás, vagy MQL parancs lenne, amivel elérem azt, hogy az 1.bar legutolsó tickjéhez tartozó adott indikátor értékét valamint a 0bár legelső tickjéhez tartozó értéket "eltárolja a program" és ezt követően a 0 bar következő(2.) tickjénél összehasonlítsuk az"eltárolt" értékeket. Amennyiben a feltétel kedvező= indulhat az order, amennyiben nem ,várjuk a következő gyertyaváltást.
Ugyanúgy, mint a Close[i], Open[i] ,de nem az árfolyam ára a lényeges számunkra, hanem a gyertyaváltáskor a záró(1.bar-hoz) és nyitó(0.bar-hoz) tartozó indikátorértékek.Remélem a kérdéseim érthetőek voltak.
Válaszod előre is köszönöm.
Üdv.:mirage76
Az első kérdés kapcsán jó volna látnom az indikátort. Még az is lehet, hogy maga az indikátor szar és te mindent jól csinálsz.
A második kérdés kapcsán: rakd el minden tickhez tartozó indikátori értéket. A legelső tick az gyakorlatilag a gyertya nyitóára, szóval azzal kapcsolatban extra dolgot nem kell tenned.
A második ticknél pedig hasonlítsd össze a kettőt.A tickek darabszámát a Volume értékek őrzik (Metatrader alatt; egyébként ez az érték a kereskedési mennyiségekre vonatkozna).
Tehát: minden tickben lekérdezed az indikátor aktuális értékét – mondjuk egy CurrentValue változóba. Eközben van egy feltételed, ami csak akkor teljesülhet ha Volume értéke 1. Ekkor a CurrentValue értékét – még mielőtt feltöltenéd az aktuális tickhez tartozó indikátori értékkel – elrakod egy PrevValue -változóba. Ezután már csak megvárod if (Volume == 2) feltétel teljesülését, és itt azt csinálsz ezen belül amit akarsz.
PrevValue értéke az init után legyen -1, amit persze ellenőrzöl a Volume == 2 feltételben is, hiszen ha pont úgy sikerül elindítanod a robotot hogy a PrevValue -nak még nincs értéke, akkor nem lesz jó az adatod. Ilyen esetekben várj a következő gyertyáig.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.