info funzioni mql

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico
Rispondi
dmitriy
Messaggi: 338
Iscritto il: 18/05/2014, 0:47

info funzioni mql

Messaggio da dmitriy » 02/01/2018, 16:28

Ciao a tutti vi vorrei chiedere se con mql ci sono alcune funzioni, premetto che non sono un programmatore.
Allora le funzioni che cerco sono queste:

1. Chiudere EA quando avviene una situazione
2. Se avviene una situazione far partire un nuovo EA
3. Prendere in considerazione due TF differenti scon lo stesso EA , è fattibile?

grazie

Sponsor

Sponsor
 

dmitriy
Messaggi: 338
Iscritto il: 18/05/2014, 0:47

Re: info funzioni mql

Messaggio da dmitriy » 03/01/2018, 0:28

Provo a far capire con un esmpio......vorrei far terminare l'EA quando avviene una chiusura degli ordini, vorrei poter lavorare con due chiusure di due TF diversi e ho visto sul forum che si puo fare utilizzando iClose("USDCHF",PERIOD_H1,0)dove lo zero mi indica l'ultima barra, giusto?
Grazie e scusate la rusticità del codice.


Codice: Seleziona tutto

input double Trend1Ccontro2 =1;
input double EntryRule ="";
input double Livello    =0.75547;
input double LivSL =0.75649;
input double LivEntry =0.75547;
input double LivFTA ="";

extern int Nop=0;

static datetime lastTime;

