Forex programozás › Fórum › Egyéb › Az ideális Expert nyomában
Címkézve: expert fejlesztés
-
SzerzőBejegyzés
-
Tudom ez egy igen szerteágazó téma, de pont ez a jó benne:
Nektek mi az alapvető elvárásotok egy expert advisor-tól programozói szemmel?
Mi az amit mindenképpen tudnia kell?
És felhasználói szemmel? Vajon mikor elégedett egy átlagfelhasználó egy robottal? (itt most természetesen a kezelhetőségre gondolok, a pénzügyi részével nyilván akkor elégedett ha naponta min. 10x-ezi a befektetett tőkéjét :) )Beszúrok ide egy alapsémát ami nagyvonalakban leírja, hogy szerintem mi az amit alapvetően tudnia kell egy robotnak.
Nem teljes, ezt én is tudom, de akkor nem is lenne mit hozzászólni. :)
Nos szerintetek jó ez így?
Olyasmire lennék kiváncsi (és gondolom ti is) mint: végrehajtási sorrend, képességek, megbízhatóság
//+------------------------------------------------------------------+ //| BasicExpert.mq4 | //| Peter K. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Peter K." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { PrevBalance=AccountBalance(); if(_UninitReason!=REASON_CHARTCHANGE) { } //EventSetTimer(60); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { 1. //--- Környezeti adatgyűjtés ------------------------------------- // Globális változók kezelése // MarketInfo (spread, tickvalue, engedélyek, nyitvatartás, minlot, lotstep, stb) 2. //--- Pénz befizetés/felvét lekezelése - (Money Management) ------ // csak ha ( PrevBalance!=AccountBalance() ) 3. //--- Credit jóváírás lekezelése - (Money Management) ------------ // ha a bróker ad némi hitelt is a pénzbefizetés összege után, akkor... //...csúnyán bekavarhat a money managementbe ha nincs lekezelve 4. //--- Kereskedelmi (szerver) események/állapotváltozások lekezelése, lereagálása // Pozíció zárulása StopLoss-szal (állapotmentéshez képest) // Pozíció zárulása TakeProfit miatt (állapotmentéshez képest) // Függő megbízások aktiválódása (kívánt ár/valós ár eltérések pl.) 5. //--- Szimbólum szintű zárás - (Money Management) ---------------- // Összesített tőkenövekmény elérésekor // Adott piac elhagyása miatt // Kockázatos esemény bekövetkezése előtt (választások, FED, NFP, stb.) // (CloseBy preferálása ha szükséges/lehetséges) 6. //--- Egyedi pozíció zárás --------------------------------------- // Exit stratégia alkalmazása // Részleges zárás 7. //--- Trailing Stop ---------------------------------------------- // Követő stop stratégiák alkalmazása 8. //--- Pozíció nyitás --------------------------------------------- // Kereskedési startégiák végrehajtása 9. //--- Számított értékek kalkulálása ------------------------------ // Breakeven level // Kockázati szintek // Profit szintek // AutoFibo, stb. 10.//--- Adat/állapot mentés ---------------------------------------- // Nyitott pozíciók állapotmentése - pl. ticket-ek // Függő pozíciók állapotmentése - pl. ticket-ek // PrevBid (gap=PrevBid-Bid) // PrevBalance, PrevCredit 11.//--- Vizuális megjelenítés -------------------------------------- // comment, címkék, vonalak, nyilak, stb. } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { } //+------------------------------------------------------------------+
Szerintem ez egy nagyon szépen, igényesen összeállított lista. Szokás kérdése, de én pl. a ticketek adatait nem szoktam menteni és összehasonlítani (szerintem a tiéd bizonyos esetekben jobb megoldás).
Az egyenleg, hitel, bónusz kezelése hasznos dolog, de szvsz egy hosszú időn keresztül kezelt és menedzselt rendszer esetében ígyis-úgyis elkerülhetetlen a napi interakció, azaz érdemes mérlegelni hogy erre automatizmust vagy kézi beavatkozást alkalmaz a kereskedő.
Fontos megjegyezni – bár a lista alapján nem hiszem, hogy Te ne gondolnál rá -, hogy pl. a vizuális megjelenítő rutinok csak valós idejű és vizuális futtatásnál jelenjelenek meg, a minél kevesebb erőforrás fogyasztása érdekében.
Egyébként csak saját stratégiák programozásával foglalkozol, vagy másoknak is vállalsz programozást?
Köszi a pozitív visszajelzést. Az igazság az, hogy az oldaladon közétett MQL könyv miatt kezdtem el foglalkozni a MetaTrader programozással – ezúton is köszönöm, hogy hozzáférhetővé tetted. Innen származik a szemléletem is az eseménykezeléssel kapcsolatban.
A hitel, bónusz kezelésről:
Tudni kell, hog általában tőkecél -ban gondolkodom. Ez azt jelenti, hogy van egy „számla stratégia” a többi „szituáció stratégia” felett. Tehát ha a különbőző instrumentumokon kölönböző ötletek alapján (géppel/kézzel) nyitott megbízások összesítve elérnek egy bizonyos tőkenövekményt (pl. 5%) akkor azt külön is lekezelem (zárás, részleges zárás, SL, stb.).
Így fordult elő velem, hogy éles számlán, nyitott pozíciók melett, pénzbefizetés és credit jóváírás után(=tőkenövekedés), a robotom azonnal zárásokat hajtott végre, így szinte azzonal buktam a befizetett összeg egy jókora részét. Szerencsére nem nagy összegről volt szó, de fájt. Ettem a kefét, hogy hogyan nem gondoltam erre. Ehh.
Ha belegondolok, hogy közzéteszem (eladom) ezt a robotot – ami egyébként minden mást jól csinál, de meghülyül ha pénzt fizetnek be a számlára – hát biztos lettek volna kellemetelen következményei.A lényeg az, hogy a fenti sémából kihagyhatóak a MoneyManagement cimkével ellátott szakaszok, attól az még lehet egy teljes értékű EA. De ha van MoneyManagement (ami ugye az én olvasatomban azt jelenti, hogy nem csak az egyes pozíciókat menedzseli a robot, hanem a teljes számlát is), akkor viszont foglalkozni a kell a befizetéssel/jóváírással mint eseménnyel, és annak lehetséges hatásaival.
Ami a vizuális megjelenítést illeti, mindeddig nem törődtem vele, lévén többnyire olyan startégiák foglalkoztatnak amelyek 3-4 idősík adatát veszik figyelembe egyidőben, az meg ugye MT4 alatt nem tesztelhető.
De feltételezem az IsTesting() vagy az IsVisualMode() függvény használatára gondolsz. (Esetleg másra is?)Jelenleg a MT4 programozást csak ‘hobbi’ tevékenységként űzöm. A saját ötleteimet csiszolgatom.
Az implementálás is egy izgalmas dolog, de fontosabb kérdés, hogy mit is kellene implemetálni tulajdonképpen. :)
A fentiekből adódóan nincs rálátásom milyen eseti felhasználói igények vannak. -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.