Chciałbym podzielić się problemem z którym sam sie niemogę uporać, mianowicie:
Podczas stratu EA natychmiast jest składane jest zlecenie buy lub sell.
W tej samej chwili ustawiany jest SL który jest definiowany przez ten warunek
Kod: Zaznacz cały
//extern int stopLoss = 10 ; //stop loss pozostaje jako wyliczona na starcie strategii wartosc Box_Size * Wejscie_Renko
I teraz tak:
Chciałbym aby SL za każdym razem przeskakiwał o dajmy nato 3 pipsy jeżeli aktualna cena w tym przypadku wzrośnie o 3 pipsy:
Czyli dokładniej: Dil buy wzrasta do 1.3529 wtedy SL zmienia się na 1.3519. I tak wkółko aż do chwili gdy Dil nie wyłoży się na SL, wtedy otwiera się dil przeciwstawny z takim samym SL 10 pipsów i tak samo SL jest przesuwany o 3 pipsy.
Więc trzeba zmienić funkcję w kodzie:
Kod: Zaznacz cały
void moveSl(){
//bierze order z ticketem, ktory jest zapisany i sprawdza czy juz trzeba przesunac stoplos
//sl przesuwamy, jesli odsuniemy sie o BoxSize * (Wejscie_Renko+1) od sl. sl ustawiamy wtedy na BoxSize * (Wejscie_Renko)
if(ticket <=0)return(0);
if(OrderSelect(ticket,SELECT_BY_TICKET)==false){
Print("Order Select Error in move SL");
return(0);//jak cos zle to lepiej nic nie robic
}
if(OrderCloseTime()!=0)return(0);//nie modyfikujemy zamknietego deala
if(MathAbs(OrderClosePrice()-OrderStopLoss()) > //jesli odleglosc sl od biezacej ceny wynosi wiecej niz
MathAbs((BoxSize*(Wejscie_Renko+1))) //ta wartosc
){
//to modyfikujemy
if(OrderType()==OP_BUY){
if(OrderModify(OrderTicket(),0,NormalizeDouble(Bid-(BoxSize*Wejscie_Renko),Digits),OrderTakeProfit(),0)==false){
Print("SL modify error: "+ GetLastError()+ " old SL: "+OrderStopLoss()+" new SL: "+ NormalizeDouble(Bid-(BoxSize*Wejscie_Renko)*Point,Digits)+ " price:"+OrderClosePrice());
}
}
if(OrderType()==OP_SELL){
if(OrderModify(OrderTicket(),0,NormalizeDouble(Ask+(BoxSize*Wejscie_Renko),Digits),OrderTakeProfit(),0)==false){
Print("SL modify error: "+ GetLastError()+ " old SL: "+OrderStopLoss()+" new SL: "+ NormalizeDouble(Bid-(BoxSize*Wejscie_Renko)*Point,Digits)+ " price:"+OrderClosePrice());