int start()
{
    
    int direzione   = Trend1Ccontro2;
    int direzione2   = Trend1Ccontro2; 
    int cnt =0; 
     if( lastTime!= Time[ 0])// Se cambiata candela                                                                      
         {
          int altr =0;
          int totalA = OrdersTotal();  
                                                                                                                          
          for(int A=totalA -1;A>=0;A--)
               {
                OrderSelect(A, SELECT_BY_POS);
                if(OrderSymbol()== Symbol() )//Controllo ordini aperti su questo cross
                     cnt++;
                else
                     altr++; 
               }
               Alert ("cnt",cnt,"altr",altr,"Nop",Nop); 
                                     if (cnt==0&&Nop==0)//NON ci sono operazioni su questo cross                                                                                                       
                                                       {    
                                                          if(LivSL>LivEntry)//Controllo del trend se UP o DOWN                                               
                                                               {
                                                                double distanzaSL = (LivSL-LivEntry) ;
                                                                Alert("Quantità PIPs", distanzaSL,"DOWN");
                                                                }
                                                          else 
                                                                {
                                                                distanzaSL =(LivEntry-LivSL);
                                                                Alert("Quantità PIPs",distanzaSL,"UP");
                                                                }
           
                                                          double Vol=//Scelta PosizionSize
                                                          (AccountFreeMargin()*1/100)/(MarketInfo(Symbol(),MODE_TICKVALUE)*distanzaSL*MathPow(10,MarketInfo(Symbol(),MODE_DIGITS)));     
                                                          double MezzoVol=Vol/2;
    
                     
                                                               switch(direzione) //Scelta Contro o Trend  
                                                                      {
        
                                                                          case 1://Trend 
      
                                                
                                                                          if (Bid>Livello)
                                                                          {
                                                                          OrderSend(Symbol(), OP_BUYLIMIT,  Vol, LivEntry, 0, LivSL, LivEntry+distanzaSL*2, "Pbt&Ca");   
                                                                          Alert("Apertura buy trend");
                                                                          Nop++;
                                                                          break;
                                                                          } 
      
                                              
                                                                          else 
                                                                          {
                                                                          OrderSend(Symbol(), OP_SELLLIMIT, Vol, LivEntry, 0, LivSL,  LivEntry-distanzaSL*2, "Pbt&Cb");  
                                                                          Alert("Apertura sell trend");
                                                                          Nop++; 
                                                                          break;
                                                                          }                                                                        
     
     
     
      
                                                                          case 2://Controtrend 
      
      
                                                                          if( Bid>Livello)
                                                                          { 
                                                                          OrderSend(Symbol(), OP_BUYLIMIT,  MezzoVol, LivEntry, 0, LivSL, LivEntry+distanzaSL, "Pbt&Ca");
                                                                          Alert("Apertura buy controtrend 1");                                    
                                                                          OrderSend(Symbol(), OP_BUYLIMIT,  MezzoVol, LivEntry, 0, LivSL, LivEntry+distanzaSL*3, "Pbt&Ca"); 
                                                                          Alert("Apertura buy controtrend 2"); 
                                                                          break;
                                                                          Nop++;    
                                                                          }
           
             
                                                                          else 
                                                                          {  
                                                                          OrderSend(Symbol(), OP_SELLLIMIT,  MezzoVol, LivEntry, 0, LivSL, LivEntry-distanzaSL, "Pbt&Ca");  
                                                                          Alert("Apertura sell controtrend 1");                                   
                                                                          OrderSend(Symbol(), OP_SELLLIMIT,  MezzoVol, LivEntry, 0, LivSL, LivEntry-distanzaSL*3, "Pbt&Ca");  
                                                                          Alert("Apertura sell controtrend 2");
                                                                          Nop++;
                                                                          break;
                                                                          }      
                                                                      }      
                                                       }   
  
                                     else   // Ci sono gia operazioni su questo cross 
                                              
                                             switch(direzione2)  
                                                 
                                             {
                                                case 1: // Trend 1          
                                                {                                                                           
                                                   int totalB = OrdersTotal();                                                        
                                                   for(int B=totalB-1;B>=0;B--)
                                                   {
                                                     OrderSelect(B, SELECT_BY_POS);// Seleziona ordine trend
                                                     int typeB   = OrderType();
                                                     bool resultB = false;//NON SO A CHE SERVE 
                                                     Alert (typeB,"1");
                                                     switch(typeB)                                                                                                            
                                                        {
        
                                                        //Chiusure per signatura contraria trend--------------------------------------------------------
        
                                                        case OP_SELL://Chiusura sell trend 
                                                        if (OrderSymbol() == Symbol()&&Close[1]>Livello)
                                                            {
                                                            OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
                                                            Alert("Chiusura sell trend");
                                                            }
                                                        else if (OrderSymbol() == Symbol()&&Close[1]<LivFTA)
                                                                 OrderModify(OrderTicket(),OrderOpenPrice(),LivEntry,OrderTakeProfit(),0,Blue);
                                                        break;    
        
                                                        case OP_BUY://Chiusura buy trend 
                                                        if (OrderSymbol() == Symbol()&&Close[1]<Livello)
                                                            {
                                                            OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
                                                            Alert("Chiusura buy trend");
                                                            }
                                                        else if (OrderSymbol() == Symbol()&&Close[1]>LivFTA)
                                                                 OrderModify(OrderTicket(),OrderOpenPrice(),LivEntry,OrderTakeProfit(),0,Blue);    
                                                        break; 
                                         
                                                        }
                                                    }break;  
                                                 }                     
                                                 case 2: // Controtrend 2  
                                                 {          
                                                    int totalC = OrdersTotal();                                                        
                                                    for(int C=totalC-1;C>=0;C--)
                                                    {
                                                      OrderSelect(C, SELECT_BY_POS);// Seleziona ordine controtrend  
                                                      int typeC   = OrderType();
                                                      bool resultC = false;//NON SO A CHE SERVE      
                                                      Alert (typeC,"2");
                                                      switch(typeC)                                                                                         
                                                         {
                                                
                                                         //Chiusure per signatura contraria controtrend   
       
                                                         case OP_SELL://Chiusura sell controtrend      
                                                         if (OrderSymbol() == Symbol()&&Close[1]>Livello)
                                                             
                                                             OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
                                                             Alert("Chiusura sell controtrend");
                                                         break;
                                                             
      
                                                         case OP_BUY ://Chiusura buy controtrend
                                                         if (OrderSymbol() == Symbol()&&Close[1]<Livello)
                                                            
                                                             OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
                                                             Alert("Chiusura buy controtrend");
                                                         break;
                                                             
 
                                                         }
                                                    }
                                                 }break;       
                                               } 
 

 
        
        lastTime= Time[ 0]; 
        }
                                                                                                                                              
return(0);
}

Rispondi