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

 
Alexey Kozitsyn:

Ci sono diversi modi per ottenere i prezzi attuali:

1. Per qualsiasi simbolo: se volete ottenere prezzi correnti garantiti, chiamate SymbolInfoDouble() con gli identificatori corretti prima di usarli.

2. Per il simbolo corrente, puoi anche ottenere i prezzi attuali attraverso le variabili predefinite Bid e Ask. Possono essere superati, quindi se OnTick() è in esecuzione, dovreste aggiornarli con RefreshRates().

Grazie!
 
Avviso del compilatore:

"possibile perdita di dati a causa della conversione dei tipi"

Come posso superare questo avviso?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));
 
Maksym Mudrakov:
Avviso del compilatore:

"possibile perdita di dati a causa della conversione dei tipi"

Come posso superare questo avviso?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));

È necessario conoscere i tipi esatti di valori restituiti dalle funzioni e usare la conversione esplicita. https://www.mql5.com/ru/docs/basis/types/casting

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:
Non hai un modello completo - probabilmente non hai impostato i buffer degli indicatori nella procedura guidata, dove verranno scritti i dati calcolati.

Ma il principio di base per la maggior parte degli indicatori è il seguente:

//+------------------------------------------------------------------+
//| 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[])
  {
//---
   if(rates_total<1) return(0);              // проверка достаточности данных для расчёта индикатора, если не достаточно - выходим
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то проверять нужно это количество, а не 1
  
   //--- Действия для полного перерасчёта индикатора
   int limit=rates_total-prev_calculated;    // количество посчитанных уже баров
   if(limit>1) {                             // если количество больше 1, значит имеем новые данные, и нужно полностью пересчитать индикатор
      limit=rates_total-1;                   // задаём количество требуемых для расчёта баров равным количеству баров в истории,
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то это количество тоже нужно вычесть из rates_total чтобы не выйти за пределы массива
                                             // так же тут нужно при необходимости произвести инициализацию буферов индикатора
      }
  
   //--- Основной цикл индикатора
   for(int i=limit; i>=0; i--) {
      // тут выполняем нужные расчёты и записываем их результат в нужные буферы, например:
      ExtMapBuffer[i]=(open[i]+high[i]+low[i]+close[i])/4.0;   // Выведем на график среднюю цену каждой свечи (OHLC/4.0)
      }
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Artem, c'è un errore nel compilatore: 'ExtMapBuffer' - identificatore non dichiarato

 
Andrey Koldorkin:
Artem, il compilatore ha dato un errore: 'ExtMapBuffer' - identificatore non dichiarato

Certo che lo farà. L'ho scritto di getto. E prima di scrivere l'esempio, ti ho detto che nessuna variabile esterna è specificata nel modello (non è necessario) e nessun buffer per visualizzare i calcoli dell'indicatore è specificato. Naturalmente, ci sono alcuni indicatori che non usano l'uscita del buffer, ma non nel tuo caso.

Ecco perché ho messo questo buffer. Dovresti ricreare il modello, ma dovresti essere più responsabile di questa semplice azione e chiederti - "Ma cosa mi chiede la procedura guidata e di cosa ha bisogno?
 
Ciao, circa quattro mesi fa ho iniziato a studiare MQL4 usando il tutorial di Kovalev. Ho anche dei video. Sto guardando il video, studiando il tutorial, copiando i codici che si usano lì. capisco che questa è una cosa molto seria e ci vuole tempo per padroneggiarla. ma so esattamente che ho bisogno di pratica. ho bisogno di compiti semplici e di scriverli e qualcuno li controlla allora sarò in grado di andare oltre! un altro problema è che il libro e i video sono stati aggiornati, anche io ripeto il codice dal libro, lo compilo, ottengo errori, sembro una pecora ad un nuovo cancello...... questa è la tristezza!
 
FOTOGRAF14:
Ciao, circa quattro mesi fa ho iniziato a studiare MQL4 usando il tutorial di Kovalev. Ho anche dei video. Guardo il video e studio il tutorial, ripeto i codici che sono usati lì. capisco che questa è una cosa molto seria e ci vuole tempo per padroneggiarla. ma so esattamente che ho bisogno di pratica. ho bisogno di compiti semplici e di scriverli e qualcuno li controlla allora sarò in grado di andare oltre! un altro problema è che il libro e i video sono stati aggiornati, anche io ripeto il codice dal libro, lo compilo, ottengo errori, sembro una pecora al nuovo gate...... questa è la tristezza!

Leggete la documentazione per una volta. Il libro di testo non è aggiornato in alcuni punti. La documentazione vi aiuterà in questo. Per quanto riguarda i compiti - risolvete gli stessi compiti descritti nel libro di testo. Leggi il problema, guarda la soluzione, ripetila. E così via fino a quando non ci si prende la mano. È meglio prendere i compiti il più vicino possibile a quelli che si vuole imparare a realizzare da soli.

Tutto, ovviamente, IMHO.

 
Sergey Gritsay:
Per me si compila bene.

Ok, vuoi spiegare perché tali oggetti non sono differenziati?

Se cambiate il tipo di oggetto, le proprietà collasseranno con 2 etichette o linee di tendenza

 
Alexey Kozitsyn:

Leggete la documentazione per una volta. Il libro di testo non è aggiornato in alcuni punti. La documentazione vi aiuterà in questo. Per quanto riguarda i compiti - risolvete gli stessi compiti descritti nel libro di testo. Leggi il problema, guarda la soluzione, ripetila. E così via fino a quando non ci si prende la mano. È meglio prendere i compiti il più vicino possibile a quelli che si vuole imparare ad attuare da soli.

Tutto, ovviamente, IMHO.

Grazie!

 
trader781:

Ok, vuoi spiegare perché tali oggetti non sono differenziati?

Se cambiate il tipo di oggetto, le proprietà collasseranno con 2 etichette o linee di tendenza

R Quali oggetti non sono differenziati? e cosa intendi per sostituire il tipo di oggetto, le proprietà crolleranno?