Witam
Posiadam EA i problem jaki się pojawia dotyczy pierwszego zlecenia. EA funkcjonuje prawidłowo natomiast na testach nie realizuje żadnych sygnałów gdyż warunek otworzenia pozycji jest związany z już otwartą pozycją. Co powinienem wprowadzić aby pierwsze zlecenie w EA zostało otworzone tylko raz, a później otwieranie pozycji miało miejsce tylko na podstawie już otwartych pozycji?
Pierwsze zlecenie
Re: Pierwsze zlecenie
A na jakich warunkach jest wprowadzane pierwsze zlecenie ? Jakie zasady ? Jeśli znasz takie zasady to trzeba wprowadzić je do EA. A może otwarcie pierwszej pozycji nie ma żadnych zasad ? Trzeba uruchomić w kodzie pierwsze zlecenie z numerem magic identycznym jak magic w EA.
Solą życia jest kasa.
Re: Pierwsze zlecenie
Mhm, co do numeru magicznego już zauważyłem, że jest niezbędne do tego aby EA odczytało zlecenie. Pierwsze zlecenie nie powinno mieć żadnego warunku lub taki warunek aby zostało otworzone tylko raz podczas całego okresu działania EA.
Wpadłem na pomysł, żeby zrobić to za pomocą warunku sprawdzającego ilość otwartych zleceń czyli:
Jeśli liczba wszystkich zleceń (Order total?) równa jest 0 to zostaje otworzone zlecenie buy.
Dopiero uczę się programować w EA, automat, który obecnie posiadam został zamówiony. Co zaś się tyczy samego zlecenia to próbowałem je metodą prób i błędów skonstruować w następujący sposób:
if (order_total() == 0)
{
int zlecenie;
{
zlecenie = OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-
25*Point,Ask+25*Point,01122013,0,Green);
{
Print("Błąd wykonania funkcji OrderSend ",GetLastError());
return(0);
}
}
}
Wada jest taka, że część kodu skopiowałem z http://bossa.pl/index.jsp?layout=2&page ... at_id=1088, a część z już napisanego EA licząc, że to zadziała. Kompilacja przebiega prawidłowo, jednak EA nie otwiera pozycji.
Wpadłem na pomysł, żeby zrobić to za pomocą warunku sprawdzającego ilość otwartych zleceń czyli:
Jeśli liczba wszystkich zleceń (Order total?) równa jest 0 to zostaje otworzone zlecenie buy.
Dopiero uczę się programować w EA, automat, który obecnie posiadam został zamówiony. Co zaś się tyczy samego zlecenia to próbowałem je metodą prób i błędów skonstruować w następujący sposób:
if (order_total() == 0)
{
int zlecenie;
{
zlecenie = OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-
25*Point,Ask+25*Point,01122013,0,Green);
{
Print("Błąd wykonania funkcji OrderSend ",GetLastError());
return(0);
}
}
}
Wada jest taka, że część kodu skopiowałem z http://bossa.pl/index.jsp?layout=2&page ... at_id=1088, a część z już napisanego EA licząc, że to zadziała. Kompilacja przebiega prawidłowo, jednak EA nie otwiera pozycji.
Re: Pierwsze zlecenie
order_total() to jakaś funkcja.
Masz ją w kodzie ? jeśli sprawdzasz czy ==0 to musi gdzieś być w kodzie.
Poza tym w nawiasie OrderSend() jako przedostatni jest numer magic. u Ciebie jest wpisane 0. A powinien być wpisany numer z EA.
Masz ją w kodzie ? jeśli sprawdzasz czy ==0 to musi gdzieś być w kodzie.
Poza tym w nawiasie OrderSend() jako przedostatni jest numer magic. u Ciebie jest wpisane 0. A powinien być wpisany numer z EA.
Solą życia jest kasa.
Re: Pierwsze zlecenie
Są logi w dzienniku?Jakr pisze:Mhm, co do numeru magicznego już zauważyłem, że jest niezbędne do tego aby EA odczytało zlecenie. Pierwsze zlecenie nie powinno mieć żadnego warunku lub taki warunek aby zostało otworzone tylko raz podczas całego okresu działania EA.
Wpadłem na pomysł, żeby zrobić to za pomocą warunku sprawdzającego ilość otwartych zleceń czyli:
Jeśli liczba wszystkich zleceń (Order total?) równa jest 0 to zostaje otworzone zlecenie buy.
Dopiero uczę się programować w EA, automat, który obecnie posiadam został zamówiony. Co zaś się tyczy samego zlecenia to próbowałem je metodą prób i błędów skonstruować w następujący sposób:
if (order_total() == 0)
{
int zlecenie;
{
zlecenie = OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-
25*Point,Ask+25*Point,01122013,0,Green);
{
Print("Błąd wykonania funkcji OrderSend ",GetLastError());
return(0);
}
}
}
Wada jest taka, że część kodu skopiowałem z http://bossa.pl/index.jsp?layout=2&page ... at_id=1088, a część z już napisanego EA licząc, że to zadziała. Kompilacja przebiega prawidłowo, jednak EA nie otwiera pozycji.
Re: Pierwsze zlecenie
Myślałem, że Magic number jest przedostatni w moim przypadku - http://bossa.pl/index.jsp?layout=2&page ... at_id=1353. Czyli zero powinienem na końcu usunąć?
Nie mam nigdzie zdefiniowanej tej orders total.
Logi z MetaEditor? Kompilacja przebiega prawidłowo więc w zakładce błędy nic nie ma.
Nieco zmodyfikowałem i poniższe umieszczam na początku pliku (po void start). Na pierwszy rzut oka wygląda mi na to, że orders total nadal nie jest zdefiniowane prawidłowo, natomiast pozostała część powinna zadziałać, czyli gdy warunek o ilości zleceń zostanie zdefiniowany prawidłowo to pozycja powinna się teraz otworzyć?
int wszystkie_zlecenia = OrdersTotal();
for(int p=0;p<wszystkie_zlecenia;p++)
if (OrdersTotal() == 0)
{
int zlecenie;
{
zlecenie = OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-
25*Point,Ask+25*Point,01122013,Green);
{
Print("Błąd wykonania funkcji OrderSend ",GetLastError());
return(0);
}
}
}
Nie mam nigdzie zdefiniowanej tej orders total.
Logi z MetaEditor? Kompilacja przebiega prawidłowo więc w zakładce błędy nic nie ma.
Nieco zmodyfikowałem i poniższe umieszczam na początku pliku (po void start). Na pierwszy rzut oka wygląda mi na to, że orders total nadal nie jest zdefiniowane prawidłowo, natomiast pozostała część powinna zadziałać, czyli gdy warunek o ilości zleceń zostanie zdefiniowany prawidłowo to pozycja powinna się teraz otworzyć?
int wszystkie_zlecenia = OrdersTotal();
for(int p=0;p<wszystkie_zlecenia;p++)
if (OrdersTotal() == 0)
{
int zlecenie;
{
zlecenie = OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-
25*Point,Ask+25*Point,01122013,Green);
{
Print("Błąd wykonania funkcji OrderSend ",GetLastError());
return(0);
}
}
}
Re: Pierwsze zlecenie
Trochę mało informacji.
W nawiasie OrderSend() brakuje jeszcze komentarza. Między SL, a magic wstaw "",
W nawiasie OrderSend() brakuje jeszcze komentarza. Między SL, a magic wstaw "",
Kod: Zaznacz cały
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-25*Point,Ask+25*Point,"",01122013,Green);
Solą życia jest kasa.
Re: Pierwsze zlecenie
Kod: Zaznacz cały
if (AccountMargin() == 0)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-25*Point,Ask+25*Point,"",01122013,Green);
}
Dziękuję za pomoc Panowie. Może komuś przyda się powyższe rozwiązanie.
-
- Gaduła
- Posty: 132
- Rejestracja: 27 sie 2011, 13:10
Re: Pierwsze zlecenie
O ile zrozumiałem, możesz to załatwić jednym wpisem - wyślij zlecenie w funkcji inicjalizującej (init()) EA 
