EA otwierający dwie przeciwstawne pozycje o X godzinie

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
Fesiek
Pasjonat
Pasjonat
Posty: 579
Rejestracja: 07 lis 2009, 15:32

Nieprzeczytany post autor: Fesiek »

Pierz Andrzej pisze:PS prosze nie odbierac moich postow jako krytyke czy temu podobne ..... to jest pomoc
Ależ nie myślę inaczej. :) Dziękuję bardzo.
Postaram się zrozumieć ten kod zliczający zlecenia.

Edit:
Najpierw podziękowałem a tu się okazało, że to nie koniec. Niestety EA składa kilka zleceń L i kilka S.

OK, działa. Uruchomiłem go przez przypadek na koncie Pro a tam jest kwotowanie 5 miejsc po przecinku.
Jeszcze raz dziękuję za pomoc. :)
Ostatnio zmieniony 14 mar 2011, 20:11 przez Fesiek, łącznie zmieniany 1 raz.

Awatar użytkownika
RafalT
Stały bywalec
Stały bywalec
Posty: 77
Rejestracja: 25 wrz 2010, 00:24

Nieprzeczytany post autor: RafalT »

Wrzuć cały kod EA, wtedy będzie widać gdzie leżą ewentualne błędy :wink:

Awatar użytkownika
Fesiek
Pasjonat
Pasjonat
Posty: 579
Rejestracja: 07 lis 2009, 15:32

Nieprzeczytany post autor: Fesiek »

EA działa wyśmienicie po za tym, że nie przynosi zysków :wink:
Ciekawe jak się zachowa na danych w pierwsze piątki. Cały rok przed nami :)

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                                 minuta przed.mq4 |
//|                                                           Fesiek |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Fesiek"
#property link      "http://www.Fesiek.pl"//:) oczywiście nie ma takiej strony :)

//--- input parameters
extern int       Godzina=13;
extern int       Minuta=29;
extern int       StopLoss=6;
extern int       TakeProfit=12;
extern double    Lots   = 0.1;

int start()
{
     if ( Hour()==Godzina && Minute()==Minuta)
       {
        if (countOrders(OP_BUY)==0)   OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"My order BUY",16384,0,Green);
        if (countOrders(OP_SELL)==0)  OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Ask-TakeProfit*Point,"My order SELL",16384,0,Green);
       }
    
 return(0);
}// end start
int countOrders(int cmd) 
{
int count=0;
for(int i=0;i<OrdersTotal();i++)
               {
               if(OrderSelect(i,SELECT_BY_POS))
               {             
                 if(OrderSymbol()==Symbol() && cmd==OrderType())
                 {
                  count++;
               } } }   
              return(count);
} // end countOrders(int cmd)

Awatar użytkownika
RafalT
Stały bywalec
Stały bywalec
Posty: 77
Rejestracja: 25 wrz 2010, 00:24

Nieprzeczytany post autor: RafalT »

Kod: Zaznacz cały

if ( Hour()==Godzina && Minute()==Minuta)
dołóż do tej linijki && countOrders()<3

Wtedy EA nie będzie otwierać pozycji jeśli masz 2 otwarte (b i s)

Awatar użytkownika
szahal
Stały bywalec
Stały bywalec
Posty: 35
Rejestracja: 14 cze 2010, 07:51

Nieprzeczytany post autor: szahal »

Jakieś tam zyski przynosi, trzeba by było jeszcze nad nią popracować...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Obrazek

Ludwis
Bywalec
Bywalec
Posty: 8
Rejestracja: 10 kwie 2011, 13:57

Nieprzeczytany post autor: Ludwis »

Ciekawy temat.
Według mnie jeśli dało by się w jakiś sposób zmniejszyć SL do powiedzmy 3 pipów a TP=2*SL (z uwzględnieniem spredu)- może nie zlecenie SL tylko zamknięcie pozycji przez automat gdy aktualna cena będzie - 3 pipsy od aktualnej

To zakładając szanse trafienia 50% - bo w tym wypadku albo wejdzie długa pozycja albo krótka to automat powinien być teoretycznie maszynka do robienia pipsów

Chętnie bym protestował tą strategię

Ludwis
Bywalec
Bywalec
Posty: 8
Rejestracja: 10 kwie 2011, 13:57

Nieprzeczytany post autor: Ludwis »

Co ze zmodyfikowanym kodem jest nie tak - nie zamyka pozycji która jest stratna o dwa punkty?

Kod: Zaznacz cały

extern int       Godzina=13; 
 extern int       Minuta=1; 
 extern int       StopLoss=6; 
 extern int       TakeProfit=15; 
 extern double    Lots   = 0.1; 

 int start() 
 { 
   
     {
      if ( Hour()==9||10||11||12||13||14||15||16 &&OrdersTotal()==0)
        { 
         if (countOrders(OP_BUY)==0)   OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Bid+TakeProfit*Point,"My order BUY",16384,0,Green); 
         if (countOrders(OP_SELL)==0)  OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Ask-TakeProfit*Point,"My order SELL",16384,0,Green); 
        } 
       
      if (OrdersTotal()!=0)
    //  Cls()
  {
   if(OrderType() == OP_BUY && OrderOpenPrice()-2*Point==Bid)      OrderClose(OrderTicket(), OrderLots(), Bid, 1);
   else if(OrderType() == OP_SELL && OrderOpenPrice()-2*Point==Ask) OrderClose(OrderTicket(), OrderLots(), Ask, 1);
  }
  
      // {
      // if(( OrderType()== OP_BUY && OrderOpenPrice()-2=Bid) CloseOrderShort();  
      
     // if(( OrderType()== OP_SELL && OrderOpenPrice()-2=Ask) CloseOrderLong();
      // } 
   }

     
     
  
            
  return(0); 

 }

 
 
 // end start 
 int countOrders(int cmd) 
 { 
 int count=0; 
 for(int i=0;i<OrdersTotal();i++) 
                { 
                if(OrderSelect(i,SELECT_BY_POS)) 
                {              
                  if(OrderSymbol()==Symbol() && cmd==OrderType()) 
                  { 
                   count++; 
                } } }    
               return(count); 
 } // end countOrders(int cmd)

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

przyjzyj się temu ;)

Kod: Zaznacz cały

double lossInPips(int cmd)
{
   RefreshRates();
   for (int i =0;i<OrdersTotal();i++)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if (Symbol()==OrderSymbol() && cmd==OrderType() && MagicNumber==OrderMagicNumber())
      {
         if (cmd == OP_BUY ) return(OrderOpenPrice()-Ask);
         if (cmd == OP_SELL) return(Bid-OrderOpenPrice());
      }
   }
   return(0);
}

Kod: Zaznacz cały

if (lossInPips(OP_BUY) >= 2 * Point) close(OP_BUY)
moze to Ci w czyms pomoze ;)


pzdr Andrzej

Dodano po 4 godzinach 26 minutach:
Co ze zmodyfikowanym kodem jest nie tak - nie zamyka pozycji która jest stratna o dwa punkty?
po za tym przed zamknieciem i sprawdzeniem rodzaju zlecenia itp msuisz uzyc OrderSelect(...)
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ferdekfx6600
Gaduła
Gaduła
Posty: 104
Rejestracja: 12 lis 2009, 17:47

Nieprzeczytany post autor: ferdekfx6600 »

co dopisać aby np. o 12.00 ustawiło zlecenia oczekujące (sell stop, buy stop) o 10 pip ??? :pray:
Pozdrawiam i pipsów życzę

ODPOWIEDZ