Jak sprawdzić osiagniecie Stop Loss?
Jak sprawdzić osiagniecie Stop Loss?
Powiedzcie proszę, w jaki sposób mogę sprawdzić sposób/status zamknięcia pozycji które osiągnęły poziom stop loss? Jak to stwierdzić w EA, jest jakaś funkcja która zwracałaby taką informację?
- thisredone
- Stały bywalec
- Posty: 72
- Rejestracja: 05 sie 2010, 17:07
jeżeli to jest trade, który twój system zrobił to zachowujesz ticket, który zwróciła ci funkcja OrderSend() i potem zaznaczasz ten trejd za pomocą OrderSelect() i tutaj masz resztę funkcji do sprawdzenia co i jak.
Jeżeli to nie jest trejd, który twój system zrobił to musisz poszukać sobie przez OrderSelect() z trzecim parametrem ustawionym na MODE_HISTORY po kolei od 0 do OrdersHistoryTotal().
Jeżeli to nie jest trejd, który twój system zrobił to musisz poszukać sobie przez OrderSelect() z trzecim parametrem ustawionym na MODE_HISTORY po kolei od 0 do OrdersHistoryTotal().
przeszukujesz wszystkie zamkniete zlecenia petla i zachowujesz te, ktorej order profit() == Order StopLoss(). Do zamiany orderprofit na format jak orderstoploss() uzylbym OrderOpenprice()-profit( double prof ) //dla buy; dla sell odwrotnie
Mam nadzieje, ze rozjasnilem. Pozdrawiam
zapomnialem dodac:
lots == loty, za ktore zostala otwarta pozycja.
digs == 4 || 5
Kod: Zaznacz cały
// double prof == OrderProfit()
int profit(double prof){
return ( NormalizeDouble( (prof/MarketInfo(Symbol(),MODE_TICKVALUE))/lots,digs) );
}
zapomnialem dodac:
lots == loty, za ktore zostala otwarta pozycja.
digs == 4 || 5
czyli stworzyłeś funkcję obliczającą OrderClosePrice()crn pisze:uzylbym OrderOpenprice()-profit( double prof )

Dla każdego zlecenia z historii trzeba przetestować czy OrderClosePrice() == OrderStopLoss(), ale jak wiadomo, czasem cena lubi sobie przeskoczyć SL i zlecenie zamknie się z poślizgiem, więc dokładniej dla longów sprawdzamy czy OCP() <= OSL(), a dla shortów OCP()>=OSL().