Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Mászkáló Trail › Válasz erre: Mászkáló Trail
A stopleveles ellenőrzés dicséretes, de a javított érték kapcsán mindig ellenőrizd, hogy maga a javított érték kedvezőbb-e mint a jelenlegi beállított stoploss érték (értsd: LONG esetén magasabb, SHORT esetén alacsonyabb). Ha ez a feltétel nem teljesül, akkor ne engedd a módosítást, mert akkor fog „táncolni” a stoploss.
Illetve ez az 1 pont hozzáadás katasztrófális, soha ne drótozz ilyesmit a kódodba. Nincs szükség reszelésre, ha valami nem működik univerzálisan, akkor rosszul van felépítve:
OrderStopLoss() > sl + 1*Point*fpc()
Ezt felejtsd el! Használd a NormalizeDouble() eljárást, és hasonlítsd össze a konkrét, megfelelő tizedesjegyre kerekített értékeket. (Amúgy az fpc() függvény nem tudom mit csinál, mivel azt nem csatoltad.)
Ez a sor (és a Bid-es párja) hibás, mivel az egyenlőség egyébként megengedhető:
if (sl <= Ask + StopLevel*Point) continue;
Értem, hogy mit akarsz, de javítsd ki mert ez így ebben a formában helytelen.
Illetve még egy javaslatom van: a continue-k féktelen használata helyett a feltételek igaz ágára építs inkább, lévén hogy egy jól felépített kondíciós rendszernél a nem teljesülés miatt úgyis továbblép a ciklus, nem kell erre külön megkérni. Ráadásul ha már egyszer leellenőrzöd a feltételeket, akkor miért kell újra szűrni rájuk 4 sorral lejjebb? Gondolok itt az instrumentumra, magic számra, stb. Ugyanez igaz a többszöri OrderSelect-re is.