Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 748

 
RogozaIV:
Sono recentemente passato da mql4 a mql5. Sto testando un Expert Advisor sull'indice RTS e ho un problema con l'apertura di diverse posizioni, anche se una delle condizioni per l'apertura di una posizione è se (...OrdersTotal()==0). Perché questa condizione non funziona? Cosa posso fare per aprire una sola posizione?

OrdiniTotale

OrdersTotal Restituisce il numero di ordini attivi.

PosizioniTotale

PositionsTotal Restituisce il numero di posizioni aperte.


Nota

Non ci dovrebbe essere confusione traordini pendenti attivi e posizioni, che sono anche visualizzati nella scheda "Trade" del pannello "Toolbox". Un ordine è un ordine di eseguireun'operazione, mentre una posizione è il risultato di una o piùoperazioni.

Con il "netting" delle posizioni (ACCOUNT_MARGIN_MODE_RETAIL_NETTING eACCOUNT_MARGIN_MODE_EXCHANGE) solo unaposizione può essere aperta per ognisimbolo in qualsiasi momento ed è il risultato di una o piùoperazioni. Le posizioni e gliordini pendenti attivi, che sono anche visualizzati nella scheda "Trade" del pannello "Toolbox", non devono essere confusi tra loro.

In caso di rappresentazione indipendente delle posizioni (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) si possono aprire diverse posizioni per ogni simbolo simultaneamente.


Cioè, usandoOrdersTotal, si controlla quanti ORDINI RETAILED ci sono al momento:

TIPO D'ORDINE_ACQUISTO_LIMITE

Ordine Buy Limit in sospeso

TIPO DI ORDINE_VENDITA_LIMITE

Ordine limite di vendita in sospeso

TIPO D'ORDINE_ACQUISTO_STOP

Ordine buy stop in sospeso

TIPO DI ORDINE_VENDI_STOP

Ordine Sell Stop in sospeso

TIPO D'ORDINE_ACQUISTO_LIMITE

Quando il prezzo dell'ordine viene raggiunto, un ordine pendente Buy Limit viene piazzato al prezzo StopLimit

TIPO D'ORDINE_VENDITA_LIMITE_DI_FINE

Quando il prezzo dell'ordine viene raggiunto, un ordine pendente Sell Limit viene piazzato al prezzo StopLimit


e devi controllare quante posizioni aperte ci sono in quel momento:

TIPO DI POSIZIONE_ACQUISTO

Compra

TIPO DI POSIZIONE_VENDITA

Vendere


- PositionsTotal dovrebbe essere usato per questo.

 
 
Agat:
Buon pomeriggio. Dopo l'ultimo aggiornamento di MT5 alla build 1604 i miei indicatori non funzionano più correttamente. Sto usando
I cosiddetti indicatori "liquidi". Per esempio, ho diversi stocastici multiperiodali in una finestra. Bene, ora i corti sono disegnati
Come prima, quelli leggermente più lunghi disegnano solo alcune barre e quelli più lunghi non vengono disegnati affatto.

Ho l'impressione che improvvisamente abbiano cominciato a mancare la storia. Potresti dirmi cosa c'è che non va?
Si scopre che il guasto si è verificato in quei MT in cui i timeframe inferiori non sono stati aperti. Ho dovuto aprire i grafici da M1 in su e tutto è andato bene. Il problema è ora chiuso.
 
Sì, ti sei eccitato troppo presto, quando riavvii il terminale è lo stesso, devi cliccare su tutti i grafici ogni volta.
Non va bene, è impossibile lavorare. Qualcuno vuole almeno dire una parola sul merito della questione o no? Ovviamente l'aggiornamento è glitchato.

Dove vanno le persone per queste domande?
 
