EA otwierający dwie przeciwstawne pozycje o X godzinie
EA otwierający dwie przeciwstawne pozycje o X godzinie
Witam,
Jak w temacie, poszukuję EA otwierającego dwie przeciwstawne pozycje o określonej godzinie, z określonymi SL, TP, TS. Zna ktoś takie? Z góry dzięki za informacje.
			
			
									
									Jak w temacie, poszukuję EA otwierającego dwie przeciwstawne pozycje o określonej godzinie, z określonymi SL, TP, TS. Zna ktoś takie? Z góry dzięki za informacje.

Ja jestem cienki bolek w programowaniu ale widzę, że tu nikt nie odpowiada, więc napisałem takie coś. Problem w tym, że nie wiem jak zrobić by nie otwierał pozycji co tick o zadanej minucie i na testerze otwiera tylko Longi.
Jeśli znajdzie się jakaś dobra duszyczka to niech poprawi kod tak by EA otwierało jednego Shorta i jednego Longa. Z założenia ma to robić minutę przed publikacją ważnych danych.
Aha. SL i TP jest ustawione dla broka, który kwotuje 5 miejsc po przecinku.
			
			
									
									
						Jeśli znajdzie się jakaś dobra duszyczka to niech poprawi kod tak by EA otwierało jednego Shorta i jednego Longa. Z założenia ma to robić minutę przed publikacją ważnych danych.
Aha. SL i TP jest ustawione dla broka, który kwotuje 5 miejsc po przecinku.
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=1600;
extern int       TakeProfit=60;
extern double    Lots   = 0.1;
int      Długa=0;
int      Krótka=0;
int start()
{
  if ( Hour()==Godzina && Minute()==Minuta)
     {
       OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"My order BUY",16384,0,Green);
       OrderSend(Symbol(),OP_SELL,Lots,Ask,3,Bid+StopLoss*Point,Ask-TakeProfit*Point,"My order SELL",16384,0,Green);
     }
     
 return(0);
}- Pierz Andrzej
 - Przyjaciel Forum

 - Posty: 1200
 - Rejestracja: 02 lip 2006, 14:17
 
nie
tylko
pzdr Andrzej
			
			
									
									Kod: Zaznacz cały
OrderSend(Symbol(),OP_SELL,Lots,Ask,3,Bid+StopLoss*Point,Ask-TakeProfit*Point,"My order SELL",16384,0,Green);
Kod: Zaznacz cały
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Ask-TakeProfit*Point,"My order SELL",16384,0,Green);
z poważaniem
Andrzej Pierz
FOREX-SERVICE
						Andrzej Pierz
FOREX-SERVICE
Teraz otwiera jednego Longa i jednego Shorta o godzinie 13:30 czasu Admiral Markets. Godzinę oczywiście można modyfikować by EA złożyło zlecenia o godzinie jakiej chcemy, zależnie od tego, o której wypadają dane makro. 
W tralig stopa się nie baiwę. Zajmie mi to za dużo czasu gdyż nie jestem biegły w programowaniu i w zasadzie bazuję na innych kodach a zmian dokonuję metodą prób i błędów.
Proszę pamiętać by ustawić SL i TP zależnie od tego jakie kwotowanie ma broker. Jeden pip to czwarte miejsce po przecinku.
			
			
									
									
						W tralig stopa się nie baiwę. Zajmie mi to za dużo czasu gdyż nie jestem biegły w programowaniu i w zasadzie bazuję na innych kodach a zmian dokonuję metodą prób i błędów.
Proszę pamiętać by ustawić SL i TP zależnie od tego jakie kwotowanie ma broker. Jeden pip to czwarte miejsce po przecinku.
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=20;
extern int       TakeProfit=10;
extern double    Lots   = 0.1;
int      Długa=0;
int      Krótka=0;
int start()
{
  if ( Hour()==Godzina && Minute()==Minuta)
   { 
    
    if(OrdersTotal()<2)
    
    
     {
       
       OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"My order BUY",16384,0,Green);
       
       if(OrderType()==OP_BUY)
       OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Ask-TakeProfit*Point,"My order SELL",16384,0,Green);
     }
    } 
 return(0);
}- Pierz Andrzej
 - Przyjaciel Forum

 - Posty: 1200
 - Rejestracja: 02 lip 2006, 14:17
 
Fesiek  proponowal bym zmineic kod na taki bardziej funkcjonalny .... poniewaz kozystaj z powyzszego kodu moze zdazyc sie tak ze otworzy Ci dwa zlecenia buy 
mniej wiecej moglo by wygladac to tak :
nadszedl tick
zlecen jest mniej niz 2
wysyla zlecenie buy - udalo sie
wysyla zlecenie sell - dostal requote
nadszedl kolejny tick
zlecen jest mniej niz 2
wysyla zlecenie buy - udalo sie
wysyla zlecenie sell - udalo sie

zamiast uzyl bym funkcji do sprawdzania ilosci zlecen ...
pzdr Andrzej
Dodano po 13 minutach:
PS prosze nie odbierac moich postow jako krytyke czy temu podobne ..... to jest pomoc
			
			
									
									mniej wiecej moglo by wygladac to tak :
nadszedl tick
zlecen jest mniej niz 2
wysyla zlecenie buy - udalo sie
wysyla zlecenie sell - dostal requote
nadszedl kolejny tick
zlecen jest mniej niz 2
wysyla zlecenie buy - udalo sie
wysyla zlecenie sell - udalo sie
zamiast
Kod: Zaznacz cały
if(OrdersTotal()<2)pzdr Andrzej
Dodano po 13 minutach:
PS prosze nie odbierac moich postow jako krytyke czy temu podobne ..... to jest pomoc
z poważaniem
Andrzej Pierz
FOREX-SERVICE
						Andrzej Pierz
FOREX-SERVICE
Do kontroli ilości zleceń funkcja:
Potem w warunku transakcji
if ( warunki && countOrders()<1)
			
			
									
									
						Kod: Zaznacz cały
  
int countOrders() {
int count=0;
for(int i=0;i<OrdersTotal();i++) 
               {
               if(OrderSelect(i,SELECT_BY_POS)) 
               {              
                 if(OrderSymbol()==Symbol()) 
                 {
                  count++;
               } } }   
              return(count);
   }
   
Potem w warunku transakcji
if ( warunki && countOrders()<1)
- Pierz Andrzej
 - Przyjaciel Forum

 - Posty: 1200
 - Rejestracja: 02 lip 2006, 14:17
 
raczej zalecil bym :
a  cale ea to moglo by wygladac tak :
pozdrawiam Andrzej Pierz
			
			
									
									Kod: Zaznacz cały
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);
   } 
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=20;
extern int       TakeProfit=10;
extern double    Lots   = 0.1;
int      Długa=0;
int      Krótka=0;
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);
}
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);
   } z poważaniem
Andrzej Pierz
FOREX-SERVICE
						Andrzej Pierz
FOREX-SERVICE
							
