Erros, bugs, perguntas - página 2964

 
Roman:

Substituir a estrutura por uma única variável ))

Não transferível.

 
fxsaber:

Não está a ser transferido.

Lembrou-se de importar a função no Expert Advisor?
Actualizei o exemplo para a estrutura, não estava lá muito errado.
Em geral, se trabalhar com uma estrutura, pense como declarar um objecto de estrutura, global ou localmente.
E para uma variável, tudo isto não é necessário, basta devolver a variável e nada mais.

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

Lembrou-se de importar a função para a EA?

Pode fornecer o código fonte do indicador e da EA para a sua ideia ou não?

 
fxsaber:

Pode fornecer o código fonte do indicador e da EA para a sua ideia ou não?

Sim, é estranho. A exportação para funções em mql4 não quer funcionar por alguma razão.
Não obtenho quaisquer resultados da biblioteca ou do indicador. No entanto, tenho visto funções em dependências.
Um exemplo para a 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);
}
//+------------------------------------------------------------------+

Um indicador que define um 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);
}
//+------------------------------------------------------------------+

Um consultor especializado que deve obter um valor através de uma função, mas que não 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:

Envio carraças do indicador através disto: sparam contém MqlTick, lparam - número de carraça.

O Conselheiro Especialista apanha estes carrapatos no OnChartEvent. E precisa de compreender se o tick actual é o mais real ou não? Isto é, há uma fila de carraças ou está vazia?

Para isso, lê o número (a tarefa é ler este número) do último tick enviado pelo indicador. Se a carraça tiver o mesmo número - a fila está vazia, e é possível começar a trabalhar com carraças.


E durante o funcionamento da OnTick, após o OrderSend é necessário verificar se o indicador enviou mais carraças. Para isso, precisamos novamente de ler o número do indicador. E pode haver mais de uma centena de tais verificações durante um OnTick. É por isso que precisamos de o ler rapidamente.

Se o consultor especializado está a levar as carraças através do CopyTicks, porque precisa ele de saber que a fila está vazia?

Deixem-no trabalhar em cada um dos eventos, e saltem os eventos, que têm menos tempo do que os já processados.

 
Andrey Khatimlianskii:

Se o meu consultor especializado ainda está a receber carraças através do CopyTicks, porque é que precisa de saber que a fila está vazia?

Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais

Insectos, insectos, perguntas

fxsaber, 2021.02.17 21:26

Por favor, partilhe as minhas ideias sobre este assunto(MT4):

O indicador tem de escrever um número algures. E a EA tem de o ler.

 
fxsaber:

algo como isto ajudaria?

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

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

algo como isto ajudaria?

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

Uma rápida opção WinAPI foi sugerida acima.

 
fxsaber:

Uma variante rápida do WinAPI foi sugerida acima.

esta opção é mais perigosa e difícil de implementar

 
Andrei Trukhanovich:

esta opção é mais perigosa e difícil de implementar

Aguardando por este.