nyitás-zárás 2016-05-16T16:58:48+00:00

Címkézve: 

11 bejegyzés megtekintése - 1-11 / 11
  • Szerző
    Bejegyzés
  • NemethAttila
    Tag
    Bejegyzések száma: 27
    #5078 |

    Kedves Radu!
    Miért lehet olyan probléma robot tesztelése során, hogy egyszer normálisan, ahogy kell megnyitja a pozíciót, beállítja a stoppot és célárat és ennek megfelelően dolgozik a robot, másszor pedig amint megnyitja a pozíciót, mindenféle stop és célár beállítás nélkül szinte azonnal bezárja azt. A stop és a célára nem a brókercégnél kerül rögzítésre, hanem azt a robot vizsgálja és rajzolja folyamatosan. Kb. 100 szor átnéztem már a robotot és jónak tűnik, olyan mintha random csinálná ezeket.

    Németh Attila

    Radulovic Attila
    Tag
    Bejegyzések száma: 631

    A legvalószínűbb, hogy valahol megbújik egy programozási (vagy gépelési) hiba, ami azonnali zárást okoz. Írasd ki a zárás környéki if feltételek összes érintett változóját, böngészd végig egyesével a problémás zárásokat. Ha újra és újra ugyanott fordulnak elő a zárások ugyanazon teszten belül, akkor biztosan nem véletlenszerű hibáról van szó.

    NemethAttila
    Tag
    Bejegyzések száma: 27

    A problémám sajna továbbra is megvan, de valószinüleg a spread miatt lehet a gond, de ez csak tipp. Azonban lett egy másik gondom is amire nincs ötletem. A nyereséges zárás úgy van beállítva hogy amint a meghatározott célár felett van (pl. BUY-nál) az Open[0] gyertya akkor zárja be a poziciót, ehez képest nem a nulladik gyertya megnyitására záródik be hanem épphogy a nulladik gyertya záró áránál zárja be a poziciót. Ez miért lehet?

    Radulovic Attila
    Tag
    Bejegyzések száma: 631

    Látatlanban nehéz erre mit mondanom, de valószínűleg az indexekkel van valami probléma a kódban. Szerintem te mindig a nulladik gyertyára hivatkozol, ami rendben is lenne, csakhogy az indexek folyamatosan változnak.

    A zárást neked új gyertyánként kell ellenőrizned; azaz minden gyertya bezáródása után futtasd le a célár ellenőrzést. Csinálhatod azt, hogy a Bars változót változását, vagy akár a szerveridő változását ellenőrzöd, és ez alapján döntesz arról, hogy mikor kell célárat ellenőrizni.

    NemethAttila
    Tag
    Bejegyzések száma: 27

    Kedves Radu!
    Abban szeretnék segítséget kérni, hogy van egy olyan problémám miszerint, a robotom amit készítgetek egy devizapáron egy időperiódusban több pozíciót is megnyit, longot és shortot felváltva, ahogy a logika kívánja. De az elképzelésem az, hogy megadott long és megadott short célár esetében külön zárja be a long célárnál az összes buy pozicót, és majd ha eléri a short célárat akkor majd az összes sell poziciót. De jelenleg ehelyett azt csinálja, hogy amint eléri az egyik célárat bezárja (jobb esetben) az összes buy és összes sell poziciót, de van amikor kihagy egyet, kettőt és nyitva hagyja. Kérdésem az, az hogy hogyan lehetne ezt orvosolni? Gondolom a zárásnál az OrderSelect-el kellene kiválasztatni hogy csak a buy-t vagy csak a sell-t figyelje… de egyszerűen már nem értem. Vagy tudna rá nekem mutatni valaki valami példát erre, hogy mi a helyes megoldás ebben az esetben? Azon gondolkoztam még hogy az baj lehet-e hogy egy magic számon nyitja meg a buy-t és a sell-t is és nem tudja így szétszedni? De aztán kipróbáltam úgy hogy külön magic számokat kapjon de a helyzet akkor is ugyan ez maradt.
    Jelenleg így néz ki ez a rész pl a short esetében nálam:

    for(int ics = OrdersTotal()-1; ics>=0 ; ics–){
    if(OrderSelect(ics,SELECT_BY_POS)==true && OrderSymbol() == Symbol() && (OrderMagicNumber() == magicSz || OrderComment() == “”+magicSz)&& (OrderType()== OP_SELL)){
    if (OrderClose(OrderTicket(),OrderLots(),Ask,3,Pink)){

    Előre is köszönöm a segítséget:
    Németh Attila

    Radulovic Attila
    Tag
    Bejegyzések száma: 631

    Kedves Attila!

    Ezt a cikket olvasd el, megoldódik majd a problémád.

    NemethAttila
    Tag
    Bejegyzések száma: 27

    Köszönöm szépen, ez így elég tömény most egyszerre, elsőre fel sem bírtam fogni, de megpróbálom átrágni magam rajta.:)

    Radulovic Attila
    Tag
    Bejegyzések száma: 631

    Nincs mit, hajrá! 😉

    NemethAttila
    Tag
    Bejegyzések száma: 27

    Amit küldtél az alapján annak szinte 100%os felhasználásával sikerült csinálnom egy külön robotot amit ha ráhuzok a chartra csak a shortokat vagy csak a longokat zárja be kívánság szerint, csak abban kérnék most tanácsot, hogy hogyan tudnám ezt úgy berakni a kívánt robotba hogy jó legyen, illetve ne kelljen több helyre beilleszteni. A logika szerint 4 különböző helyre kellene beraknom, mert van külön egy rész ami a long célárra zár, illetve stopra, valamint ugyan ez shortra. Be lehet rakni 1 helyre csak az egész kódsort, úgy hogy arra hivatkozzon valahogy a zárás résznél? külön include fájlt nem akarok belőle csinálni, bár igazából azt sem tudom hogy arra hogy lehetne hivatkozni helyesen.?

    NemethAttila
    Tag
    Bejegyzések száma: 27

    Kedves Radu, végül sikerült leprogramoznom a helyes zárást az alapján amit linkeltél. Ráraktam demószámlára a robotot és figyelem hogy működik. A gyors ellenőrzés érdekében M1 és M5 időtávon futtatom. Azonban olyan problémát tapasztaltam, hogy ha csak M1en vagy M5 időtávon fut a robot akkor tökéletes nyit, zár, nem keveri össze a zárásokat ahogy azt korábban írtam.
    Azonban, ha mind a 2 időtávon M1 és M5 ön egyszerre van kötés, akkor olyat csinál, hogy amennyiben egyiknél jelzi a robot hogy, pl a long pozíciók elérték a célárjukat és bezárja a pozíciókat, úgy a másik idősíkban lévő long pozicók is bezáródnak. Mit lehet ez ellen tenni? Azt próbáltam hogy a kiválogatásnál beraktam a Period() szűrést is, de ezek szerint valamit mégsem jól csináltam. Most így néz ki a zárásnak ez a szűrési része nálam:

    if (OrderSymbol() == Symbol() && Period() && (OrderType()== OP_BUY)) {

    Tudnál ötletet adni, hogy mi a lehet a hiba?
    Attila

    Radulovic Attila
    Tag
    Bejegyzések száma: 631

    A több helyen történő használat kapcsán: a záró kódot ki tudod szervezni egy függvénybe, amit igény szerint akárhányszor meg tudsz hívni. Hosszabb távon ez az egyik jó megoldás arra, hogy ha a záró funkcióban valami probléma van, akkor ne 4 helyen kelljen javítani, csak 1 helyen. Gondolom, ezt magad is így csináltad!

    Az idősíktól függő zárás kapcsán: a Period() feltétele jelenleg teljesen hibás a bemásolt sorban. Egy megoldás lehet az, hogy pl. az idősíkot a pozíciónyitás során a megjegyzés rovatba mented, így később tudni lehet, hogy mely pozíció mely idősík miatt nyílt meg, és lehet rájuk keresni, szűrni és e feltétel alapján zárni. Ezt szövegesen kicsit bonyolult lenne elmagyarázni, ezért a javaslatom a következő: egy konzultáció során az összes előre kigyűjtött kérdésedre válaszolok képernyőmegosztással, ahol hang alapon (Skype-on) elmagyarázom a megoldását például ennek a feladatnak. Ezt a te gépeden csináljuk meg, közösen, és erről akár videó- és hangfelvételt is készítek hogy megmaradjon neked és később vissza tudd nézni. Ha ez érdekes lehet számodra, akkor jelezd ezt ezen az oldalon keresztül, e-mailben az info@radu.hu vagy telefonon a 62/202-372-es számon keresztül. A Support Pro + Oktatás csomagra gondolok.

11 bejegyzés megtekintése - 1-11 / 11

A hozzászóláshoz jelentkezz be!