EA pod dane makro

O jezykach programowania w platformach i nie tylko.
luki791

EA pod dane makro

Nieprzeczytany post autor: luki791 »

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... ?

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

Nieprzeczytany post autor: personov »

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

luki791

Nieprzeczytany post autor: luki791 »

No właśnie jestem w trakcie testowania i na razie nie wygląda to źle, jak do czegoś dojdę to wrzucę zrzuty.
Jutro o 9.30 (GMT) może być ciekawie:) tylko, że nie bede miał wtedy dostepu do kompa...

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

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.

luki791

Nieprzeczytany post autor: luki791 »

Kodzić to ja za bardzo nie umiem, mógłbyś pokrótce opisać to EA?

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

przeczytaj jeszcze raz kod, dodałem komentarze, powinieneś zrozumieć jak nie topisz
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

siersciuch pisze:przeczytaj jeszcze raz kod, dodałem komentarze, powinieneś zrozumieć jak nie topisz
hmmm, ja nie "topie" opisow... :P

np co znaczy:

Kod: Zaznacz cały

// tu usówa zlecenia oczekujace 30 sekund po danych jeśli rzadne znich nie zostanie otwarte
no a tak na serio... to ten kod nie za bardzo trzyma sie kupy... np:

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.

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

CoVal pisze:
siersciuch pisze:przeczytaj jeszcze raz kod, dodałem komentarze, powinieneś zrozumieć jak nie topisz
hmmm, ja nie "topie" opisów... :P

np co znaczy:

Kod: Zaznacz cały

// tu usuwa zlecenia oczekujące 30 sekund po danych jeśli żadne nich nie zostanie otwarte
to co jest napisane, ze kasuje zlecenia oczekujące 30 sekund po publikacji danych.

Wiedz, ze już przejrzałeś wszystkie obrazki na kwejku i tu szukasz rozrywki :)

Poprawione

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

CoVal pisze:
no a tak na serio... to ten kod nie za bardzo trzyma sie kupy... np:
MI wystarczy ze działa.

nie kozystam z tego kodu, jak chcesz to mozesz poprawki wprowadzić i opublikować EA :)
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

zebedi43
Uczestnik
Uczestnik
Posty: 2
Rejestracja: 03 sty 2012, 20:01

Nieprzeczytany post autor: zebedi43 »

temat dobry sam kombinuje jak to zrobic...
i powiem wam ze gralem pod dane manulnie otwierajac pozycje i jakos dalo sie kilka pipsow zrobic tylko teraz praca mi nie pzwala na gre.
jesli ktos jest w stanie napisac takie EA to byl bym barzo wdzieczny...

ODPOWIEDZ