Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1240

 

Buon pomeriggio.

Ho uno strano problema.

Terminale MT4. Ci sono circa 15 indicatori su ogni grafico (standard e autoscritti). In alcuni casi se provo a rimuovere un indicatore attraverso la lista degli indicatori (Ctrl + i) - il terminale si blocca. Allo stesso tempo, se provate a rimuovere lo stesso indicatore premendo il tasto destro del mouse sulla linea o sulla freccia disegnata dall'indicatore attraverso il buffer e selezionando la voce di menu "Remove Indicator" - viene rimosso istantaneamente e senza problemi. La cosa più fastidiosa è che il problema è fluttuante: a volte un indicatore si blocca alla cancellazione, a volte un altro .... lo stesso indicatore blocca il terminale, a volte no.

A questo proposito, ho 2 domande:

1) cosa può essere collegato con il terminale si blocca quando si cancella un indicatore tramite la lista degli indicatori?

2) qual è la differenza tra i due metodi di cancellazione degli indicatori che ho descritto sopra?

 
satorifx:

Ho uno strano problema

Prova a far funzionare prima i sette indicatori insieme, se non ci sono problemi, poi i restanti 8 separatamente. Se ci sono problemi, divideteli di nuovo a metà. Questo troverà uno o due colpevoli. Se non si trova nulla, rimuovete uno alla volta da 15. Il metodo della scatola nera per tentativi ed errori funzionerà se avete l'abilità e la pazienza.
 
Il gestore di eventi di MT5, CHARTEVENT_CUSTOM OnChartEvent () sa che gestisce più thread.

Puoi creare una logica thread-safe all'interno del gestore OnChartEvent ()?

Si può scrivere codice orientato ai thread in MQL5?
 
Per favore, consigliatemi! Se chiamo un indicatore personalizzato tramite iCustom in un Expert Advisor, come posso fare in modo che i parametri di input di questo indicatore siano visualizzati nell'Expert Advisor? Ho il codice sorgente dell'indicatore. È anche complicato?
 
Sayberix:
Per favore, consigliatemi! Se chiamo un indicatore personalizzato attraverso iCustom in un Expert Advisor, come posso fare in modo che visualizzi i suoi parametri di input nell'Expert Advisor? Ho il codice sorgente dell'indicatore. È anche difficile?

Scrivere nell'ordine di enumerazione delle proprietà come nell'indicatore

doppioiCustom(
simbolo di stringa,// nome del simbolo
inttimeframe,// timeframe
nome della stringa,// indicatore cartella/nome_utente
... // elenco dei parametri di ingresso dell'indicatore
intmode,// fonte di dati
intshift// shift
);


Aprire "Parametri di ingresso" nell'indicatore e copiarli a turno con i valori richiesti

Assicuratevi di guardare il tipo di variabile, e se è una stringa, mettetela tra virgolette, non possiamo saltare nulla:

double val=iCustom(NULL,0,"SampleInd","",240,3,"",clrNONE,clrNONE,1,0);
 
Buon pomeriggio, perché si verificano questi artefatti? Il codice di chiusura d'emergenza non dovrebbe chiudersi al primo incrocio? Non si sono verificati errori di chiusura.
if(MathAbs(Ima-Ima2) <= c && OrdersTotal() != 0)
        {
         OrderSelect(ticket, SELECT_BY_TICKET);
         int a = OrderType();
         RefreshRates();
         if(a == 0)
           {
            OrderClose(ticket, lots, Bid, 20, clrBlack);
           }
         if(a == 1)
           {
            OrderClose(ticket, lots, Ask, 20, clrBlack);
           }
         ticket = 0;
}
File:
test.png  22 kb
 
RefreshRates funzionerà qui?

Nella funzione OrderSend abbiamo una cena, ma la cena è stata impostata prima del ciclo.


double cena=Ask;

for (int i=0; i<=10; i++)
   {
   RefreshRates();
   int t=OrderSend(OrderSymbol(),OP_BUY,0.1,cena,10,0,0); 
   if (t!=-1) break;
   }
 
igrok333:
RefreshRates funzionerà qui?

Nella funzione OrderSend abbiamo una cena, ma la cena è stata impostata prima del ciclo.


non

 
Igor Makanu:

non

ha preso il prezzo prima quando l'asc era ancora vecchio,
e poi solo refreshrates ha cambiato l'asc, giusto?
 
Avete indovinato. La variabile cena è indipendente da RefreshRates.