Errori, bug, domande - pagina 2964

 
Roman:

Sostituire la struttura con una singola variabile ))

Non trasferibile.

 
fxsaber:

Non viene trasferito.

Ti sei ricordato di importare la funzione nell'Expert Advisor?
Ho aggiornato l'esempio per la struttura, non c'era molto di sbagliato lì.
In generale, se lavorate con una struttura, pensate a come dichiarare un oggetto struttura, globalmente o localmente.
E per una variabile, tutto questo non è necessario, basta restituire la variabile ed è tutto.

Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
  • www.mql5.com
Импорт функций (#import) - Препроцессор - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

Ti sei ricordato di importare la funzione nell'EA?

Puoi fornire il codice sorgente dell'indicatore e dell'EA per la tua idea o no?

 
fxsaber:

Puoi fornire il codice sorgente dell'indicatore e dell'EA per la tua idea o no?

Sì, è strano. L'esportazione per le funzioni in mql4 non vuole funzionare per qualche motivo.
Non ottengo alcun risultato dalla libreria o dall'indicatore. Tuttavia, ho visto delle funzioni nelle dipendenze.
Un esempio per la biblioteca

#property library
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

double value = 0.0;

//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
double SetValue(double v) export
{
   value = v;    
   return(value);
}

//+------------------------------------------------------------------+
double GetValue(void) export
{
   return(value);
}
//+------------------------------------------------------------------+

Un indicatore che imposta un valore

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window

#import "Lib.ex4"
   double SetValue(double v);
   double GetValue(void);
#import

MqlTick tick;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{

   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   Comment("");
}
  
//+------------------------------------------------------------------+
//| 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[])
{
   
   SymbolInfoTick(NULL, tick);
   SetValue(tick.bid);
   
   //Comment((string)GetValue());   
   
   return(rates_total);
}
//+------------------------------------------------------------------+

Un Expert Advisor che dovrebbe ottenere un valore attraverso una funzione ma non funziona

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

#import "Lib.ex4"
   double GetValue(void);
#import

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   EventSetMillisecondTimer(10);
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   Comment("");
   EventKillTimer();
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
}

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
{
   double bid = GetValue();
   
   Comment("\r\nЭксперт получил значение из индикатора = "+(string)bid);
   //ChartRedraw();

}
//+------------------------------------------------------------------+
 
fxsaber:

Mando i tick dall'indicatore tramite questo: sparam contiene MqlTick, lparam - numero di tick.

L'Expert Advisor cattura questi tick in OnChartEvent. E deve capire se il tick attuale è quello più attuale o no? Cioè, c'è una coda di zecche o è vuota?

Per questo, legge il numero (il compito è leggere questo numero) dell'ultimo tick inviato dall'indicatore. Se il tick ha lo stesso numero - la coda è vuota, ed è possibile iniziare a lavorare con i tick.


E durante il funzionamento di OnTick, dopo OrderSend è necessario controllare se l'indicatore ha inviato altri tick. Per questo, abbiamo di nuovo bisogno di leggere il numero dall'indicatore. E ci possono essere più di cento di questi controlli durante un OnTick. Ecco perché dobbiamo leggerlo velocemente.

Se l'Expert Advisor sta prendendo i tick attraverso CopyTicks, perché ha bisogno di sapere che la coda è vuota?

Lasciatelo lavorare su ciascuno degli eventi, e saltate gli eventi che hanno meno tempo di quelli già elaborati.

 
Andrey Khatimlianskii:

Se il mio Expert Advisor sta ancora prendendo tick tramite CopyTicks, perché deve sapere che la coda è vuota?

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2021.02.17 21:26

Vi prego di condividere i miei pensieri su questo problema(MT4):

L'indicatore deve scrivere int-numero da qualche parte. E EA deve leggerlo.

 
fxsaber:

una cosa del genere potrebbe essere d'aiuto?

https://www.mql5.com/ru/code/818

File Mapping без DLL
File Mapping без DLL
  • www.mql5.com
Класс MQL5, который работает напрямую с маппингом, без использования самописной DLL.
 
Mikhail Mishanin:

una cosa del genere potrebbe essere d'aiuto?

https://www.mql5.com/ru/code/818

Una rapida opzione WinAPI è stata suggerita sopra.

 
fxsaber:

Una veloce variante WinAPI è stata suggerita sopra.

questa opzione è più pericolosa e difficile da attuare

 
Andrei Trukhanovich:

questa opzione è più pericolosa e difficile da implementare

In attesa di questo.