Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 29.12.20
berlin berlin ist offline
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard OrderClose error 4051

moin zusammen,

ich nutze zum testen von indikatoren meist die selbe code struktur. jetzt ist der bollinger in kombi mit dem rsi dran.

ich habe verschiedene dinge probiert und komme dennoch nicht weiter. er eröffnet einen trade, schliesst ihn aber nicht mehr. bei long und short (einzeln getestet)

in der execute long funktion wird das ticket zurückgegeben, wonach dann in der else if anweisung gefragt wird. verstehe einfach nicht warum er nicht schliesst.hab den code verglichen mit den anderen indikatoren die ich getestet hab und konnte keine auffälligkeiten feststellen.

ich danke für erfolgreiche hinweise zur ergreifung des fehlers

lieben gruss,
berlin

hier ist der Teil der checkt ob ein long in frage kommt:
if(IsTradingAllowed())
if(iClose(Symbol(),TimeframeBB,0) > bbLower1){
if(iClose(Symbol(),TimeframeBB,2) < bbLower2 && rsi2 < RSIuntenLong
&& iClose(Symbol(),TimeframeBB,1) < bbUpper1 && rsi1 < RSIuntenLong)
if(orderTicket <= 0){
orderTicket = executeLong();
}
}

else if(iClose(Symbol(),TimeframeBB,0) >= bbUpper0){
if(OrderSelect(orderTicket,SELECT_BY_TICKET) == true){
if(OrderType() == OP_BUY){
bool res = OrderClose(OrderTicket(),OrderLots(),Ask,10000,clr NONE);
orderTicket = 0;
}
}
}

und hier der execute long teil.
int executeLong(){
double entry = Ask;

//double tp = entry + TP * Point;
double sl =entry - SL * Point;

int ticket;
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10000,sl,0,Komm entar,Magic,0,clrNONE);
return ticket;
}