Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 141

 
Puoi insegnare come aprire e chiudere un trade in MT4 dal mercato e dagli ordini pendenti?
 

Ciao cari programmatori!!!
Sto facendo un contatore di zecche per la candela, e qualcosa è andato storto! Voglio fargli contare i tick quando il prezzo sta solo salendo, ma conta quando sta salendo e quando sta scendendo (tutti i tick, e voglio solo tick crescenti) Guarda plz...

double CountTickBUY()
{

double old_price;
double delta_cur; 
double price = 0;
double old_open_price = 0;

for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
         if(OrderSymbol() == _Symbol && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
           {
           old_price = iClose(NULL, 0 , i);
           price = iOpen(NULL, 0 , i);

           delta_cur = old_price > price;
           if(delta_cur > 0) 
             {
             count_plusbuy++;
             }
           }
   }
   return(count_plusbuy);
}
 
sviter-pro:

Ciao cari programmatori!!!
Sto facendo un contatore di zecche per la candela, e qualcosa è andato storto! Voglio fargli contare i tick quando il prezzo sta solo salendo, ma conta quando sta salendo e quando sta scendendo (tutti i tick, e voglio solo tick crescenti) Guarda plz...

int CountTickBUY()
{
   static double    old_price     = Bid;
   static datetime  time_bar      = Time[0];
   static int       count_plusbuy = 0;
   
   if( time_bar != Time[0] )
   {
      count_plusbuy = 0;
      time_bar      = Time[0];
   }
   
   if( Bid - old_price > 0 )
      count_plusbuy++;
   old_price = Bid;

   return(count_plusbuy);
}
 
Konstantin Nikitin:

Grazie mille!

 

Konstantin Nikitin: Считает тики на кождой свече хорошо, но по 2 раза! Тоесть если отсчет пошел от 1.00000 и дошел до 1.00100 он 100 пунктов щитает, потом когда спустилась цена до 1.00080 он ждет и не считает, но когда цена опять начинает расти от 1.00080 то опять начинает считать пункты, а надо что бы ждал до 1.00100 и от нее считал дальше!!!

int CountTickBUY()
{
   static double    old_price     = Bid;
   static datetime  time_bar      = Time[0];
   static int       count_plusbuy = 0;
   
   if( time_bar != Time[0] )
   {
      count_plusbuy = 0;
      time_bar      = Time[0];
   }
   
   if( Bid - old_price > 0 )
      count_plusbuy++;
   old_price = Bid;

   return(count_plusbuy);
}



 

Per favore, spiega cosa controlla esattamente la funzione"IsTradeAllowed" quando viene chiamata la sua seconda forma.

So che il primo modulo controlla se il trading automatico è permesso e se il flusso commerciale è libero. E la seconda forma? Quali sono esattamente i controlli che avvengono quando viene chiamato il secondo modulo?

 
Asa saas:

Per favore, spiega cosa controlla esattamente la funzione"IsTradeAllowed" quando viene chiamata la sua seconda forma.

So che il primo modulo controlla se il trading automatico è permesso e se c'è un flusso commerciale libero. E la seconda forma? Quali sono esattamente i controlli che avvengono quando viene chiamato il secondo modulo?

Il secondo modulo restituisce informazioni sulla possibilità di scambiare per un simbolo specificato al momento specificato.


Se il flusso commerciale è libero isTradeContextBusy

 
Alekseu Fedotov:

La seconda forma della chiamata restituisce informazioni sulla capacità di negoziare per un dato simbolo in un momento specifico.


Se il flusso commerciale è libero isTradeContextBusy

La prima forma della funzione "IsTradeAllowed" non controlla anche se il thread di scambio è libero o no?

Sto solo usando la seconda forma della funzione "IsTradeAllowed" per scoprire se il mercato è aperto prima di eseguire gli ordini.

Tuttavia, non capisco bene se devo usare una funzione separata per controllare se un flusso libero come "IsTradeContextBusy" è disponibile o se la seconda forma di "IsTradeAllowed" fa già questo controllo.

 
Asa saas:

La prima forma di "IsTradeAllowed" non controlla anche se il flusso commerciale è libero o no?

Uso solo la seconda forma della funzione "IsTradeAllowed" per scoprire se il mercato è aperto prima di eseguire gli ordini.

Tuttavia, non sono sicuro se devo usare una funzione separatamente per controllare se un flusso libero come "IsTradeContextBusy" è disponibile o se la seconda forma di "IsTradeAllowed" fa già questo controllo.

1. No

2. No, non permette di fare trading usando Expert Advisors, ma può farlo manualmente

3. è necessario usare un'altra funzione per controllare il flusso delle transazioni ("IsTradeContextBusy()")

 
Asa saas:

Il primo modulo "IsTradeAllowed" non controlla anche se il flusso commerciale è libero o no?

Sì, è così. Almeno, lo dice la documentazione. Io stesso non so perché venga fatto, ma il fatto rimane lo stesso:

Возвращаемое значение

Возвращает true, если эксперту разрешено торговать и поток для выполнения торговых операций свободен, иначе возвращает false.

Uso semplicemente la seconda forma della funzione "IsTradeAllowed" per sapere se il mercato è aperto prima di eseguire gli ordini.

Tuttavia, non sono sicuro se la funzione per controllare se il flusso libero è disponibile come "IsTradeContextBusy" deve essere usata separatamente o se il secondo modulo "IsTradeAllowed" esegue già tale controllo.

Ma non è chiaro con la seconda forma. È responsabile del tempo nel futuro o nel passato.

Motivazione: