GetLastError 138

O jezykach programowania w platformach i nie tylko.
swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

GetLastError 138

Nieprzeczytany post autor: swer »

Witam!

Do swojego EA probuje dorobic funkcje zeby otwierala drugie zlecenie po 10p od poprzedniej ceny otwarcia.

mamy taki kod ktory powinien dzialac moim zdaniem ;)

Kod: Zaznacz cały

double LastOpened() {

int iOrders = OrdersTotal() ;
int iLast = iOrders -1;
if(iOrders > 0) {

  OrderSelect(iLast, SELECT_BY_POS);
   return (OrderOpenPrice());
} else {
   return(0.0);
}
a to w start();

Kod: Zaznacz cały

int Odleglosc = 10;
int PrevPrice = LastOpened(); 

if(PrevPrice > 0) {
                  RefreshRates();
                  OrderSend(Symbol(),OP_BUY,0.3,PrevPrice+(Odleglosc*Point),0,Ask-10*Point,Ask+20*Point,"",2,0,Blue);
} 
Print("Blad B2: ", GetLastError());
Wywala bład 138, czyli z tego co wyczytalem jest to Slippage (Requote?), w OrderSend zmienialem parametr na rozne wartosci i nie chula.
Jakies pomysly?
EA testowane w testerze MT4 od AM

rrozak
Stały bywalec
Stały bywalec
Posty: 76
Rejestracja: 19 mar 2010, 16:43

Nieprzeczytany post autor: rrozak »

Jeśli znasz cenę po jakiej będziesz kupował/sprzedawał to chyba wygodniej będzie Ci to robić zleceniami z limitem niż czekać aż rynek dojdzie do poziomu +-10 pips i wystawiać zlecenia natychmiastowe.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Kod: Zaznacz cały

OrderSend(Symbol(),OP_BUY
wysyła zlecenie BUY po aktualnej cenie! więc nie dziw się że wywala Ci błąd jak chcesz zawszeć transakcje po nieistniejącej cenie
do wysyłania zlecenia z ceną inną niż obecna stosuje się zlecenia stop

Kod: Zaznacz cały

OrderSend(Symbol(),OP_BUYSTOP
lub limit

Kod: Zaznacz cały

OrderSend(Symbol(),OP_BUYLIMIT
i pamiętać należny że odległość od obecnej ceny nie może być mniejsza niż minimalny SL bo odrzuci zlecenie.
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

Nieprzeczytany post autor: swer »

ok THX Tig3r poszlo do przodu ale natrafilem na kolejna przeszkode ;)

Teraz problem mam z błedem 130 czyli nieprawidlowy SL,
jak ustawic SL dla BUYLIMIT, rozumiem ze tez nie moze byc po aktualnej cenie chcialem to tak zrobic:

Kod: Zaznacz cały

 if(PrevPrice > 0) OrderSend(Symbol(),OP_BUYLIMIT,0.3,PrevPrice+(Odleglosc*Point),3,PrevPrice-15*Point,PrevPrice+20*Point,"",2,0,Blue);
Dodam ze minimalna odleglosc SL od ceny to 5 pips.

A teraz zrobilem nawet tak:

Kod: Zaznacz cały

OrderSend(Symbol(),OP_BUYLIMIT,0.3,PrevPrice+(Odleglosc*Point),3,PrevPrice+(Odleglosc*Point)-15*Point,PrevPrice+(Odleglosc*Point)+30*Point,"",2,0,Blue)
to wywala blad 148

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Ile masz w Odległosc?
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

Nieprzeczytany post autor: swer »

10 pipsow

Chcialem zeby wygladalo to tak:

Pierwsze zlecenie sie otwiera po 10 pipsach przechodzi na BE za pomoca funkcji secure (kod Lutkoma) i to dziala tak jak powinno

a drugie zlecenie otwieralo sie podczas przechodzenia pierwszego na BE

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

A co to PrevPrice?
Może próbujesz postawić zlecenie oczekujące za blisko obecnej ceny
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

Nieprzeczytany post autor: swer »

int PrevPrice = LastOpened();

Zobacz pierwszy post tam jest f. LastOpened() i zmienna PrevPrice.

Przejrzalem dziennik i widze ze postawilo zlecenie ale o 500 pips nizej :)
Jesli pierwsze zlecenie (OP_BUY) mialem 1.5121
to oczekujace ustawia sie 1.0030
TP i SL sa dobrze ustawione zgodnie z tym co bylo w ordersend tj +/- 15 pips

Musze przejrzec kod i moze dojde dlaczego mi wywala tak daleko.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Możę ten lastOpened zwraca 0
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

Nieprzeczytany post autor: swer »

Problem rozwiazany :)
Tig3r thx za pomoc, faktycznie okazalo się ze czasami LastOpened zwracał 0 a ponadto zmienna PrevPrice była typu int zamiast double :)

ODPOWIEDZ