Errores, fallos, preguntas - página 2964

 
Roman:

Sustituir la estructura por una sola variable ))

No es transferible.

 
fxsaber:

No se está transfiriendo.

¿Te has acordado de importar la función en el Asesor Experto?
He actualizado el ejemplo para la estructura, no había mucho mal allí.
En general, si trabajas con una estructura, piensa en cómo declarar un objeto de estructura, de forma global o local.
Y para una variable, todo esto no es necesario, simplemente devuelve la variable y ya está.

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

¿Te has acordado de importar la función en el EA?

¿Puede proporcionar el código fuente del indicador y EA para su idea o no?

 
fxsaber:

¿Puede proporcionar el código fuente del indicador y EA para su idea o no?

Sí, es extraño. La exportación de funciones en mql4 no quiere funcionar por alguna razón.
No obtengo ningún resultado de la biblioteca ni del indicador. Sin embargo, he visto funciones en dependencias.
Un ejemplo para 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 indicador que fija un valor

#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 Asesor Experto que debería obtener un valor a través de una función pero no funciona

#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:

Envío los ticks del indicador a través de esto: sparam contiene MqlTick, lparam - número de tick.

El Asesor Experto capta estos ticks en OnChartEvent. ¿Y necesita entender si el tick actual es el más actual o no? Es decir, ¿hay una cola de ticks o está vacía?

Para ello, lee el número (la tarea es leer este número) del último tick enviado por el indicador. Si el tick tiene el mismo número - la cola está vacía, y es posible empezar a trabajar con los ticks.


Y durante la operación de OnTick, después de OrderSend es necesario comprobar si el indicador ha enviado más ticks. Para ello, tenemos que volver a leer el número del indicador. Y puede haber más de un centenar de estas comprobaciones durante un OnTick. Por eso hay que leerlo rápidamente.

Si el Asesor Experto está tomando los ticks a través del CopyTicks, ¿por qué necesita saber que la cola está vacía?

Deje que trabaje en cada uno de los eventos, y omita los eventos, que tienen menos tiempo que los ya procesados.

 
Andrey Khatimlianskii:

Si mi Asesor Experto sigue tomando ticks a través de CopyTicks, ¿por qué necesita saber que la cola está vacía?

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

fxsaber, 2021.02.17 21:26

Por favor, comparta mi opinión sobre este tema(MT4):

El indicador tiene que escribir el número int en alguna parte. Y EA tiene que leerlo.

 
fxsaber:

¿algo así ayudaría?

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

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

¿algo como esto podría ayudar?

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

Más arriba se sugirió una opción rápida de WinAPI.

 
fxsaber:

Más arriba se sugirió una opción rápida de WinAPI.

esta opción es más peligrosa y difícil de aplicar

 
Andrei Trukhanovich:

esta opción es más peligrosa y difícil de aplicar

Esperando este.

Razón de la queja: