order send error 4107
order send error 4107
Witam!
Czy ktoś może wie co oznacza ten błąd?
Pozdrawiam Przemek
Czy ktoś może wie co oznacza ten błąd?
Pozdrawiam Przemek
ERR_INVALID_PRICE_PARAM 4107 Invalid price.
(na przyszłość szybciej będzie wpisać błąd w szukajce MetaEditora :] )
Ew. wrzuć sobie do kodu include'y:
I jak dostaniesz błąd, to zrób:
Od razu się sprawa wyjaśni co to za błąd 
(na przyszłość szybciej będzie wpisać błąd w szukajce MetaEditora :] )
Ew. wrzuć sobie do kodu include'y:
Kod: Zaznacz cały
#include <stderror.mqh>
#include <stdlib.mqh>
Kod: Zaznacz cały
Alert(ErrorDescription(GetLastError()));

Jeśli po rynku to musisz dać jako cenę Ask lub Bid, jeśli oczekujące to coś źle podałeś, poza tym zobacz zaokrąglenia, bo czasami gdy ceny wyliczasz to jest z tym problem - NormalizeDouble(cena,Digits)
algotronic- zaawansowane rozwiązania dla traderów
Odwiedź naszą stronę WWW, aby poznać pełną ofertę
Odwiedź naszą stronę WWW, aby poznać pełną ofertę
no ta cena zdaje sie nie jest zaokraglona, 1.40022, to jest normalnie wejscie po aktualnej cenieluktom pisze:Jeśli po rynku to musisz dać jako cenę Ask lub Bid, jeśli oczekujące to coś źle podałeś, poza tym zobacz zaokrąglenia, bo czasami gdy ceny wyliczasz to jest z tym problem - NormalizeDouble(cena,Digits)
Kod: Zaznacz cały
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,0,Bid+sl,Bid-tp,"trade",MagicNumber,0,Green);
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,0,Ask-sl,Ask+tp,"trade",MagicNumber,0,Green);
dziwne bo sporo sygnalow przez to przepada, raz dzialaja raz nie
Zapewne problem taki:
nie:
a
To samo reszta TP i SL jeśli mas zpodane w pipsach tylu całkowitego to musisz pomnożyć przez Point
nie:
Kod: Zaznacz cały
Bid+sl
Kod: Zaznacz cały
Bid+sl*Piont
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
tylko ze mam tak
Kod: Zaznacz cały
double tp=100*Point,sl=20*Point;
A wiec powinno być jeszcze może coś takiego, zamiast:
daj np.:
---- code
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+sl,Bid-tp,"trade",MagicNumber,0,Green);
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-sl,Ask+tp,"trade",MagicNumber,0,Green);
---- end code
To jest SlipPage - czyli odchylenie od kwotowanej ceny... Podobno jak cena jest bardzo zmienna to broker nie nadąża, więc ostatecznie wychodzi większy spread
...
widzialem nawet takie rowiązanie:
Kod: Zaznacz cały
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,0,Bid+sl,Bid-tp,"trade",MagicNumber,0,Green);
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,0,Ask-sl,Ask+tp,"trade",MagicNumber,0,Green);
---- code
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+sl,Bid-tp,"trade",MagicNumber,0,Green);
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-sl,Ask+tp,"trade",MagicNumber,0,Green);
---- end code
To jest SlipPage - czyli odchylenie od kwotowanej ceny... Podobno jak cena jest bardzo zmienna to broker nie nadąża, więc ostatecznie wychodzi większy spread

...
widzialem nawet takie rowiązanie:
Kod: Zaznacz cały
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,0,Ask-sl,Ask+tp,"trade",MagicNumber,0,Green);
if(ticket<0){
if(GetLastError() == 4107) ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-sl,Ask+tp,"trade",MagicNumber,0,Green);
if(ticket<0){
err=GetLastError();
Print("error(",err,"): ",ErrorDescription(err));
return(0);
}
}
I jakies nowe wnioski z powyzszym problemem?
Bo mam taki sam
Przynajmniej przy testowaniu na danych historycznych
A najdziwniejsze, ze jak pisze wyzej xpep czasem dziala, a czasem nie dziala
I to nie wazne, czy i jakie SL i TP ustawie, bo bez nich tez czasem nie robi tranzakcji dajac blad 4107 (zly SL to error 130 bodajrze, czy cos kolo tego).
Bede wdzieczny za ew. wskazowki.
Pozdrawiam
Bo mam taki sam

A najdziwniejsze, ze jak pisze wyzej xpep czasem dziala, a czasem nie dziala

Bede wdzieczny za ew. wskazowki.
Pozdrawiam