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

 
Fast235:

questo è per me,

ci sarà un ritardo extra fino a quando tutti i punti saranno posizionati sul grafico durante la compilazione

Se necessario (per esempio, ricompilare), creare una variabile terminale expetname.deinitreason.ChartId() in OnDeinit e dargli una bandiera temporanea, mettere il codice del motivo lì. Lo stesso vale per i dati correlati (potresti averne bisogno).

in OnInit - vedere se la variabile esiste, agire sul suo valore.

e cancellare tale variabile in ogni caso...

---

suggerimento - le terminazioni anomale sono catturate allo stesso modo ma al contrario :-) In OnInit una variabile viene controllata e creata, e in OnDeinit viene cancellata. Se si è verificato un errore critico e l'EA/terminale è andato in crash, la variabile rimarrà.

 
Maxim Kuznetsov:

Se necessario (per esempio ricompilare), create una variabile terminale expetname.deinitreason.ChartId() in OnDeinit e datele il flag temporary, metteteci il codice del motivo. Lo stesso vale per i dati correlati (potresti averne bisogno).

in OnInit - vedere se la variabile esiste, agire sul suo valore.

e cancellare tale variabile in ogni caso...

---

suggerimento - le terminazioni anomale sono catturate allo stesso modo ma al contrario :-) In OnInit viene controllata e creata una variabile, e in OnDeinit viene cancellata. Se si è verificato un errore critico e l'EA/terminale è andato in crash, la variabile rimarrà.

Ho familiarità con i file e le variabili globali, non vale la pena creare questo, forse gli sviluppatori rimuoveranno dalla compilazione - 0, o anche aggiungere uno stato che il terminale è iniziato, per esempio, potrei aggiungere un caricatore di storia per multisymbol invece di input

 

Ciao a tutti! L'idea era di fare le candele, il volume, in colori diversi a seconda della direzione delle candele (su o giù). Tuttavia, l'ultima candela ottiene colori diversi a causa dei cambiamenti nella direzione della candela nel tempo. E con il tempo, tutte le candele assumono colori diversi. La domanda è come cambiare il colore dell'ultima candela e non cambiare le altre. O forse un'altra idea.



//+------------------------------------------------------------------+
//|                                      VSA_Volume_Color            |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 3

//////////////
datetime PrevTime = 0;
double iVolume_UP[];
double iVolume_DWN[];
double iVolume_NULL[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorDigits(5);
//--- indicator buffers mapping
   SetIndexBuffer(0, iVolume_UP);
   SetIndexBuffer(1, iVolume_DWN);
   SetIndexBuffer(2, iVolume_NULL);
//---
   SetIndexStyle(0, DRAW_HISTOGRAM,EMPTY,2,clrGreen);
   SetIndexStyle(1, DRAW_HISTOGRAM,EMPTY,2,clrWhite);
   SetIndexStyle(2, DRAW_HISTOGRAM,EMPTY,2,clrRed);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 i = 0, counted_bars = IndicatorCounted();
   i = Bars - counted_bars - 1;
   if(counted_bars < 0)
      return(-1);
//---
   if(counted_bars > 0)
      counted_bars--;
//--- return value of prev_calculated for next call
///////////
   while(i >= 0)
     {
      if(Close[i] > Open[i])
         iVolume_UP[i] =  iVolume(NULL, 0, i) * 1.0;
      if(Close[i] < Open[i])
         iVolume_DWN[i] =  iVolume(NULL, 0, i) * 1.0;
      if(Close[i] == Open[i])
         iVolume_NULL[i] =  iVolume(NULL, 0, i) * 1.0;
      i--;
     }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   return(rates_total);
  }
//+------------------------------------------------------------------+
Grazie!
 

Azzerare i buffer non necessari

iVolume_UP[i]=EMPTY_VALUE;
 

link a un argomento separato -SERIES_LASTBAR_DATE

la stampante ha mostrato che il segnale mancato perché - il segnale è venuto dall'indicatore attraverso l'evento personalizzato, ha controllato per una nuova barra utilizzando SERIES_LASTBAR_DATE e

nella stampa i dati della barra precedente, non nuovo ..., circa 50 mestieri in totale di 7 caratteri, scivola tale, che cosa si può guardare, qualche idea? ping 150.

Processore Ryzen 3700x 16 threads

----

se uso un simile schema multi-simbolo, l'ho provato su 2 o 3 terminali in tempo reale, su M1 per esempio, aspetto da un paio d'ore a mezza giornata per uno skip come questo, con 40-50 scambi al giorno

Il processore carica qualche % del robot, quasi dorme.

В моих ТС пропуск сигнала
В моих ТС пропуск сигнала
  • 2021.03.16
  • www.mql5.com
Не люблю создавать новые темы, Небольшие исходные данные: Советник работает в OnChatEvent, 7 символов, циклов нет, прямая передача номера за минусо...
 

un trade a 30-50, ok, può chiudere in nero o in nero, ma

Ho un sistema per calcolare i profitti totali, che è abbastanza complicato, e dovrebbe coinvolgere questo commercio ora, non al prossimo segnale

si può scavare più a fondo per 5 anni.

se il modello di evento è storto, per favore fatelo sapere agli sviluppatori in modo che possa essere scartato, a giudicare dai post iniziali su spy, dove sono state testate diverse varianti, c'era anche dispersione e omissioni?
 
Aleksei Stepanenko:

Azzerare i buffer non necessari

Fantastico. Tutto funziona). Grazie!
 
Ragazzi, per favore consigliatemi, sono confuso con l'indicizzazione nei buffer degli indicatori mql5.
Se la funzioneArraySetAsSeries(Buffer, true) viene applicata
, solo l'indicizzazione viene ampliata? O anche i valori del buffer sono espansi?
 
Roman:
Ragazzi, per favore consigliatemi, sono confuso con l'indicizzazione nei buffer degli indicatori mql5.
Se la funzioneArraySetAsSeries(Buffer, true) viene applicata
, solo l'indicizzazione viene ampliata? O anche i valori del buffer sono espansi?
Quando è vero, la barra zero del buffer dell'indicatore è quella più a destra sul grafico. Se falso, è la barra più a sinistra.
Nient'altro.
 
Artyom Trishkin:
Quando è vero, la barra zero del buffer dell'indicatore è più a destra sul grafico. A falso è più a sinistra.
Non c'è altro da dire.

Grazie.
Artem, per favore, dimmi un'altra cosa.
La funzione

ChartSetInteger(ChartID(), CHART_SHOW, false)
Nasconde la finestra principale del grafico e le sottofinestre dell'indicatore installato.
Come posso nascondere solo la finestra del grafico principale? Allo stesso tempo, la sottofinestra dell'indicatore dovrebbe rimanere visibile.