Zmodyfikowałem ustawienia Oscylatorexa, transakcje zawierane są częściej i też z dobrym rezultatem.
Oto ustawienia:
SL-48,
TP-35,
Period_MA_2 - 3,
okres CCI -10,
Poziom CCI górny -100,
Poziom CCI dolny -(-100),
Poziom Stoch górny -80,
Poziom Stoch dolny-20,
Na powyższych ustawieniach dzisiaj 08.04.2008 w nocy EURUSD M5 weszło zlecenie kupna o 0:33 po 1,5704 zamknięte z zyskiem 35 pipsów o 2:11 po 1,5737.
Automat 5_8macross 300%
Cały czas pracuje nad różnymi automatami.wicio75 pisze:Klopka dodaj tylko automat do modyfikacji SL względem TP i będzie super
ja zrezygnowałem z CCI dodałem SMA20 + 2x stoch + Laguerre - co daje dość ciekawe wyniki
Prosiłbym jednak wszystkich o podzielenie się swoimi modyfikacjami.(rysunki, kody itp.)
Zarządzanie wieloma otwartymi pozycjami to dość skomplikowana sprawa, przynajmniej tak mi się wydaje na razie, ale pracuje nad tym.
Trailling stop do opanowania.
Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| Oscylatorex.mq4 |
//| Copyright © 2008, K.K |
//| k59@op.pl |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, K.K"
#property link "k59@op.pl"
/*automat oparty jest na cci i stochastic oscylatorze,
wykorzystane jest tu zjawisko, ze po przekroczeniu jednoczesnie
przez cci i stochastica skrajnego poziomu nastepuje zwrot,
tzn. jezeli wskazniki przekrocza jednoczesnie dolne poziomy,
to spodziewamy sie zwrotu i zawieramy zlecenie przeciwne do wskazan
oscylatorow,dodatkowym filtrem jest srednia,
ale tez na zasadzie przeciwienstwa, automat sprawdzony na parze EURUSD,
dziala na M5,M15,M30,H1 */
//-----------------------------------------------------------------
extern double Lots =0.1; //jezeli wstawimy 0 to wielkosc zlecenia zalezy od Prots
extern double Prots =0.05;// wielkosc zlecenia zalezna % od wielkosci depozytu
extern double StopLoss =50;
extern double TakeProfit =200;
extern int Period_MA_2=3;
extern int okres_R_1=14;
extern double okres_laguerre_1=0.70;
extern double okres_laguerre_2=0.55;
extern double a_poziom_laguerre=0.85;//poziom otwarcia zlecenia Sell
extern double c_poziom_laguerre=0.45;//poziom otwarcia zlecenia Sell
extern double b_poziom_laguerre=0.15;//poziom otwarcia zlecenia Buy
extern int poziom_SLOCH_g =80;//poziom otwarcia zlecenia Sell
extern int poziom_SLOCH_d =20;//poziom otwarcia zlecenia Buy
extern double poziom_R_d =-80;//poziom otwarcia zlecenia Sell
extern double poziom_R_g =-20;//poziom otwarcia zlecenia Buy
double SMA20;
bool Work=true;
string Symb;
//-----------------------------------------------------------------
int start()
{
int
Total,
Tip=-1,
Ticket;
double
MA_2_t,linia_laguerre_1,Stoch,linia_laguerre_2,Stoch1,ACSignalCurrent,ACSignalPrevious,linia_R_1,
Lot,
Lts,
Min_Lot,
Step,
Free,
One_Lot,
Price,
SL,
TP;
bool
Ans =false,
Cls_B=false,
Cls_S=false,
Opn_B=false,
Opn_S=false;
//-----------------------------------------------------------------
if(Bars < Period_MA_2)
{
Alert("Za malo barow w oknie.EA nie pracuje.");
return;
}
if(Work==false)
{
Alert("Blad krytyczny.");
return;
}
//-----------------------------------------------------------------
Symb=Symbol();
Total=0;
for(int i=1; i<=OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symb)continue;
if (OrderType()>1)
{
Alert("Znaleziono otwarte zlecenie.EA nie pracuje.");
return;
}
Total++;
if (Total>1)
{
Alert("Kilka otwartych zlecen.EA nie pracuje.");
return;
}
Ticket=OrderTicket();
Tip =OrderType();
Price =OrderOpenPrice();
SL =OrderStopLoss();
TP =OrderTakeProfit();
Lot =OrderLots();
}
}
//-----------------------------------------------------------------
/* W tym miejscu podane sa kryteria do otwierania zlecen*/
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_LWMA,PRICE_TYPICAL,5);
//double lag1 = iCustom(NULL,0,"Laguerre_1",0.55,9500,0,0);
linia_laguerre_1=iCustom(NULL,0,"Laguerre",okres_laguerre_1,950,0,0);
linia_laguerre_2=iCustom(NULL,0,"Laguerre",okres_laguerre_2,950,0,0);
linia_R_1=iCustom(NULL,0,"WPR",okres_R_1,0,0,0);
Stoch1=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0);
Stoch=iStochastic(NULL,0,14,5,4,MODE_SMA,0,MODE_MAIN,0);
//linia_CCI_1=iCCI(NULL,0,okres_CCI_1,PRICE_WEIGHTED,0);
ACSignalCurrent = iAC(NULL,0,0);
ACSignalPrevious = iAC(NULL,0,1);
SMA20 = iMA(NULL,0,20,0,MODE_SMA,PRICE_OPEN,0);
//kryteria otwarcia zlecenia buy
if(Ask>SMA20 && linia_R_1 > poziom_R_d && ACSignalCurrent>0 && ACSignalPrevious<0 && Stoch1 > poziom_SLOCH_d && linia_laguerre_1 > b_poziom_laguerre && Stoch > poziom_SLOCH_d && linia_laguerre_2 > c_poziom_laguerre && Open[1]>MA_2_t)
{
Opn_B=true;
Cls_S=true;
}
//kryteria otwarcia zlecenia sell
if( Ask>SMA20 && linia_R_1 < poziom_R_g && ACSignalCurrent<0 && ACSignalPrevious>0 && Stoch1 < poziom_SLOCH_g && linia_laguerre_1 < a_poziom_laguerre && Stoch < poziom_SLOCH_g && linia_laguerre_2 < c_poziom_laguerre && Close[1]<MA_2_t)
{
Opn_S=true;
Cls_B=true;
}
//-----------------------------------------------------------------
// zamkniecie zlecen
while(true)
{
if (Tip==0 && Cls_B==true)
{
Alert("Proba zamkniecia Buy",Ticket,".Oczekiwanie na odpowiedz..");
RefreshRates();
Ans=OrderClose(Ticket,Lot,Bid,2);
if (Ans==true)
{
Alert ("Zamkniete zlecenie Buy",Ticket);
break;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}
if (Tip==1 && Cls_S==true)
{
Alert("Proba zamkniecia Sell ",Ticket,".Oczekiwanie na odpowiedz..");
RefreshRates();
Ans=OrderClose(Ticket,Lot,Ask,2);
if (Ans==true)
{
Alert ("Zamkniete zlecenie Sell",Ticket);
break;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}
break;
}
//-----------------------------------------------------------------
// Obliczanie ilosci lotow
RefreshRates();
Min_Lot=MarketInfo(Symb,MODE_MINLOT);
Free =AccountFreeMargin();
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);
Step =MarketInfo(Symb,MODE_LOTSTEP);
if (Lots > 0)
Lts =Lots;
else
Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;
if(Lts < Min_Lot) Lts=Min_Lot;
if (Lts*One_Lot > Free)
{
Alert("Brak pieniedzy na", Lts," lotow");
return;
}
//-----------------------------------------------------------------
// Otwieranie zlecen
while(true)
{
if (Total==0 && Opn_B==true)
{
RefreshRates();
SL=Bid - New_Stop(StopLoss)*Point;
TP=Bid + New_Stop(TakeProfit)*Point;
Alert("Proba otwarcia Buy. Oczekiwanie na odpowiedz..");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);
if (Ticket > 0)
{
Alert ("Otwarte zlecenie Buy",Ticket);
return;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}
if (Total==0 && Opn_S==true)
{
RefreshRates();
SL=Ask + New_Stop(StopLoss)*Point;
TP=Ask - New_Stop(TakeProfit)*Point;
Alert("Proba otwarcia Sell. Oczekiwanie na odpowiedz..");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);
if (Ticket > 0)
{
Alert ("Otwarte zlecenie Sell ",Ticket);
return;
}
if (Fun_Error(GetLastError())==1)
continue;
return;
}
break;
}
//-----------------------------------------------------------------
return;
}
//----------------------------------------------------------------
// obrobka bledow
int Fun_Error(int Error)
{
switch(Error)
{
case 4: Alert("Handlowy serwer zajety. Probujemy jeszcze raz..");
Sleep(3000);
return(1);
case 135:Alert("Cena sie zmienila. Probujemy jeszcze raz..");
RefreshRates();
return(1);
case 136:Alert("Brak ceny. Czekamy na nowy tick..");
while(RefreshRates()==false)
Sleep(1);
return(1);
case 137:Alert("Broker zajety. Probujemy jeszcze raz..");
Sleep(3000);
return(1);
case 146:Alert("Podsystem zajety. Probujemy jeszcze raz..");
Sleep(500);
return(1);
// Bledy krytyczne
case 2: Alert("Ogolny blad.");
return(0);
case 5: Alert("Stara wersja terminala.");
Work=false;
return(0);
case 64: Alert("Rachunek zablokowany.");
Work=false;
return(0);
case 133:Alert("Handel zabroniony.");
return(0);
case 134:Alert("Za malo pieniedzy do wykonania operacji.");
return(0);
default: Alert("Inny blad",Error);
return(0);
}
}
//--------------------------------------------------------------
int New_Stop(int Parametr)
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);
if (Parametr<Min_Dist)
{
Parametr=Min_Dist;
Alert("Powiekszony dystans Stop Limit.");
}
return(Parametr);
}
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
nic nie jest zmienione tylko przy innych wskaźnikach zaczyna reagowac
Dość mocno, chyba przez funkcję iCustom ,zwolniło się testowanie, ale na razie zauważyłem, że pozycje otwierane są w dość dobrych momentach, ale z zamknięciem są problemy, może rzeczywiście Trailling stop by temu zaradził.
Poniżej przerobiony z EA (MACD) zawartego w MetaTrader 4 "Oscylator," który także opiera się na oscylatorach i MA, jest w nim Trailling stop, dodałem SL.
Poniżej przerobiony z EA (MACD) zawartego w MetaTrader 4 "Oscylator," który także opiera się na oscylatorach i MA, jest w nim Trailling stop, dodałem SL.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Coś cicho się zrobiło. Nie wiem czy te strategie są takie słabe, czy może dobre????
Mnie wydaje się , że są do przyjęcia, a strategii dających 100% zyskownych pozycji NIE MA.
.
Zrobienie z 10 tys 1mln w miesiąc, czy nawet rok, uważam za chwyt marketingowy firm forexowych, to trzeba przyjąć do wiadomości i pogodzić się z tym. (jedyna możliwość to ryzykowanie całym depozytem i duuużo ale to bardzo dużo szczęścia).
Poniżej wynik testowania Oscylatora za ostatni rok. ( zmienione zostały pierwotne ustawienia)

Mnie wydaje się , że są do przyjęcia, a strategii dających 100% zyskownych pozycji NIE MA.




Zrobienie z 10 tys 1mln w miesiąc, czy nawet rok, uważam za chwyt marketingowy firm forexowych, to trzeba przyjąć do wiadomości i pogodzić się z tym. (jedyna możliwość to ryzykowanie całym depozytem i duuużo ale to bardzo dużo szczęścia).
Poniżej wynik testowania Oscylatora za ostatni rok. ( zmienione zostały pierwotne ustawienia)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
klopka dzięki za to, że wstawiasz tu te automaty i że Ci się chce. Przetestowałem ten automat na danych z 2005 roku i niestety wyczyścił konto. W załącznikach dałem wyniki. Nie wiem dlaczego, ale bardzo dużo automatów się wykłada w 2005 roku . A może po prostu lata 2006 - 2007 były nadzwyczaj trendowe dla pary EUR/USD i to jest powodem zarabiania właśnie w tych latach przez wiele strategii mechanicznych?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.