EA pod dane makro
EA pod dane makro
Witam,
Czy zetknął się ktoś kiedyś z EA które by otwierało pozycję w mniej więcej ten sposób(GBP/USD):
Gdy kilka minut przed pojawieniem się danych (ważnych) EA ustawia zlecenia jedno Long drugie Short (oba z dużym SL), np o 10-15 (zmienna) pkt od aktualnej ceny, na tej parze przy ważnych danych bardzo często jest skok o dobre kilkadziesiąt pips w dół lub w górę.
Jeżeli tak się stanie to któraś z pozycji się otworzy a drugie zlecenie się anuluje, i ustawi SL na 10pkt.
TP też do własnego widzi misie ale pewnie ok. 30-35 pips. Jeżeli osiągnie 20 to ustawiamy BE, i zawsze będziemy na plusie. Kilka razy w tygodniu coś takiego może by się sprawdziło... ?
Czy zetknął się ktoś kiedyś z EA które by otwierało pozycję w mniej więcej ten sposób(GBP/USD):
Gdy kilka minut przed pojawieniem się danych (ważnych) EA ustawia zlecenia jedno Long drugie Short (oba z dużym SL), np o 10-15 (zmienna) pkt od aktualnej ceny, na tej parze przy ważnych danych bardzo często jest skok o dobre kilkadziesiąt pips w dół lub w górę.
Jeżeli tak się stanie to któraś z pozycji się otworzy a drugie zlecenie się anuluje, i ustawi SL na 10pkt.
TP też do własnego widzi misie ale pewnie ok. 30-35 pips. Jeżeli osiągnie 20 to ustawiamy BE, i zawsze będziemy na plusie. Kilka razy w tygodniu coś takiego może by się sprawdziło... ?
Jeśli cena się zawaha to zaliczysz dwa SL. Poza tym brokerzy utrudniają taką grę. Rozszerzają spready do kosmicznych rozmiarów, zwiększają limity minimalnego oddalenia zleceń oczekujących, zmieniaja minimalny SL, fundują luki, poślizgi, requoty.
Spróbuj tego w praktyce, na koncie real. Jak będziesz zadowolony to taki robot jest do napisania.
Spróbuj tego w praktyce, na koncie real. Jak będziesz zadowolony to taki robot jest do napisania.
Solą życia jest kasa.
- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
mam takie Ea
Kod: Zaznacz cały
int l,s,ll,ss;
double lots=0.05; // tu ustalasz jakiej wielkosci maja byc pozycje, jaki lot
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int start()
{
//----------------------------------------------------------------------------------------------------------//
if(total(OP_BUY)!=0 && ss!=1) //jesli zlecenie sie otworzy to przeciwstawne zostaje usuniete
{
OrderDelete(s);
ss=1;
}
if(total(OP_SELL)!=0 && ll!=1)
{
OrderDelete(l);
ll=1;
}
//----------------------------------------------------------------------------------------------------------//
if(Hour()==13 && Minute()==31 && Seconds() <30) // tu usówa zlecenia oczekujace 30 sekund po danych jeśli rzadne znich nie zostanie otwarte
{
if(total(OP_BUYSTOP)==1)
{
OrderDelete(l);
}
if(total(OP_SELLSTOP)==1)
{
OrderDelete(s);
}
}
//----------------------------------------------------------------------------------------------------------//
if(Hour()==13 && Minute()==29 && Seconds() >30) // stawia zlecenie 30sekund przed danymi. jeśli np dena są o 15 godzinie i chcesz ustawic zlecenia oczekujace 30 sekund przed to dajesz Hour()==14, Minute()==59
{
if( total(OP_BUYSTOP)==0)
{
l= OrderSend(Symbol(),OP_BUYSTOP,lots,Bid+15*Point,2,Bid+5*Point,Ask+25*Point);
}
if(total(OP_SELLSTOP)==0)
{
s= OrderSend(Symbol(),OP_SELLSTOP,lots,Bid-15*Point,2,Ask-5*Point,Bid-25*Point);
}
}
//----------------------------------------------------------------------------------------------------------//
return(0);
}
//+------------------------------------------------------------------+
int total(int cmd)
{
int MagicNumber;
int sum = 0;
RefreshRates();
for (int i=0;i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (Symbol()==OrderSymbol() && cmd==OrderType()&& MagicNumber==OrderMagicNumber()) sum++;
}
return(sum);
}
Ostatnio zmieniony 21 gru 2011, 19:51 przez siersciuch, łącznie zmieniany 3 razy.
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.
- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
hmmm, ja nie "topie" opisow...siersciuch pisze:przeczytaj jeszcze raz kod, dodałem komentarze, powinieneś zrozumieć jak nie topisz

np co znaczy:
Kod: Zaznacz cały
// tu usówa zlecenia oczekujace 30 sekund po danych jeśli rzadne znich nie zostanie otwarte
Kod: Zaznacz cały
int total(int cmd)
{
int MagicNumber;
int sum = 0;
RefreshRates();
for (int i=0;i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (Symbol()==OrderSymbol() && cmd==OrderType()&& MagicNumber==OrderMagicNumber()) sum++;
}
return(sum);
}
inicjujesz zmienna MagicNumber na poczatku tej funkcji i nie nadajesz jej zadnej wartosci - przyjmuje ona wartosc losowa.
w dalszej czesci sprawdzasz, czy ta zmienna jest rowna OrderMagicNumber().... to chyba musialby byc na prawde niesamowity przypadek, aby ta funkcja zwrocila ci inna wartosc niz zero.
dalej - zakladasz, ze zawsze dane beda o tej samej godzinie ? czy przed kazdymi nowymi danymi makro bedziesz zmienial kod EA i rekompilowal go ?
nie lepiej wprowadzic je w czasie uruchamiania strategii ?
podobnie z wartoscia SL i TP.... sa sztywno ustawione w kodzie... moze warto tez wrzucic do extern(s)....
ustawiasz zarowno dla longa jak i dla szorta sztywny SL i TP w sposob ktory nie gwarantuje ci, ze obie pozycje sie ustawia - uzalezniasz je od ceny Bid, bez uwzglednienia spread-u (moze byc juz rozszerzony) ani minimalnych odleglosci od ceny....
co bedzie, jesli w ostatnich 30 sekundach przed newsem nie przyjdzie nowy tick ? moze lepiej wywolac funkcje w trybie synchronicznym ?
nie wprowadziles w ogole zadnej obslugi bledow.... co bedzie, jesli ustawi ci sie tylko jedna pozycja ? a druga nie ? system powinien sprawdzic czy obie pozycje sa ustawionei jesli jedna z nich nie jest ustawiona, to sprobowac powtornie albo usunac ta pierwsza....
itd....
no ale wazne - ze probujesz....
pzdr,
CoVal
Ostatnio zmieniony 21 gru 2011, 21:49 przez CoVal, łącznie zmieniany 1 raz.
- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
to co jest napisane, ze kasuje zlecenia oczekujące 30 sekund po publikacji danych.CoVal pisze:hmmm, ja nie "topie" opisów...siersciuch pisze:przeczytaj jeszcze raz kod, dodałem komentarze, powinieneś zrozumieć jak nie topisz
np co znaczy:Kod: Zaznacz cały
// tu usuwa zlecenia oczekujące 30 sekund po danych jeśli żadne nich nie zostanie otwarte
Wiedz, ze już przejrzałeś wszystkie obrazki na kwejku i tu szukasz rozrywki

Poprawione
- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31