Trailing stop .. pomoc w usprawnieniu

O jezykach programowania w platformach i nie tylko.
araimnielad
Bywalec
Bywalec
Posty: 6
Rejestracja: 10 mar 2012, 17:22

Trailing stop .. pomoc w usprawnieniu

Nieprzeczytany post autor: araimnielad »

Witam serdecznie

Zagadnienie: Kawałek kodu pozwalający ustawiać trailingstop na zleceniu które stało się zyskowne i przekroczyło zakładany przez nas poziom dodatnich pipsow.



//+----------------------------------------------------------------
W tym miejscu znajdował się kod z prośbą o pomoc, ale żeby nie zaśmiecać po jego poprawieniu jest nieco niżej w tekście już gotowy
//+------------------------------------------------------------------


Z góry dziękuję i pozdrawiam,
araim
Ostatnio zmieniony 11 mar 2012, 01:31 przez araimnielad, łącznie zmieniany 2 razy.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Nie masz nigdzie zdefiniowane TSTP, ani TSTP2, ani TSTP3 itd.
Kod nie rozpoznaje tych zapisów, bo nie są nigdzie wcześniej zdefiniowane.
A to :

Kod: Zaznacz cały

if (OrderStopLoss() 0)

Co to jest to "0" ?
Może ma być :

Kod: Zaznacz cały

if (OrderStopLoss()== 0)

I masz dużo błędów z nawiasami.
Solą życia jest kasa.

Awatar użytkownika
mikolaj2
Gaduła
Gaduła
Posty: 231
Rejestracja: 04 maja 2011, 14:37

Nieprzeczytany post autor: mikolaj2 »

Może na podstawie załączonego pliku uda się Tobie coś stworzyć :-)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

araimnielad
Bywalec
Bywalec
Posty: 6
Rejestracja: 10 mar 2012, 17:22

udało się ;)

Nieprzeczytany post autor: araimnielad »

ok. cała sobota strawiona przez mq4 ale myślę że w tej formie jest to dość dobre rozwiązanie. Może się przyda komuś innemu do budowy jego EAimperium


extern double InitialTrailingStop = 8;
extern double trailing_stop_percentage = 20;



// Set it to some value above 0 to activate stop-loss
/* extern double StopLoss = 0; */

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{double PointValue;
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
//Calculate the point value in case there are extra digits in the quotes
if (MarketInfo(OrderSymbol(), MODE_POINT) == 0.00001) PointValue = 0.0001;
else if (MarketInfo(OrderSymbol(), MODE_POINT) == 0.001) PointValue = 0.01;
else PointValue = MarketInfo(OrderSymbol(), MODE_POINT);
//Normalize trailing stop value to the point value
double TSTP = InitialTrailingStop * PointValue;

if (OrderType() == OP_BUY)
{ if ((trailing_stop_percentage > 0) && (Bid - OrderOpenPrice() >= TSTP))
{ TSTP = NormalizeDouble((Bid - OrderOpenPrice()) * trailing_stop_percentage / 100, Digits);
{ if (OrderStopLoss() < (Bid - TSTP))
{ OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TSTP, OrderTakeProfit(), Red);
}
}
}
/*
else if ((OrderStopLoss() != Bid - StopLoss * PointValue) && (StopLoss != 0))
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - StopLoss * PointValue, OrderTakeProfit(), Red);
*/
}

else if (OrderType() == OP_SELL)
{ if ((trailing_stop_percentage > 0) && (OrderOpenPrice() - Ask >= TSTP))
{ TSTP = NormalizeDouble((OrderOpenPrice() - Ask) * trailing_stop_percentage / 100, Digits);
{ if ((OrderStopLoss() > (Ask + InitialTrailingStop * PointValue)) || (OrderStopLoss() == 0))
{ OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TSTP, OrderTakeProfit(), Red);
}
}
}
/*
else if ((OrderStopLoss() != Ask + StopLoss * PointValue) && (StopLoss != 0))
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + StopLoss * PointValue, OrderTakeProfit(), Red);
*/
}
}


//----

//----
return(0);
}
//+------------------------------------------------------------------



ps. Person, Mikołaj dziękuję za support
pozdrowienia!

ODPOWIEDZ