Ciao! 2017.06.02_17:45 GMT+3. Ho una domanda. Il programma .mq5 ha scritto il suo calcolo del lotto, -- il risultato, -- il programma nel tester di strategia cerca di aprire un trade con un lotto proibitivo. Percentuale di rischio 1,09. La dimensione del deposito è più grande del deposito (per default $10.000). Ho provato a usare il file OOP standard dalla cartella Include>Expert>Money>MoneyFixedRisk.mqh . Risultato: il programma cerca di aprire un trade con lotto zero. (0.00). Penso... è un trucco da programmatori di corporation. O mi manca qualcosa? Bene, rendi la tua EA inutile. Piegare il lotto sul lato. Forse, chi sa cosa dovrei scrivere, in modo che l'Expert Advisor apra i trade con il lotto calcolato, con la percentuale di rischio specificata? Non posso farlo da solo, sto perdendo il mio tempo. Spero che i programmatori della nostra società non si offendano. Sto allegando il file Lot.mqh incluso. Spero che qualcuno risponda. 18:00 GMT+3. Inserito alle 18:11 GMT+3.
File:
Lot.mqh  2 kb
 
Agat:
Buon pomeriggio. Dopo l'ultimo aggiornamento di MT5 alla build 1604 i miei indicatori non funzionano più correttamente. Sto usando
I cosiddetti indicatori "liquidi". Per esempio, ho diversi stocastici multiperiodali in una finestra. Bene, ora i corti sono disegnati
Come prima, quelli leggermente più lunghi disegnano solo alcune barre e quelli più lunghi non vengono disegnati affatto.

Ho l'impressione che improvvisamente abbiano cominciato a mancare la storia. Potresti dirmi cosa c'è che non va?


Come si accede alla storia di un altro periodo? Quali controlli eseguite per l'accesso? Quali codici di errore ricevete?

 
Николай Никитюк:
Ciao! 2017.06.02_17:45 GMT+3. Ho una domanda. Il programma .mq5 ha scritto il suo calcolo del lotto, -- il risultato, -- il programma nel tester di strategia cerca di aprire un trade con un lotto proibitivo. Percentuale di rischio 1,09. La dimensione del deposito è più grande del deposito (per default $10.000). Ho provato a usare il file OOP standard dalla cartella Include>Expert>Money>MoneyFixedRisk.mqh . Risultato: il programma cerca di aprire un trade con lotto zero. (0.00). Penso... è un trucco da programmatori di corporation. O mi manca qualcosa? Bene, rendi la tua EA inutile. Piegare il lotto sul lato. Forse, chi sa cosa dovrei scrivere, affinché l'Expert Advisor apra i trade con il lotto calcolato, con la percentuale di rischio specificata? Non posso farlo da solo, sto perdendo il mio tempo. Spero che i programmatori della nostra società non si offendano. Sto allegando il file Lot.mqh incluso. Spero che qualcuno risponda. 18:00 GMT+3. Inserito alle 18:11 GMT+3.

Esegui questo EA:Money Fixed Risk- cambia entrambi i parametri di input e vedi le stampe nella scheda "Experts" del terminale.
 

Non riesco a ottenere nessun dato nel mio indicatore.

int OnInit()
  {  
   handle1=iMA(NULL,0,per1,0,MODE_LWMA,PRICE_CLOSE);
   handle2=iMA(NULL,0,PLength1,0,MODE_LWMA,PRICE_CLOSE);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int copied1=CopyBuffer(handle1,0,0,toCount,TMP_Buf1);
   if(copied1<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(handle1)>0)
            break;
         Sleep(50);
        }
      copied1=CopyBuffer(handle1,0,0,toCount,TMP_Buf1);
      if(copied1<=0)
        {
         Print(__FUNCTION__+": copying indicator data failed. Error=",GetLastError());
         return(0);
        }
     }  
   int copied2=CopyBuffer(handle2,0,0,toCount,TMP_Buf2);
   if(copied2<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(handle2)>0)
            break;
         Sleep(50);
        }
      copied2=CopyBuffer(handle2,0,0,toCount,TMP_Buf2);
      if(copied2<=0)
        {
         Print(__FUNCTION__+": copying indicator data failed. Error=",GetLastError());
         return(0);
        }
     }
  }

Niente viene copiato. Le variabili copiate1/2 sono sempre meno di zero. Nel debugger non posso andare oltre questo codice. Come farlo correttamente, la mia testa è già rotta.

 
Hmm... prima c'era un errore 4806, ora è 4807 quando ho spostato la creazione dell'handle a OnInit(). Come si fa?
 
Credo di aver capito. La maniglia non è stata creata. Non ho inizializzato tutti i dati.