Automat 5_8macross 300%

Jeżeli masz pomysł lub używasz ciekawego systemu albo strategii gry, opisz ja tutaj.
Awatar użytkownika
klopka
Stały bywalec
Stały bywalec
Posty: 53
Rejestracja: 19 kwie 2007, 11:56

Nieprzeczytany post autor: klopka »

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.

wicio75
Bywalec
Bywalec
Posty: 7
Rejestracja: 27 lut 2007, 10:26

Nieprzeczytany post autor: wicio75 »

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

Awatar użytkownika
klopka
Stały bywalec
Stały bywalec
Posty: 53
Rejestracja: 19 kwie 2007, 11:56

Nieprzeczytany post autor: klopka »

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
Cały czas pracuje nad różnymi automatami.
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.

wicio75
Bywalec
Bywalec
Posty: 7
Rejestracja: 27 lut 2007, 10:26

Nieprzeczytany post autor: wicio75 »

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                                   |
//+------------------------------------------------------------------+
testowany na e/u

nic nie jest zmienione tylko przy innych wskaźnikach zaczyna reagowac

Awatar użytkownika
klopka
Stały bywalec
Stały bywalec
Posty: 53
Rejestracja: 19 kwie 2007, 11:56

Nieprzeczytany post autor: klopka »

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.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
klopka
Stały bywalec
Stały bywalec
Posty: 53
Rejestracja: 19 kwie 2007, 11:56

Nieprzeczytany post autor: klopka »

Coś cicho się zrobiło. Nie wiem czy te strategie są takie słabe, czy może dobre???? :wink:

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.

Awatar użytkownika
Pablo90
Pasjonat
Pasjonat
Posty: 1215
Rejestracja: 10 cze 2007, 15:36

Nieprzeczytany post autor: Pablo90 »

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.

Awatar użytkownika
klopka
Stały bywalec
Stały bywalec
Posty: 53
Rejestracja: 19 kwie 2007, 11:56

Nieprzeczytany post autor: klopka »

2005 rok rzeczywiście nie najlepszy , ale mnie wyniki wyszły takie:
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Pablo90
Pasjonat
Pasjonat
Posty: 1215
Rejestracja: 10 cze 2007, 15:36

Nieprzeczytany post autor: Pablo90 »

Skąd masz dane historyczne, z XTB?

ODPOWIEDZ