오류, 버그, 질문 - 페이지 2964

 
Roman :

구조체를 하나의 변수로 교체))

통과하지 못하고 있습니다.

 
fxsaber :

통과하지 못하고 있습니다.

Expert Advisor에서 기능을 가져오는 것을 잊으셨습니까?
나는 구조에 대한 예제를 업데이트했는데 거기에는별로 잘못된 것이 없었습니다.
일반적으로 구조체로 작업하는 경우 전역 또는 로컬로 구조체 개체를 선언하는 가장 좋은 방법을 생각하십시오.
그리고 한 변수의 경우 이 모든 것이 필요하지 않습니다. 변수를 반환하기만 하면 됩니다.

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

Expert Advisor에서 기능을 가져오는 것을 잊으셨습니까?

당신의 아이디어에 따라 지표와 조언자의 출처를 제공할 수 있습니까?

 
fxsaber :

당신의 아이디어에 따라 지표와 조언자의 출처를 제공할 수 있습니까?

예, 이상합니다. 어떤 이유로 mql4의 기능 내보내기 가 작동하지 않습니다.
라이브러리 또는 표시기에서 결과는 0입니다. 종속성에도 불구하고 기능은 표시됩니다.
라이브러리 예

 #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);
}
//+------------------------------------------------------------------+

설정 표시기

 #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);
}
//+------------------------------------------------------------------+

기능을 통해 값을 받아야 하는데 그렇지 않은 전문가

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

다음을 통해 표시기에서 틱을 보냅니다. sparam에는 MqlTick, lparam - 틱 번호가 포함되어 있습니다.

OnChartEvent 의 Expert Advisor는 이러한 틱을 포착합니다. 그리고 그는 지금 잡은 진드기가 가장 관련성이 있는지 여부를 이해해야합니까? 저것들. 틱 대기열이 있거나 비어 있습니까?

이를 위해 지표에서 보낸 가장 최근 틱의 번호(작업은 이 번호를 읽는 것)를 읽습니다. 잡힌 틱의 번호가 같으면 대기열이 비어 있고 여러 틱이 작동할 수 있습니다.


음, OnTick 작업 과정에서 브레이크 OrderSend 후 표시기가 더 많은 틱을 보내지 않았는지 확인해야 합니다. 이렇게하려면 표시기에서 숫자를 다시 읽어야합니다. 그리고 하나의 OnTick 실행에 대해 수백 개의 이러한 검사가 있을 수 있습니다. 그렇기 때문에 빨리 읽어야 합니다.

EA가 여전히 CopyTicks를 통해 틱을 사용하는 경우 대기열이 비어 있음을 알아야 하는 이유는 무엇입니까?

각 이벤트에 대해 작동하도록 하고 이미 처리된 것보다 시간이 짧은 이벤트는 건너뜁니다.

 
Andrey Khatimlianskii :

EA가 여전히 CopyTicks 를 통해 틱을 사용하는 경우 대기열이 비어 있음을 알아야 하는 이유는 무엇입니까?

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

fxsaber , 2021.02.17 21:26

과제( MT4 )에 대한 생각을 공유해 주세요.

표시기는 어딘가에 int 숫자를 써야 합니다. 그리고 그것을 읽는 고문.

 
fxsaber :

아마도 이런 것이 도움이 될까요?

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

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

아마도 이런 것이 도움이 될까요?

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

스마트 WinAPI 옵션 이 위에서 제안되었습니다 .

 
fxsaber :

스마트 WinAPI 옵션 이 위에서 제안되었습니다 .

이 옵션은 더 위험하고 구현하기 어렵습니다.

 
Andrei Trukhanovich :

이 옵션은 더 위험하고 구현하기 어렵습니다.

이것 을 기대 합니다 .