Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Függő megbízások módosítása › Válasz erre: Függő megbízások módosítása
szia!
először is köszönöm szépen a gyors választ, sokat segítettél! mint ahogy lenni szokott, így most is a hiba „user error”-ra vezethető vissza.
a 51-es számba nem vagyok beleszerelmesedve ezt természetesen majd változtatni szeretném.
megpróbáltam megoldani, hogy figyelje az árfolyam változását és csak akkor módosítgasson ha az a feltételek szerint változik. így megszűnt a végtelen ciklus. köszönöm! szerinted egy számláló beiktatása; mondjuk 10 próbálgatás után hagyja az egészet és fusson tovább, helyes irányba lendítené a dolgot?
még egy kérdés, a hibakódokkal kapcsolatban:
találtam egy ErrorDescription() függvényhez hasonló akármit az http://docs.mql4.com/check/GetLastError oldalon. ez használható ahogy ott jelezték. mert nekem nem sikerült.
köszi!
bemásolom a változtatott sorokat (lehet, hogy nem azt csináltam, amit leírtam)…
//függő megbízások elhelyezése----------------------------------------
if
(
vetel==0//még nem helyeztük el a függő vételi megbízást
&& eladas==0//még nem helyeztük el a függő eladási megbízást
)
{
//függő megbízások elhelyezése
while//vételi függő megbízás küldése
(
vetel<1//amíg a vételi függő megbízást el nem helyezi a szerver
)
{
//tervezett kereskedési szintek meghatározása
nyitasszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51)*Point;//vételi pozíció tervezett nyitásszintje
vesztesegszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51-kockazat)*Point;//vételi pozíció tervezett veszteségszintje
nyeresegszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51+nyeresegcel)*Point;//vételi pozíció tervezett nyereségszintje
vetel=OrderSend(Symbol(), OP_BUYSTOP, LOT, nyitasszint_tervezett_vetel, 25, vesztesegszint_tervezett_vetel, nyeresegszint_tervezett_vetel, "vetel", 1, 0, Green);//függő vételi megbízás küldése
if//hibakód vizsgálata
(
vetel<1//nem helyezte el a szerver a függő vételi megbízást
)
{
Print(GetLastError() ,"-as hibakód: ");//hibakód kiírása
}
}
while//eladási függő megbízás küldése
(
eladas<1//amíg az eladási függő megbízást el nem helyezi a szerver
)
{
//tervezett kereskedési szintek meghatározása
nyitasszint_tervezett_eladas=Low[0]-51*Point;//eladási pozíció tervezett nyitásszintje
vesztesegszint_tervezett_eladas=Low[0]-(51-kockazat)*Point;//eladási pozíció tervezett veszteségszintje
nyeresegszint_tervezett_eladas=Low[0]-(51+nyeresegcel)*Point;//eladási pozíció tervezett nyereségszintje
eladas=OrderSend(Symbol(), OP_SELLSTOP, LOT, nyitasszint_tervezett_eladas, 25, vesztesegszint_tervezett_eladas, nyeresegszint_tervezett_eladas, "eladas", 2, 0, Red);//függő eladási megbízás küldése
if//hibakód vizsgálata
(
eladas<1//nem helyezte el a szerver a függő vételi megbízást
)
{
Print(GetLastError() ,"-as hibakód: ");//hibakód kiírása
}
}
}
//--------------------------------------------------------------------
//függő megbízások módosítása-----------------------------------------
if
(
vetel>0//él a függő vételi megbízást
)
{
OrderSelect(vetel, SELECT_BY_TICKET, MODE_TRADES);//vételi megbízás kiválasztása
if//vételi megbízás vizsgálata
(
OrderType()==OP_BUYSTOP//a vételi megbízás függő (nem nyílt még meg)
)
{
if//kereskedési szintek változásának vizsgálata
(
nyitasszint_tervezett_vetel<High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51)*Point//emelkedett a tervezett nyitási szint
)
{
frissites_megbizas_vetel=false;//még nem frissítettük a vételi függő megbízás kereskedési szintjeit
while//amíg a vételi függő megbízást nem módosítja a szerver
(
frissites_megbizas_vetel==false//ha még nem frissültek a függő vételi megbízás a kereskedési szintjei
)
{
//tervezett kereskedési szintek frissítése
nyitasszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51)*Point;//vételi pozíció új tervezett nyitásszintje
vesztesegszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51-kockazat)*Point;//vételi pozíció új tervezett veszteségszintje
nyeresegszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51+nyeresegcel)*Point;//vételi pozíció új tervezett nyereségszintje
frissites_megbizas_vetel=OrderModify(vetel, nyitasszint_tervezett_vetel, vesztesegszint_tervezett_vetel, nyeresegszint_tervezett_vetel, 0, Green);//vételi függő megbízás módosítása
if//hibakód vizsgálata
(
!frissites_megbizas_vetel//nem teljesült a függő vételi megbízás kereskedési szintjeinek a frissítése
)
{
Print(GetLastError() ,"-as hibakód: ");//hibakód kiírása
}
}
}
}
}
if
(
eladas>0//él a függő eladási megbízást
)
{
OrderSelect(eladas, SELECT_BY_TICKET, MODE_TRADES);//eladási megbízás kiválasztása
if//eladási megbízás vizsgálata
(
OrderType()==OP_SELLSTOP//az eladási megbízás függő (nem nyílt még meg)
)
{
if//kereskedési szintek változásának vizsgálata
(
nyitasszint_tervezett_eladas>Low[0]-51*Point//süllyedt a tervezett nyitási szint
)
{
frissites_megbizas_eladas=false;//még nem frissítettük az eladási függő megbízás kereskedési szintjeit
while//amíg az eladási függő megbízást nem módosítja a szerver
(
frissites_megbizas_eladas==false//ha még nem frissültek a függő eladási megbízás a kereskedési szintjei
)
{
//tervezett kereskedési szintek frissítése
nyitasszint_tervezett_eladas=Low[0]-51*Point;//eladási pozíció új tervezett nyitásszintje
vesztesegszint_tervezett_eladas=Low[0]-(51-kockazat)*Point;//eladási pozíció új tervezett veszteségszintje
nyeresegszint_tervezett_eladas=Low[0]-(51+nyeresegcel)*Point;//eladási pozíció új tervezett nyereségszintje
frissites_megbizas_eladas=OrderModify(eladas, nyitasszint_tervezett_eladas, vesztesegszint_tervezett_eladas, nyeresegszint_tervezett_eladas, 0, Red);//eladási függő megbízás módosítása
if//hibakód vizsgálata
(
!frissites_megbizas_eladas//nem teljesült a függő eladási megbízás kereskedési szintjeinek a frissítése
)
{
Print(GetLastError() ,"-as hibakód: ");//hibakód kiírása
}
}
}
}
}
//--------------------------------------------------------------------