funkcja - pauza po 2 stratnych transakcjach
funkcja - pauza po 2 stratnych transakcjach
witam
czy posiada ktoś taką funkcję jak w tytule, lub mógłby na szybko napisać, że po 2 stratnych transakcjach, EA "odpoczywa" i nie zawiera transakcji przez np. 120 minut
Pozdrawiam
Jacek
czy posiada ktoś taką funkcję jak w tytule, lub mógłby na szybko napisać, że po 2 stratnych transakcjach, EA "odpoczywa" i nie zawiera transakcji przez np. 120 minut
Pozdrawiam
Jacek
Re: funkcja - pauza po 2 stratnych transakcjach
Jacek_fx pisze:witam
czy posiada ktoś taką funkcję jak w tytule, lub mógłby na szybko napisać, że po 2 stratnych transakcjach, EA "odpoczywa" i nie zawiera transakcji przez np. 120 minut
Pozdrawiam
Jacek
Kod: Zaznacz cały
//-------------------------------------------------------------------//
// Sprawdzanie historii transkacji //
//-------------------------------------------------------------------//
//funkcja sprawdza czy w danym dniu nie byla wykonan juz transakcja
double SprHistoryBad(int TotalHst, int DzienRok, int Test)
{
int k, IleZlych=0;
for(k=0;k<TotalHst;k++)
{
OrderSelect(k, SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && TimeDayOfYear(OrderCloseTime())==DzienRok && OrderProfit()<0)
{
IleZlych++;
if(Test == 1) Print ("Historia: na symbolu ",Symbol()," dzis bylo juz ",IleZlych," dokonanych STRATNYCH transakcja");
if(IleZlych >= HistoryBad) break; //zatrzymuje sprawdzanie jak juz wiadomo ze znalazl wystarczajaco duzo
}
}
return(IleZlych);
}
Ludzkie słabości i ludzka siła do ich pokonywania...
- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
przed startem{} dajesz sobie
a tu masz funkcje która musisz wklić całkiem na zewnatrz wszystkich nawiasów
[/code]
Kod: Zaznacz cały
if(loseHistory()<3)
{........ TU WKLEJSZA CAŁA FUNKCJE START CZYLI TWOJ EA............}
Kod: Zaznacz cały
int loseHistory()
{
int sum = 0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderProfit()<0) sum++;else break;
}
return(sum);
}
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.
- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
mozesz sobie dac przed otwarciem tranzakcji, tam nie ustawiasz czasu przerwy tylko ilość stratnych pod rząd, wiec jak bedzie dwie stratne wtedy twój robot przestanie grać, aby grał zpowrotem musisz go odnowa odpalic. Wiec jak bedziesz robił test na historycznych to sie nie sprawdzi bo robot poprostu przestanie grać. A jak chcesz ustawić czas jak dlugo ma niegrac po dwoch stratnych to trzeba dopisać pare warunków
moze to tak wygladać
moze to tak wygladać
Kod: Zaznacz cały
if(loseHistory()<3)
{
long=OrderSend(Symbol(),OP_BUY,lot,Ask,3,Bid-25*Point,Bid+100*Point);
}
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.
- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
nietrzeba nic zmieniać, na warunku sobie zmienisz, nigdy nie używałem funkcji sleep ale zapewne bedzie to tak wygladac
Dajesz ten warunek
zamiast tego
spróbuj czy działa
Dajesz ten warunek
Kod: Zaznacz cały
if(loseHistory()>3)
{
Sleep(................TUtaj wpisujesz wartosć czasu w milisekundach................)
sum=0;
}
zamiast tego
Kod: Zaznacz cały
if(loseHistory()<3)
{
long=OrderSend(Symbol(),OP_BUY,lot,Ask,3,Bid-25*Point,Bid+100*Point);
}
spróbuj czy działa
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.