Errori, bug, domande - pagina 136

 
Renat:
L'indicatore creato da Expert Advisor non verrà scaricato fino a quando non lo cancellerai esplicitamente o Expert Advisor non sarà terminato.

Grazie per aver trovato il tempo di rispondere.

Questo cambia molto, significa che possiamo fare a meno di separare il codice per il tester e il codice per il reale.

 
Renat:

Consigli su come risparmiare risorse se gli indicatori sono necessari una volta all'ora:

lasciare una dozzina di indicatori standard per appendere fuori ad ogni tick o

Scaricateli dopo ogni utilizzo tramite IndicatorRelease(indicator_handle), e poi caricateli di nuovo dopo un'ora.

Ma la seconda variante aumenta il tempo dei test.

Rispondere anche quanto ritardo in media è necessario per caricare una maschera?

 
Urain:

Consigli sul modo migliore per risparmiare risorse se gli indicatori sono necessari una volta all'ora:

lasciare una dozzina di indicatori standard da appendere su ogni tick o

La cosa migliore da fare non è scaricarli (gli indicatori sono difficilmente necessari davvero "una volta all'ora"), ma:

  1. aumentare la dimensione della memoria con il passaggio a 64 bit, o
  2. ridurre la profondità dei grafici della storia
Il tempo esatto di caricamento è impossibile da dire - dipende da diversi fattori. È meglio non creare problemi scaricando gli indicatori - questo può causare problemi a causa dei processi asincroni di creazione e ricalcolo dell'indicatore.
 
Urain:

Consigli su come risparmiare risorse se gli indicatori sono necessari una volta all'ora:

lasciare una dozzina di indicatori standard per appendere fuori ad ogni tick o

Scaricateli dopo ogni utilizzo tramite IndicatorRelease(indicator_handle), e poi caricateli di nuovo dopo un'ora.

Ma la seconda variante aumenta il tempo dei test.

Rispondere anche quanto ritardo in media è necessario per caricare una maschera?

Se non usate il timer per altri scopi, provate a inviare dati al timer all'intervallo richiesto.
 

Domanda

Non uso affatto le impostazioni di offset, ma mi è capitato di vedere una descrizione su Alligator e ho iniziato a pensare... :)

Descrizione di una delle impostazioni dell'alligatore:

cambio_denti

[Spostamento della linea rossa rispetto al grafico del prezzo. Bisogna ricordare che lo spostamento della linea è puramente visivo per la visualizzazione, e i valori nel buffer dell'indicatore sono memorizzati senza alcuno spostamento. Quando i valori del buffer sono ottenuti usando la funzione CopyBuffer(), il valore di offset non avrà alcun effetto.

Anche se non è menzionato nella descrizione di MA, ma penso che sia un errore e tutto è simile

ma_turno

[Spostamento dell'indicatore rispetto al grafico dei prezzi.

Nell'immagine dove c'è l'uccellino giallo, il prezzo ha attraversato la MA senza uno spostamento. Qui è chiaro, per esempio, il prezzo alla chiusura della barra precedente è superiore alla MA e il prezzo all'apertura della barra corrente è aperto.

Ma dove si trova l'uccello verde, come facciamo a sapere la stessa cosa? Cioè quando il prezzo attraversa visivamente la MA con lo spostamento

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
Ciao, ho scritto uno script per ottenere un prezzo Ask per EURUSD
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  CSymbolInfo SymInfo;
  Alert(SymInfo.Ask());
  }
Restituisce 0 - penso di dover legare
CSymbolInfo SymInfo;
al simbolo del grafico, ma non so come specificare il simbolo della classe
 
kirill190982:
Ciao, ho scritto uno script - ottenendo il prezzo Ask per EURUSD dà 0 - penso di dover legare
al simbolo del grafico, ma non so come specificare il simbolo della classe
Prima di tutto, scopriamo in cosa consiste il corso. Per risolvere il problema dovreste usare i metodi Name e RefreshRates di questa classe.
 
Interesting:
La prima cosa da fare è familiarizzare con il contenuto della classe. Quando ci si collega al simbolo, si dovrebbe prima usare il metodo "Name" della classe.
//+------------------------------------------------------------------+
//|                                                   SymbolInfo.mqh |
//|                      Copyright © 2010, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//|                                              Revision 2010.02.22 |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Class CSymbolInfo.                                               |
//| Appointment: Class for access to symbol info.                    |
//+------------------------------------------------------------------+
class CSymbolInfo
  {
protected:
   string                      m_name;               // symbol name
   MqlTick                     m_tick;               // structure of tick;
.....
//--- ask parameters
   double            Ask() const                      { return(m_tick.ask); 
Ho capito che Ask nella classe è determinato dalla struttura MqlTick.
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  string Megasymbol=Symbol();
  CSymbolInfo SymInfo;
  SymInfo.Name(Megasymbol);
  Alert(SymInfo.Ask());
  }
Ancora non si ottengono risultati.
 
kirill190982:
Capisco che Ask nella classe è definito dalla struttura MqlTick; ho provato in entrambi i modi e ottengo ancora zero

Dovresti fare quanto segue

SymInfo.Name("EURUSD");
SymInfo.RefreshRates();
Print(SymInfo.Ask());
 
Interesting:

Che ne dite di provare in questo modo?

Grazie