Forex programozás Fórum Egyéb Az ideális Expert nyomában

Címkézve: 

3 bejegyzés megtekintése - 1-3 / 3
  • Szerző
    Bejegyzés
  • Roden
    Tag
    Bejegyzések száma: 52

    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)
      {
       
      }
    //+------------------------------------------------------------------+
    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    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?

    Roden
    Tag
    Bejegyzések száma: 52

    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.

3 bejegyzés megtekintése - 1-3 / 3
  • Be kell jelentkezni a hozzászóláshoz.