Pierwsze zlecenie

O jezykach programowania w platformach i nie tylko.
Jakr
Bywalec
Bywalec
Posty: 18
Rejestracja: 10 sty 2012, 21:43

Pierwsze zlecenie

Nieprzeczytany post autor: Jakr »

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?

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Pierwsze zlecenie

Nieprzeczytany post autor: personov »

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.

Jakr
Bywalec
Bywalec
Posty: 18
Rejestracja: 10 sty 2012, 21:43

Re: Pierwsze zlecenie

Nieprzeczytany post autor: Jakr »

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.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Pierwsze zlecenie

Nieprzeczytany post autor: personov »

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.
Solą życia jest kasa.

JAREK67
Maniak
Maniak
Posty: 2143
Rejestracja: 13 lip 2006, 11:21

Re: Pierwsze zlecenie

Nieprzeczytany post autor: JAREK67 »

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.
Są logi w dzienniku?

Jakr
Bywalec
Bywalec
Posty: 18
Rejestracja: 10 sty 2012, 21:43

Re: Pierwsze zlecenie

Nieprzeczytany post autor: Jakr »

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);
}
}
}

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Pierwsze zlecenie

Nieprzeczytany post autor: personov »

Trochę mało informacji.
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.

Jakr
Bywalec
Bywalec
Posty: 18
Rejestracja: 10 sty 2012, 21:43

Re: Pierwsze zlecenie

Nieprzeczytany post autor: Jakr »

Kod: Zaznacz cały

if (AccountMargin() == 0)
{
    OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-25*Point,Ask+25*Point,"",01122013,Green);
}
Ostatecznie skorzystałem ze zmiennej AccountMargin, która wskazuje jaka suma jest wykorzystana. W związku z tym, że mój system to long term i jakaś pozycja otwarta jest nonstop idealnie nadaje się do testów bo otwiera tylko jedną pozycję gdy account margin wynosi 0.

Dziękuję za pomoc Panowie. Może komuś przyda się powyższe rozwiązanie.

David_Plavko
Gaduła
Gaduła
Posty: 132
Rejestracja: 27 sie 2011, 13:10

Re: Pierwsze zlecenie

Nieprzeczytany post autor: David_Plavko »

O ile zrozumiałem, możesz to załatwić jednym wpisem - wyślij zlecenie w funkcji inicjalizującej (init()) EA ;)

ODPOWIEDZ