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

 

No, non suona sempre, è "array out of range" quando >=. Perché?

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[])
  {
//---
   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(TimeCurrent()>=Input1 || TimeCurrent()>=Input2 || TimeCurrent()>=Input3)
           {
            BufferUP[i]=low[i]-10*Point;// в этой строке array out of range in 'a1.mq4' (75,28)

            Alert("__",TimeCurrent());
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
volyal:
Grazie. Just>= non è possibile, ci sarà un segnale costante, dopo la prima data, è necessario impostare l'intervallo di tempo. Come impostare?

questa è la seconda parte della domanda e la seconda parte della risposta

Quando il segnale (allarme) scatta, è necessario fissare che il segnale è già stato applicato, è necessaria una condizione aggiuntiva:

 {
//---
   static bool alerton=true;
   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(alerton)
           {
            if(A>B)
              {
               if((TimeCurrent()>=Input1 || TimeCurrent()>=Input2 || TimeCurrent()>=Input3))
                 {
                  BufferUP[i]=low[i]-10*Point;
                  Alert("__",TimeCurrent());
                  alerton = false;
                 }
              }
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Hai nel tuo codice condizioni chiare per l'attivazione dell'allarme. Di solito gli indicatori chiedono di fare un segnale per barra, quindi è necessario "legare" il tempo della barra a una variabile che memorizzerà il tempo di attivazione dell'allarme, cioè sto parlando di

statico datetime alerton=0;

Cercate esempi pronti, penso che ora lo capirete.

 
Aleksey Vyazmikin:

Se molti segnali sono uguali tutti insieme, raggruppali e suonali come uno solo. O raccoglierli in array per tipo di segnale e suonarli lentamente :)

Raggruppali in un array e riproducili in uno script separato - questo è abbastanza chiaro, corrisponde al tuo primo consiglio.

Ma raggruppare e suonare come una cosa sola, non capisco bene. Come un unico file audio?

Come, per esempio, raggruppare

se(Sobitie_1)

{
PlaySound("Symbol.wav");
PlaySound("Sobitie1.wav");
PlaySound("Period.wav");
}?


Come PlaySound("Symbol Sobitie1 Period.wav");? In questo caso, il numero di file Symbol * Sobitie * Period=3*10*7=210. Questo è troppo):

Inoltre, i segnali per la riproduzione provengono da indicatori di diversi TF. Non so ancora come tenerne conto.

 
Algus:

Raccoglierlo in un array e riprodurlo in uno script separato - questo è abbastanza chiaro, secondo il tuo primo consiglio.

Ma per raggruppare e giocare come una sola persona, non capisco bene. Come un unico file audio?

Come, per esempio, raggruppare

se(Sobitie_1)

{
PlaySound("Symbol.wav");
PlaySound("Sobitie1.wav");
PlaySound("Period.wav");
}?


Come PlaySound("Symbol Sobitie1 Period.wav");? In questo caso, il numero di file Symbol * Sobitie * Period=3*10*7=210. È molto...):

Inoltre, i segnali per la riproduzione provengono da indicatori di diversi TF. Non so ancora come tenerne conto.

Stavo parlando della frequenza con cui arriva il segnale, cioè, come ho capito hai lo stesso e non lo stesso suono, mentre si gioca un suono è accumulato in un buffer (può essere nel grafico accumulare) la coda di giocare, dopo giocare coda analizzato e scartato quei suoni che è venuto al momento della riproduzione del file e hanno lo stesso suono, cioè non portano le nuove informazioni. Non conosco i dettagli del tuo melofono :).

 

Buon pomeriggio!

Per favore, aiutatemi con questo malinteso:

Ho impostato una condizione per aprire una posizione:

if(MathAbs(WPR1)<20.0)
        {
         if(MathAbs(WPR14)>44.0 && MathAbs(WPR14)<60.0 && op0<cl1) 
{ps2=true;ps1=false;ps3=false;ps4=false;ps5=false;ps6=false;ps7=false;ps8=false;Alert("условие ps2"); OpenSell();}
        }

