Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Kereskedés folytatása
Címkézve: folytatás, hogyan tovább., kereskedés vége, kezdete
-
SzerzőBejegyzés
-
Sajnos elég kezdő vagyok ezen a téren, de végigbogarászva a fórumot, nem találtam rá a megoldásra.
A problémám a következő:
int start()
{
if (OrdersTotal()==0)
int kezdoelad = OrderSend
(Symbol(),OP_SELL,0.1,Bid,5,Bid+100*_Point,Bid-100*_Point,NULL,0,0,Red);
if (??Nem tudom hogyan??)
Ordersend
(Symbol(),OP_BUY,0.1,Ask,5,Ask+100*_Point,Ask-100*_Point,NULL,0,0,Blue);}
???????
Tehát az első részben egy eladást indítok ami a robot indításának a pillanata amivel nincs baj, viszont a 2. if parancs után már rengeteg mindent kipróbáltam hogy az előzőleg bezárt kereskedés után automatikusan nyissa meg de nem sikerült.
Valamint nem tudok új parancssorokat kezdeni értem ezalatt, hogy egy különálló „if” et sem tudok indítani, mert az int start már egyszer megvolt igy ujra nem kezdhetem azzal.
Lehet butaság amit írtam de valahogy elakadtam.
Előre is köszönöm a segítséget.
A cél az lenne, hogy a legutoljára lezárt kereskedés indítana be egy új folyamatot, és persze ettől az összeállítástól függetlenül más stratégiákat is tudjak alkalmazni, például ha az aktív kereskedések nagyon mínuszosak akkor nyit egyet ellentétes irányban.Tovább haladtam, és konkrét időre már tudom aktiválni a kereskedést, de ez sikerült párszor, azóta nem tudok kereskedni élesben demó számlán, a teszter meg egy csomó error 130 at ír ki pedig semmin nem változtattam. először buy-nál nem történt semmi, de most már sell-nél sem csak az error 130, mi lehet a gond… hogyan lehet megoldani ezt a hibát?
Hát újra kezdtem az egészet tiszta lappal, fejjel, erre jutottam:
extern double Profit = 40; //A profit (T/P)
extern double Befektetes = 0.1; //Kereskesdés osszege
extern double Stopploss = 150; //stopploss
extern int Maxkereskedes = 100; //kereskedesek max szama
extern int Leptek = 15; //Mozgási érték pippben
extern int csuszas = 3; //slipp
int eladas,
eladasstopp,
vetel,
vetelstopp;
int start()
{
if (OrdersTotal()<=1) //Ide kellene valami, hogy ha lezárul egy kereskedés profittal, akkor a lentieket mind hajtsa végre
{
eladasstopp=OrderSend
(
Symbol(),
OP_BUYSTOP,
Befektetes,
NormalizeDouble(Ask+Leptek*_Point,Digits), //Remélhetőleg az aktuális ár felett 150 nél rakja le
csuszas,
Stopploss,
Profit,
NULL,
0,
0,
Blue,
);
eladas=OrderSend
(
Symbol(),
OP_BUYLIMIT,
Befektetes,
NormalizeDouble(Ask-Leptek*_Point,Digits), //Remélhetöleg az aktuális ár alatt 150 nél rakja le
csuszas,
Stopploss,
Profit,
NULL,
0,
0,
Blue,
);
vetelstopp=OrderSend
(
Symbol(),
OP_SELLSTOP,
Befektetes,
NormalizeDouble(Bid-Leptek*_Point,Digits), //Remélhetöleg az aktuális ár felett 150 nél rakja le
csuszas,
Stopploss,
Profit,
NULL,
0,
0,
Red,
);
vetel=OrderSend
(
Symbol(),
OP_SELLLIMIT,
Befektetes,
NormalizeDouble(Bid+Leptek*_Point,Digits), //Remélhetöleg az aktuális ár alatt 150 nél rakja le
csuszas,
Stopploss,
Profit,
NULL,
0,
0,
Red,
);
}Elnézést, egy sorba kellett volna írnom de csak bemásoltam, és még annyi, hogy mind a négy megbízásnál „sintax error, parameter missed”-et ír ki, de nem tudom miért….Többször átnéztem nem hiányoznak paraméterek, vagy csak én siklottam el valami felett…??
Szia!
Első körben az utolsó pozíció megállapítását szükséges megértened, kipróbálnod és megtanulnod: ebben a bejegyzésben írtam róla.
Az utolsó bejegyzésedben a Red szó után van egy felesleges vessző, azt vedd ki, illetve a Red helyett a clrRed konstanst használd.
A további elvárásod kapcsán főként szervezési problémákba fogsz belefutni. Figyelmedbe ajánlok egy konzultációt, amikor is az összegyűjtött kérdéseidre online beszélgetésben adok választ megosztott képernyőn, és segítek elkészíteni azokat a kódrészeket, amelyekre szükséged van. Ez egy jó indulási alapot adna, így sok időt tudnál spórolni magadnak.
Köszönöm a segítségedet, a MetaEditor már nem jelez hibát, azonban élesben nem működik, a teszter pedig, vagy error 131 et dob vissza vagy néha error130 at
Valamint köszönöm a felajánlást a konzultációra, megfontolom, de számomra akkor sem világos, hogy számlán miért nem akar működni, de még ha csak egy sellimitet hagyok akkor is error 131 kódot dob vissza. Mi lehet ennek az oka?
Egy külföldi oldalon olvastam, hogy ennek oka lehet a gépemen futó programok által okozott sérülése a registry filekben vagy valami hasonlót szűrtem le.A 130-as és 131-es hibák jelentését itt tudod megnézni.
Elképzelhető, hogy a lotméretet vagy az SL/TP szinteket adod meg rosszul. Vedd figyelembe, hogy a legtöbb számlán a nyitás pillanatában nem lehet beállítani az SL/TP-t, csak közvetlenül a trade megnyílása után. Én erre tippelek.
A gépeden futó programoknak és a registry-dnek az ég világon semmi köze ezekhez a problémákhoz.
Nagyon szépen köszönöm a sok segítséget nagyon hasznos volt, csak ajánlani fogom az oldaladat, megszületett az első normális EA-m tökéletesen működik immáron, most majd ki fog derülni, hogy a stratégiám életképes e… És igen a kereskedés megnyitása után kell visszakeresni és beállítani az értékeket.
Nincs mit, hajrá, és köszönöm a jövőbeli ajánlásokat! Tesztelj sokat és alaposan, mert rengeteg olyan esemény történhet a kereskedés során, amelyet kezelni szükséges.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.