Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 30.12.20
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von berlin Beitrag anzeigen
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;
}
Wahrscheinlich wurde orderTicket an der falsche Stelle deklariert. Wenn das lokal erfolgte ist beim nächsten else if orderTicket = 0.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.