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

 

Buon pomeriggio, utenti del forum.

Per favore, aiutatemi a organizzare correttamente il suono nell'indicatore. I mezzi standard di MT4 non funzionano bene.

Da quanto ho capito, nel momento in cui la barra parte da diversi grafici c'è un flusso di segnali da riprodurre in Windows. Non vengono messi in coda, ma vengono giocati per ultimi e gli altri vengono persi. Delle due funzioni PlaySound() adiacenti, solo una viene riprodotta. Crea confusione nei messaggi, e l'organizzazione dei messaggi causa il caricamento del terminale.

La soluzione sembra essere usare waveOut API o Winampa. Permette di formare una specie di playlist in indicatore e di passare la riproduzione al dispositivo esterno. Deve alleggerire il carico sul terminale. In generale, il problema è nella disposizione delle code.
Googlato. Non ho trovato nessuna descrizione dettagliata per dummies, e non riesco a capirlo da solo.
Se qualcuno ha risolto questo problema, o conosce una descrizione dettagliata, per favore avvisate. Penso che questo sarà di interesse per molti.

 

Qualcuno può aiutarmi per favore!!!!

Potete dirmi come fare in MT4 in modo che sul lato destro del grafico dei prezzi, ai livelli di stop, il prezzo sia evidenziato come sulle linee ask e bid????

File:
27c3ncf5hf2.jpg  355 kb
 
zctac:

Qualcuno può aiutarmi per favore!!!!

Potete dirmi come fare in MT4 in modo che sul lato destro del grafico dei prezzi, ai livelli di stop, il prezzo sia evidenziato allo stesso modo delle linee ask e bid????

Visualizza la tua linea orizzontale (OBJ_HLINE) al prezzo dell'ordine di stop.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
  • www.mql5.com
//| Создает горизонтальную линию                                     |                 price=0,                         width=1,            //| Перемещение горизонтальной линии                                 | //| Удаляет горизонтальную линию                                     |...
 
Algus:

Buon pomeriggio, utenti del forum.

Per favore, aiutatemi a organizzare correttamente il suono nell'indicatore. I mezzi standard di MT4 non funzionano bene.

Da quanto ho capito, al momento dell'inizio della barra da diversi grafici c'è un flusso di segnali da riprodurre in Windows. Non vengono messi in coda, ma vengono giocati per ultimi e gli altri vengono persi. Delle due funzioni PlaySound() adiacenti, solo una viene riprodotta. Crea confusione nei messaggi, e l'organizzazione dei messaggi causa il caricamento del terminale.

La soluzione sembra essere l'utilizzo di waveOut API o di strumenti Winampa. La formazione di qualcosa come una playlist in indicatore e la trasmissione della riproduzione al dispositivo esterno. Questo dovrebbe alleviare il carico sul terminale. In generale, il problema è nell'organizzazione della coda.
Googlato. Non ho trovato nessuna descrizione dettagliata per dummies, e non riesco a capirlo da solo.
Se qualcuno ha risolto questo problema, o conosce una descrizione dettagliata, per favore avvisate. Penso che questo sarà di interesse per molti.

È più facile da fare in Expert Advisor o in uno script di looping, perché Sleep() funziona lì, a differenza dell'indicatore e tra la riproduzione di melodie questo slittamento può essere impostato per aspettare fino alla fine della musica.

E chiamare l'indicatore da uno script o da un EA.
 
Aleksey Vyazmikin:

È più facile farlo in un consulente ausiliario o in uno script di looping, poiché Sleep() funziona lì, a differenza di un indicatore, e si può mettere questo slittamento tra i brani in riproduzione per aspettare che la musica sia finita.

L'indicatore può essere chiamato da uno script o da un Expert Advisor.

Grazie, ci penserò, forse come opzione per uscire.

Non è la durata il problema, ma la coda. I messaggi sono brevi, ma molto e allo stesso tempo. Di nuovo, mette a dura prova il terminale. Vorrei dare questo al sistema. Lì questo problema sembra essere risolto con i mezzi standard di Windows.

Anche se... forse.

 
Algus:

Grazie, ci penserò e vedrò se posso risolverlo.

Il problema non è la lunghezza, ma la coda. I messaggi sono brevi, ma molti in una volta sola. Di nuovo, mette un carico sul terminale. Vorrei dare questo al sistema. Questo compito sembra essere risolto con i mezzi standard di Windows.

Anche se. forse.

Se arrivano molti segnali uguali contemporaneamente, raggruppateli e suonateli come uno solo. O raccoglierli in array per tipo di segnale ed eseguirli passo dopo passo :)

 

Ad una certa data e ora devi controllare il segnale. Cosa c'è che non va?

input datetime Input1=D'23.02.2019 08:00:27';
input datetime Input2=D'08.03.2019 09:30:20';
input datetime Input3=D'01.04.2019 12:30:27';
______________________________________________

{
//---
 A=1;B=2;
   if(rates_total<2) return(0);
     {
      int limit=rates_total-prev_calculated;
      if(limit>1) 
        {
         ArrayInitialize(BufferUP,EMPTY_VALUE);
         ArrayInitialize(BufferDN,EMPTY_VALUE);
        }
      for(int i=limit; i>=0; i--) 
        {
         if(A>B&&(TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3))
           {
            BufferUP[i]=low[i]-10*Point;
            Alert("__",TimeCurrent());
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
Artyom Trishkin:

Emette la sua linea orizzontale (OBJ_HLINE) al prezzo dell'ordine di stop.

Grazie per la vostra risposta!
 
volyal:

Ad una certa data e ora devi controllare il segnale. Cosa c'è che non va?

if( (A>B) && (TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3) )

Avete condizioni "difficili", quindi probabilmente non state colpendo il vero valore dell'intera espressione.

Gli indicatori e gli Expert Advisors lavorano sulla ricezione del tick, ma il tick può avvenire un secondo dopo la tua condizione

dovreste provare a scrivere tali condizioni su >=

SZY: Beh, in generale, quando scrivo condizioni logiche complesse, di solito cerco di non perdere la logica di seguire le condizioni, poi posso ridurle in una forma più compatta, è più facile trovare errori logici nel caso in cui si verifichino in fase di debug

if(A>B)
{
   if(TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3))
        {
            BufferUP[i]=low[i]-10*Point;
            Alert("__",TimeCurrent());
        }
}

ma è una questione di gusti.

 
Igor Makanu:

Hai delle condizioni "difficili", quindi molto probabilmente non colpisci il vero valore dell'intera espressione

Gli indicatori e gli esperti lavorano sulla ricezione del tick, ma il tick può arrivare un secondo dopo la tua condizione

dovreste provare a scrivere tali condizioni su >=

SZY: Beh, in generale, quando scrivo condizioni logiche complesse, di solito cerco di non perdere la logica di seguire le condizioni, poi posso ridurle in una forma più compatta, è più facile trovare errori logici nel caso in cui si verifichino in fase di debug

ma è una questione di gusti.

Grazie. Semplicemente>= non è possibile, ci sarà un segnale costante dopo la prima data, è necessario impostare l'intervallo di tempo. Come si imposta?