Problem z parametrem slippage?

O jezykach programowania w platformach i nie tylko.
mkay1
Uczestnik
Uczestnik
Posty: 3
Rejestracja: 24 mar 2014, 10:42

Problem z parametrem slippage?

Nieprzeczytany post autor: mkay1 »

Witam,
dopiero zaczynam z programowaniem w MQL4 i mam pewny problem przy składaniu zlecenia, a mianowicie moje zlecenia (czasami) składane są po niezrozumiałych dla mnie cenach.... jako przykład kawałek logów z mojego EA:

Kod: Zaznacz cały

22:02:42 mkt NZDUSD,M15: open #121455625 buy 0.03 NZDUSD at 0.85613 sl: 0.84652 tp: 0.85802 ok
22:02:42 mkt NZDUSD,M15: zlecenie na parze +NZDUSD złożone, ticket=121455625, magic=21, cena=0.85227, SL=0.8465237369808184, TP=0.8580162630191816
jak widać (druga linijka logów) otworzyłem zlecenie po cenie 0.85227, natomiast zostało wykonane po cenie 0.85613 - to dość spora różnica;/

pokażę jeszcze kawałek kodu, którym składam zlecenia:

Kod: Zaznacz cały

extern double  TakeProfitPercent          = 33;
extern double  StopLostPercent           = 33;
[....]
void cChannel::sendOrder(int typ) {
   double stopLoss;
   double takeProfit;
   int myOp;
      
      
   double cena = iClose(NULL, 0, 0);
   double channelSize = this.getChannelSize();
      
   if (typ == LINE_BOTTOM) {
      myOp=OP_BUY;
      stopLoss = cena-channelSize*StopLostPercent/100;
      takeProfit = cena+channelSize*TakeProfitPercent/100;
   }
   else { // LINE_TOP
      myOp = OP_SELL;
      stopLoss = cena+channelSize*StopLostPercent/100;
      takeProfit = cena-channelSize*TakeProfitPercent/100;
   }   
   
   int ticket=OrderSend(Symbol(), myOp, this.countLotSize(), cena, 10, stopLoss, takeProfit, "", this.getChannelMagic(typ));
   if (ticket > -1) {
      Print("zlecenie na parze +"+Symbol()+" złożone, ticket=" +(string)ticket +", magic=" + (string)this.getChannelMagic(typ) + ", cena=" +(string)cena + ", SL=" + (string)stopLoss + ", TP=" +(string)takeProfit);
   }else{
      Print("błąd przy wysyłaniu zlecenia. kod błędu: " + (string)GetLastError());
   }
      
}
jak widać slippage jest u mnie ustawione na 10. Wiem, że parametr ten jest podawany w punktach więc składając zlecenie po cenie 0.85227 powinno się ono otworzyć w przedziale od 0.85217 do 0.85237. Dlaczego więc zostało wykonane po tak wysokiej cenie?

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Re: Problem z parametrem slippage?

Nieprzeczytany post autor: Pierz Andrzej »

po pierwsze zlecenie Buy składane są po cenach Ask a zlecenia Sell bo cenach Bid , z Twojego kodu wynika że zarówno buy jak i sell składasz po cenach Bid więc z automatu masz poślizg wielkości spreadu .

zlecenia buy wchodzą Ci tylko dlatego że pewnie grasz u brokera ECN/STP tam nie ma znaczenia jaką cenę podasz i jakie slippage bo i tak wejście będzie po cenie rynkowej ;-)
z poważaniem
Andrzej Pierz
FOREX-SERVICE

mkay1
Uczestnik
Uczestnik
Posty: 3
Rejestracja: 24 mar 2014, 10:42

Re: Problem z parametrem slippage?

Nieprzeczytany post autor: mkay1 »

Witam,
oczywiście wiem, że wzorcowo powinienem grać po cenie Bid/Ask, ale chciałem wykonywać zlecenie po cenie ostatniej transakcji (stąd iClose(NULL, 0, 0)) - czy jest to poważny błąd?

Z twojej wypowiedzi wynika, że w przypadku brokera ECN/STP podana cena nie ma znaczenia, a więc powinienem używać
zleceń BUY_LIMIT/SELL_LIMIT?

jeśli chodzi o brokera, to w tym momencie (na czas testów EA) używam oandy

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Re: Problem z parametrem slippage?

Nieprzeczytany post autor: Pierz Andrzej »

iClose(NULL,0,0) jest równe cenie Bid
możesz próbować ze zleceniami LIMIT ale przy lukach i tak wejdzie po pierwszej cenie rynkowej , tyle że będziesz do przodu o czas realizacji MT4-SERVER bo zlecenie będzie już na serwerze
z poważaniem
Andrzej Pierz
FOREX-SERVICE

mkay1
Uczestnik
Uczestnik
Posty: 3
Rejestracja: 24 mar 2014, 10:42

Re: Problem z parametrem slippage?

Nieprzeczytany post autor: mkay1 »

ok, dzięki za wskazówki

ODPOWIEDZ