Forex programozás Fórum Egyéb bróker szerver túlterhelés

6 bejegyzés megtekintése - 1-6 / 6
  • Szerző
    Bejegyzés
  • kosza
    Tag
    Bejegyzések száma: 23

    Szia Radu és bárki akinek tapasztalata van!
    Fura gondom akadt: Fejlesztgettem egy EA-t, ami demo számlán több páron minden különösebb gond nélkül futott. Ugyanez a jószág éles számlán egy páron szépen csinálta a dolgát, ezért rátettem 4 párra az EA-t. Kb egy hét után kaptam egy mail-t, hogy a robotom nagyon leterheli a bróker szerverét, mert túl nagy frekvenciával küldözget tranzakció kérést. Na most, az EA 15 perces charton kereskedik, a kötéslista szerint szó sincs HFT-ről -amit nehezen lehetne MT4-en keresztül eredményesen űzni- nagyon ritkán zár egy órán belül…
    Az egy páron futtatott problémamentes éles és a négy páron futtatott problémás éles között annyi a különbség, hogy az utóbbi verziónál gyakrabban iratom ki a számlaegyenleget.
    Kérdés: Okozhat egy „Print….” parancs ilyesmit, ha túl gyakran kérem le és íratom ki a számla aktuális egyenlegét? Ha nem, akkor valami ötlet?
    A VPS, amin az EA fut nem a brókernél van.
    Köszönöm

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Szia kosza!

    Látatlanban nehéz így erre bármit mondani, minden esetre önmagában a Print() függvény nem okozhat ilyen problémát. Azt ellenőrizd, hogy az alábbiak közül van-e olyan, amely túlságosan gyakran (pl. tickenként) fut:

    OrderSend(), OrderModify, OrderClose, OrderCloseBy.

    Ezek azok, amelyek valamilyen parancsot küldenek a brókercég szerverére.

    kosza
    Tag
    Bejegyzések száma: 23

    Köszönöm. Ahogy megfejtettem, vagy -ami valószínűbb- lesz még kérdésem, szólok.

    kosza
    Tag
    Bejegyzések száma: 23

    Radu, ránéznél erre? Lehet az volt a baj, hogy a különböző párokon elfelejtettem más magic no-t megadni, így szerencsétlen különböző párokat akart mergelni OrderCloseBy()-el? Nem kellett volna zsákszám kapnom a hibaüzeneteket?
    Köszönöm

    if(PosTpClose==1&&LoLot()*ShLot()>0) //ha egy páron mindkét irányban van nyitott pozi….
    {
    if(((OpLoPr()*LoLot()+ OpShPr()*ShLot()))>MinPrPip()) // …és a pipben mért eredmény nagyobb, mint MinPrPip (OpLoPr()*LoLot() jelentése: nyitott long eredmény szorozva a pozimérettel)
    {
    for(i=0; i<OrdersTotal(); i++) // Order searching cycle
    {
    if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
    {
    if(type== OP_BUY)MagicLong=OrderMagicNumber();
    if(type== OP_SELL)MagicShort=OrderMagicNumber();
    if(MagicLong!=MagicShort)
    {
    CloseOrders(OP_SELL);
    CloseOrders(OP_BUY);
    }
    if(MagicLong==MagicShort)
    {
    type=OrderType();
    if(type== OP_BUY)LongTicket=OrderTicket();
    if(type==OP_SELL)ShortTicket=OrderTicket();

    RefreshRates();
    if(Merge==1) OrderCloseBy(LongTicket,ShortTicket,clCloseBy); // ha mergelés engedélyezett mergelje őket össze
    if(Merge!=1)
    {
    CloseOrders(OP_SELL);
    CloseOrders(OP_BUY);
    }
    }
    }
    }//for(i=0…..
    }
    }//if(PosTpClose==1&&LoLot()*ShLot()>0)

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    A kódod felépítése nekem kissé ködös. Első körben mindenképp ajánlom ezt a cikkemet, mert ebben kitérek például a for cikluson belüli lezárás esetén felmerülő problémákra.

    kosza
    Tag
    Bejegyzések száma: 23

    Kösz, megnézem.

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