Hozzászólások
-
SzerzőBejegyzés
-
Hozzászólás: Pozicó nyitás #5598
Köszi a tippeket:)
Ma pont felhívott valaki az XMtől hogy mennyire vagy elégedett a számlámmal és tud-e valamiben segíteni. Elmeséltem neki is a problémámat. Aztán mondta hogy most már az XMnél nem lehet micro loton 0.01 lotot kötni mert most költöztetik át magukat az UK-be és most már nekem is UK számlám van és ott nem lehet vagy ilyesmi. Aztán mondom oké, ez rendben van, de sok robot működik úgy sok embernél hogy Marketinfó lekérdezés alapján nyit és akkor ez mindenkinél problémát fog okozni, hogy a MarketInfó azt jelzi hogy 0,01-et is lehet kötni közben meg nem lehet csak 0.1-et.
Aztán mondta hogy jó érti ezt a problémát fogja jelezni az illetékeseknek, bár nemtudom hogy így lesz-e mert még azóta is ez a helyzet. De pl lekérdeztem a MODE_LOTSTEP-et is aztán ott pl csak 0,1 van.Szóval a lényeg, úgy néz ki ez szolgáltató hiba lesz:)
Hozzászólás: Pozicó nyitás #5596Igen az XM-nél micro lotos számlám van, egyik kódban sem használok soha konkrét szimbólum hivatkozást. Minden esetben Symbol()-t használok.
A NormalizeDouble-val sem javult a helyzet sajna.
Szóval a robot érdemi része:
extern int LotSizeX = 1; //ez nálam a marketinfóvel lekérdezett minimum lot jelen esetben 1 szeres szorzata
double LotSize = 0.01; // a lotsizra hivatkozok a kódokban a további részekben…
majd a meghívom a marketinfót:
LotSize = MarketInfo(Symbol(),MODE_MINLOT)*LotSizeX;aztán a pozició nyitásnál az OrderSendnél ezt a LotSize-ot hivatkozom meg.
….. = OrderSend(Symbol(), OP_BUY, LotSize, Ask, 3, 0, 0, „primary buy”, magicSz, 0, Blue);Szóval a lényeg hogy ha ezt egy sciptre rakom hogy printeljen ki mindent akkor azt írja hogy 0.01 a minimum lot de annyit viszont nem enged kötni csak 0,1-et
De más számlán pl az IronFxnél (tudom szar cég de tesztelésre jó :D ) a számla valóságának megfelelően kérdeződik le minden. Ott gond nélkül nyit 0.01-et.
Hozzászólás: nyitás-zárás #5315Kedves 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?
AttilaHozzászólás: nyitás-zárás #5303Amit 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.?
Hozzászólás: nyitás-zárás #5301Kö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.:)
Hozzászólás: nyitás-zárás #5275Kedves 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 AttilaHozzászólás: nyitás-zárás #5085A 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?
Hozzászólás: Market is closed! #4978Igen igy már viágosabb:) de ezt a zavart okozna részt nem értem. mit értesz ez alatt pontosabban? Nekem pl 4 nyitási blokkom van, vagyis két különböző feltétel alapján nyithat longot és kettő alapján shortot, ez 4 felé van véve, és mind a 4be beillesztettem ezt a && GetLastError() == 0 && feltételt. Ez igy bezavarhat, vagy okozhat kárt, vagy hibát a robot müködésében? igy értetted? vagy ez mind a 4 feltételcsoport ellenőrzésekor lekérdeződik és az adott pillanat értékét veszi figyelembe és akkor minden tök jó? lehet értetlenkedek:) de nemtudok hibát generálni, hogy ellenőrizzem a müködését. :) A hibakezelés is tök jó ötlet, de egyenlőre nincs rá ötletem hogy tudnám hasznosítani. Nekem egyenlőre az a célom hogy bármilyen hiba esetén ne akarjon kötni új pozicót, de pl a meglévő pozicó zárását ha épp eléri a célárat akkor azt akármi van próbálja bezárni, nyilván ha nem olyan hiba van ami ezt nem engedi. Tehát zárási feltételnél nem akarom a GetLastError értékeit figyelembe venni.:)
Hozzászólás: Market is closed! #4976Őszintén szólva nemvágom hogy lehetne a visszatérési értéket külön változóba menten, meg nem is igazán értem ezt a részét a javaslatodnak:) én az alábbi megoldással probálkoztam, csak nemtudom hogy jó e, nyitási feltétlnek be írtam hogy if(… az adott indikátorok nyitási feltétele… && GetLastError() == 0 && … egyéb nyitási feltétel) és ha ez teljesül akkor nyitja meg a poziciót. Én azt feltételezem a jelenlegi tudásommal hogy ha ez alapján 0 értéket kapok vissza az adott pillanatban és teljesül a többi feltétel is akkor megtudja nyitni a pozicót. Vagy tévedek? vagy ha esetleg hibás az elképzelésem tudnál segíteni a helyes megoldásban?
Hozzászólás: Market is closed! #4974Bocsánat az amatőr kérdésekért:) én is a GetLastError() függvény alkalmazásán gondolkodok, csak nem vagyok benne biztos hogy jól alkalmazom. Ha belerakom simán csak a script elejére mint pl a free margin vizsgálatát, hogy vizsgálja a GetLastError értékeket, akkor is folyamatosan fogja figyelni a fent említett market close hiba értéket, vagy azt csak akkor figyeli ha már megpróbál pozíciót nyitni? Ha ez így van ebben az esetben akár be lehetne úgy rakni nyitási feltételnek, mint akár egy indikátort vagy mondjuk spread figyelést? Pl nyisson pozíciót ha ilyen-olyan indikátor a meghatározott értéken van, a spread értéke a meghatározott érték alatt van és GetLastError értéke egyenlő nullával. Ez így működhet?
Hozzászólás: Market is closed! #4969A logika szerint bizonyos feltételek teljesülése esetén új gyertya nyitásakor nyit poziciót. Abban tudnál segíteni, vagy iránymutatást adni, hogy milyen feltétel hozzáadásával küszöbölhetném ki ezt a problémát? keresgélek de nem találok rá választ.
Én nem tapasztaltam még ezt a jelenséget így ahogy írtad. Lehet azért mert jelenleg nem 99%os teszteket csinálok. Tickstory-val letöltött adatokból csinálok adat mentést txt-be és azt importálom be a history centerben a megfelelő helyre, persze úgy hogy előtte fizikailag is törlöm a mappákból az esetlegesen ott lévő adatokat, valamint magából a history centerből is törlöm ha letölt valamit közben. Az optimalizálás során beállítom, hogy pl eurusd M15 ön 2010.01.01-től fusson 2015.12.22-ig. Ezzel elbajlódik olyan 3-4 órán keresztül, majd kiválasztom, hogy számomra melyik lenne az ideális beállítás és lefuttatom azt az egyet. Az eredményeknél látom hogy ugyan abban az időtávban teszteli (akkor van az első kötés, meg az utolsó kötés is kb., nincs tartományon kívüli kötéseredmény) de mégis valahogy elcsúszik az egész. De van hogy más teszteknél (ez az esetek többsége) tökéletes minden. Szóval még rejtély számomra.
Sziasztok!
Miért lehet az, vagy hol lehet a probléma abban az esetben hogy MT4-ben optimalizálás után kiválasztom a számomra optimális beállítást (duplán kattintok rá), figyelek arra, hogy a teszt idő intervalluma ne módosuljon, a spread is ugyan az mint az optimalizálás során, de mégis az optimalizálás során kitesztelt nyereséges beállítás, veszteségesen fut le. ?
Németh AttilaHozzászólás: Freemargin #4862:) Bocsánat, igen azt nem akarom ami a leírásom második részében van, nem akarom hogy folyamatosan csinálja az ellenőrzést, csak egyetlen egyszer mikor rá helyezem a chartra, de máris sokat segítettél:)
Hozzászólás: Freemargin #4860Köszönöm, ezzel sikerül megoldani a problémámat:) az AccountFreeMarginCheck-el próbálkoztam én is, csak rossz helyre írtam be. De lenne egy másik kérdésem ami hasonló. Van olyan opció ami a robotnak a chartra rakásánál csak egyetlen egyszer fut le és soha többé? Gondolok arra, hogy egyszer nézi csak meg, hogy elég pénz vagy elég free margin van-e egy kitesztelt beállítás használatára… és nem az van hogy mondjuk beállítom hogy a minimális pénz nagyobb legyen mint 500 dollár például és azt folyamatosan vizsgálja. Mert ezzel az a baj, hogy ha veszít a robot akkor nem lesz meg az 500 dollár és leáll, pedig a logika mondjuk megengedné hogy veszítsen… remélem nem voltam túl zavaros:)
-
SzerzőBejegyzés