Ich bin mir nicht ganz im Klaren, wie ich am besten einen Trailingstop decrementor einbaue.
Beispiel: Eine Long Order läuft, der erste Trailingabstand ist 1000.
Aufgabe: Geht der Kurs weiter hoch, soll der Trailingabstand vermindert werden von 1000 auf 800 usw.
Code bisher:
Code:
// === user input
extern int DefaultTS = 1000; // default Trailing Stop (2000)
extern int DecreasTs = 200; // Trailing Stop descrease (200)
// === internal global
int LastTS = DefalutTS; // initial Decreased value
// === die Trailing Funktion
double ordprofit=0; // orders profit size to begin trailing
double rq_price=0; // required price for stop loss setting (Bid or Ask)
double rq_trail=0; // distance of trailing stop to price
rq_trail=NormalizeDouble(LastTS*_Point,_Digits); //Normalize
// === innerhalb der OrderSelect()
ordprofit=2*( OrderCommission()+OrderSwap() ); //CoverCostsCash
// ======= Buy Orders =======
if(Type==OP_BUY && OrderType()==OP_BUY) //Type wird der Funktion übergeben
{
// ===>while
rq_price=MarketInfo(_Symbol,MODE_BID); //required price
if( OrderProfit()>ordprofit //ProfitCoversCosts
&& OrderStopLoss()<rq_price-rq_trail ) //SLBelow Bid-TrailDist
{
if(OrderModify(OrderTicket(),OrderOpenPrice(),
rq_price-rq_trail, //ChangeSL:Bid-TSdist
OrderTakeProfit(),0,ColArrowShort) )
if(LastTS>DecreaseTS) LastTS=LastTS-DecreasTs; //NewValueUntilMinimum
else
Sleep(ErrorInterval); //FailWait
// <=== end while
} //ProfitCoversCosts
} //BuyOrder
Frage: Gibt es eine Möglichkeit (ist das überhaupt sinnvoll
), die Trailing Funktion erst dann zu verlassen, wenn wir mit dem Vermindern fertig sind?
Ich denke da an so etwas wie while(LastTS>DecreaseTS) ...
Wäre nett, wenn Ihr dazu etwas anzumerken hättet. Danke. AVT