Thema: Trailing-Stop
Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 25.10.14
halobungie halobungie ist offline
Neues Mitglied
 
Registriert seit: Oct 2011
Beiträge: 2
halobungie befindet sich auf einem aufstrebenden Ast
Standard Trailing-Stop

Hallo,
kann mir jemand helfen diesen Trailing-Stop so abzuändern, dass er ALLE offenen Positionen trailt und dann ALLE im Gewinn schliesst? So wie er jetzt programmiert ist, trailt er nur einzelne Positionen und schliesst diese im Gewinn.

Hier der Code:

extern string S1 = "EURUSD";

//Trailing-Function-Inputs******************************************** ************************************************** *************************
extern bool ProfitTrailing_S1 = true;
extern int TrailingStop = 500;
extern int TrailingStep = 30;
extern bool UseSound = True;
string NameFileSound = "expert.wav";
//End Trailing-Function-Inputs******************************************** ************************************************** *********************


//+------------------------------------------------------------------+
//| TRAILING für S1-S6 |
//+------------------------------------------------------------------+
if (!ProfitTrailing_S1){
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) )
{
TrailingPositions_S1();
}
}
}
//+----------------------------------------------------------------+
//| END |
//+----------------------------------------------------------------+



//+------------------------------------------------------------------+
//| TRAILING S1 |
//+------------------------------------------------------------------+
void TrailingPositions_S1() {
double pBid, pAsk, pp;

pp = MarketInfo(S1, MODE_POINT);
if (OrderType()==OP_BUY) {
pBid = MarketInfo(S1, MODE_BID);

if (!ProfitTrailing_S1 || (pBid-OrderOpenPrice())>TrailingStop*pp) {
if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
ModifyStopLoss_S1(pBid-TrailingStop*pp);
return;
}
}
}
if (OrderType()==OP_SELL) {
pAsk = MarketInfo(S1, MODE_ASK);
if (!ProfitTrailing_S1 || OrderOpenPrice()-pAsk>TrailingStop*pp) {
if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
ModifyStopLoss_S1(pAsk+TrailingStop*pp);
return;
}
}
}
}
void ModifyStopLoss_S1(double ldStopLoss) {
bool fm;
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldSt opLoss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
//+----------------------------------------------------------------+
//| END |
//+----------------------------------------------------------------+