E invece di una posizione con la bandieraps2, ne apre due, con le bandiereps2 eps3. E non importa cosa ho fatto, non cambia nulla. Ho controllato tutte le situazioni con gli avvisi e niente. Cosa c'è ???? Non sembra esserci nulla di sbagliato, le bandiere impostano diversi livelli di TP. Ma ancora non c'è bisogno di una posizione extra.

Grazie.

 
novichok2018:

Buon pomeriggio!

Per favore, aiutatemi con questo malinteso:

Ho impostato una condizione per aprire una posizione:

E invece di una posizione con la bandieraps2, ne apre due, con le bandiereps2 eps3. E non importa cosa ho fatto, non cambia nulla. Ho controllato tutte le situazioni con gli avvisi e niente. Cosa c'è ???? Sembra che non ci sia niente di sbagliato, le bandiere impostano diversi livelli di TP. Ma comunque, non ho bisogno di una posizione in più.

Grazie.

Inoltre, il log dice che prima apre laps3, poi laps2.

 
novichok2018:

Buon pomeriggio!

Per favore, aiutatemi con questo malinteso:

Ho impostato una condizione per aprire una posizione:

E invece di una posizione con la bandieraps2, ne apre due, con le bandiereps2 eps3. E non importa cosa ho fatto, non cambia nulla. Ho controllato tutte le situazioni con gli avvisi e niente. Cosa c'è ???? Non sembra esserci nulla di sbagliato, le bandiere impostano diversi livelli di TP. Ma comunque, non ho bisogno di una posizione in più.

Grazie.

Vovochka torna da scuola. Chiede papà:

- Che voto hai preso oggi?

- Ho preso una "D" in scienze.

- Perché?

- L'insegnante mi mostra la coda di un uccello e mi dice di indovinare che tipo di uccello è...

Questo papà va a scuola, apre la porta dell'aula e punta il suo culo lì dentro.

- Chi diavolo è quel...

...chiede all'insegnante...

- Indovinate voi stessi.


Questo è esattamente il tuo codice...))))

 
Alexey Viktorov:

Vovochka torna a casa da scuola. Chiede papà:

- Che voto hai preso oggi?

- Ho preso una "D" in scienze.

- Perché?

- L'insegnante ti mostra la coda di un uccello e ti dice di indovinare che tipo di uccello è...

Questo papà va a scuola, apre la porta dell'aula e punta il suo culo lì dentro.

- Chi diavolo è quel...

...chiede all'insegnante...

- Indovinate voi stessi.


Questo è esattamente il tuo codice... ))))

La quinta elementare Ljoshenka non viene alle prime classi per aiutare, ma per arruffare le piume.

Questa è esattamente la tua risposta.

 
novichok2018:

Inoltre, il registro dice che apre prima laps3 e poi laps2.

Ecco, ho capito tutto. Si è rivelato semplice: negli avvisi con la condizioneps8 invece di 8 ce n'erano 3. E la condizione 8 è più larga della condizione 2 ed è più alta sulle linee. Sistemato e ristretto il campo, tutto è a posto.

Ma non dovresti scodinzolare, questo thread è per i nuovi arrivati. Un vero esperto senza dettagli dovrebbe capire dov'è approssimativamente l'errore, o almeno fare domande guida, altrimenti non dovrebbe rispondere affatto, piuttosto che ostentare pseudo-twirling.

 
Aleksey Vyazmikin:

Stavo parlando della frequenza con cui arriva il segnale, cioè, come ho capito hai lo stesso e non lo stesso suono, mentre si gioca il suono è accumulato in un buffer (è possibile nella grafica accumulare) coda per giocare, dopo aver giocato la coda analizzare e scartare quei suoni che è venuto al momento della riproduzione del file e hanno lo stesso suono, cioè, non portano le nuove informazioni. Non conosco i dettagli di che tipo di melofono hai lì :)

C'è un indicatore che sta su e tutti i TF e le valute funzionanti. Lavoro in intraday, quasi scalping, su 2-3 strumenti. Uso gli avvisi sonori per non perdere nessun evento e i miei occhi non cadono alla fine della giornata.

Infatti, ci sono 10-14 indicatori che riguardano Windows nell'attività. Si scopre che dobbiamo allineare diversi indicatori che lavorano in modo indipendente. Questo non è un compito semplice per il terminale o la sua programmazione.

Questo è il tipo di "musica" che si ottiene):