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

 

개발자에게 호소합니다. 특정 상황에서 copy_rates_from_pos 를 통해 데이터를 가져올 때 Python 스크립트가 중단됩니다.

상황을 설명하겠습니다. 브로커는 약 4,000개의 상품을 보유하고 있습니다.
특정 규칙에 따라 분류하고 필터링하여 악기를 주로 선택합니다.

터미널에 상품 중 하나에 대한 빈 기록이 있습니다(즉, 시장 시계와 기호 목록에 상품이 있지만 데이터가 비어 있음).

스크립트를 실행하려고 할 때: Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 1 , analysis_days),
스크립트가 그냥 멈춥니다. 오류 자체가 발생하지 않기 때문에 "시도"하거나 없음을 확인하는 것은 도움이 되지 않습니다. 모든 것이 이 줄에 멈춥니다.

다음을 실행하려고 하면 Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 0 , analysis_days),
즉, 초기 막대의 번호를 0부터 지정하면 중단되지 않고 빈 테이블이 반환됩니다.

덧셈. 또한 copy_rates_from_pos를 통해 FIRST TIME에 대한 데이터를 수신할 때 비슷한 문제를 발견했는데 요청한 막대의 수가 기록에 있는 것보다 많습니다. 또한 스크립트가 멈춥니다. 두 번째 호출에서는 이러한 오류가 없습니다. 따라서 실수를 반복하는 것은 어려울 수 있습니다(악기의 이력을 완전히 삭제해야만 가능합니다).

내가 뭔가 잘못했거나 뭔가를 고려하지 않았을 수도 있지만 함수는 데이터나 오류를 반환해야 하기 때문에 버그처럼 보입니다.

 
Alexander Mikheev :

개발자 여러분, 제가 잘못했거나 고려하지 않은 부분이 있으면 수정해 주세요.

누군가가 시간을 내어 데이터의 소스 코드를 작성하고 다양한 거래 서버에서 확인하기를 원하십니까?

그것은 일어나지 않을 것입니다. 다른 사람의 시간을 존중하십시오: 소스, 서버, 기계 구성 등 문제를 재현하기 위한 데이터를 완전히 제공하십시오.


소스 코드는 거기에 작성된 내용을 분석하는 데 시간을 낭비하지 않도록 간결하고 주석이 있습니다. 받고 싶었던 것과 얻은 것을 말하십시오.

 
fxsaber :

암호로 보호된 ZIP 아카이브.

MQL에서 비밀번호로 보호된 아카이브가 지원됩니까?

 
Stanislav Korotky :

MQL에서 비밀번호로 보호된 아카이브가 지원됩니까?

모르겠어.

 
suncrypto :

개발자에게 호소합니다. 특정 상황에서 copy_rates_from_pos를 통해 데이터를 가져올 때 Python 스크립트가 중단됩니다.

상황을 설명하겠습니다. 브로커는 약 4,000개의 상품을 보유하고 있습니다.
특정 규칙에 따라 분류하고 필터링하여 악기를 주로 선택합니다.

터미널에 상품 중 하나에 대한 빈 기록이 있습니다(즉, 시장 시계와 기호 목록에 상품이 있지만 데이터가 비어 있음).

스크립트를 실행하려고 할 때: Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 1 , analysis_days),
스크립트가 그냥 멈춥니다. 오류 자체가 발생하지 않기 때문에 "시도"하거나 없음을 확인하는 것은 도움이 되지 않습니다. 모든 것이 이 줄에 멈춥니다.

다음을 실행하려고 하면 Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 0 , analysis_days),
즉, 초기 막대의 번호를 0부터 지정하면 중단되지 않고 빈 테이블이 반환됩니다.

덧셈. 또한 copy_rates_from_pos를 통해 FIRST TIME에 대한 데이터를 수신할 때 비슷한 문제를 발견했는데 요청한 막대의 수가 기록에 있는 것보다 많습니다. 또한 스크립트가 멈춥니다. 두 번째 호출에서는 이러한 오류가 없습니다. 따라서 실수를 반복하는 것은 어려울 수 있습니다(악기의 이력을 완전히 삭제해야만 가능합니다).

내가 뭔가 잘못했거나 뭔가를 고려하지 않았을 수도 있지만 함수는 데이터나 오류를 반환해야 하기 때문에 버그처럼 보입니다.

재생산, 수정됨.

 
TesterHideIndicators 가 작동을 멈췄습니다(거짓).
 
suncrypto :

개발자에게 호소합니다. 특정 상황에서 copy_rates_from_pos를 통해 데이터를 가져올 때 Python 스크립트가 중단됩니다.

상황을 설명하겠습니다. 브로커는 약 4,000개의 상품을 보유하고 있습니다.
특정 규칙에 따라 분류하고 필터링하여 악기를 주로 선택합니다.

터미널에 상품 중 하나에 대한 빈 기록이 있습니다(즉, 시장 시계와 기호 목록에 상품이 있지만 데이터가 비어 있음).

스크립트를 실행하려고 할 때: Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 1 , analysis_days),
스크립트가 그냥 멈춥니다. 오류 자체가 발생하지 않기 때문에 "시도"하거나 없음을 확인하는 것은 도움이 되지 않습니다. 모든 것이 이 줄에 멈춥니다.

다음을 실행하려고 하면 Rates_d1 = mt5.copy_rates_from_pos(curSymbol.name, mt5.TIMEFRAME_D1, 0 , analysis_days),
즉, 초기 막대의 번호를 0부터 지정하면 중단되지 않고 빈 테이블이 반환됩니다.

덧셈. 또한 copy_rates_from_pos를 통해 FIRST TIME에 대한 데이터를 수신할 때 비슷한 문제를 발견했는데 요청한 막대의 수가 기록에 있는 것보다 많습니다. 또한 스크립트가 멈춥니다. 두 번째 호출에서는 이러한 오류가 없습니다. 따라서 실수를 반복하는 것은 어려울 수 있습니다(악기의 이력을 완전히 삭제해야만 가능합니다).

내가 뭔가 잘못했거나 뭔가를 고려하지 않았을 수도 있지만 함수는 데이터나 오류를 반환해야 하기 때문에 버그처럼 보입니다.

수정됨, 다음 베타 버전에 있음
 
Aleksey Vyazmikin :
작동 중지 TesterHideIndicators(false);

TesterHideIndicator는 이후에 생성된 표시기에 대해 테스터의 가시성 플래그 를 설정합니다.

이전에 생성된 표시기 의 가시성 플래그 를 변경하지 않습니다.

다음 전문가가 확인할 수 있습니다.

 //+------------------------------------------------------------------+
//|                                     TestTesterHideIndicators.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

int ExtHandleMacd;
int ExtHandleEma;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   TesterHideIndicators ( true );
   ExtHandleMacd= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE );
   TesterHideIndicators ( false );
   ExtHandleEma= iMA ( NULL , 0 , 21 , 0 , MODE_EMA , PRICE_CLOSE );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
  }
//+------------------------------------------------------------------+

Visualizer 및 단순 테스트 후 열린 차트 에서는 MACD 표시기 가 보이지 않고 이동 평균이 보입니다.

즉, 의도한 대로 작동합니다.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSetInteger()/ObjectGetInteger...
 
DMITRII PECHERITSA :
버그 - 포인터의 일관성 없는 작동(5.00, 2650)

컴파일 오류 . 누가 생각이 있습니까?



역참조 연산자를 명시적으로 사용

 //+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   C201022_090654 c_1( * new C201022_090641); //works
   C201022_090654 c_3( * new C201022_092325( 1 )); //works
//---'new' - parameter passed as reference, variable expected
   C201022_090654 c_2( * new C201022_090641( 1 )); //not works
                      ^
  }
 

A100 :
Ошибка при компиляции:

 typedef void (*fn)();
void f() {}
fn g() { return f; }
oid OnStart ()
{
        g()(); // Error: ')' - expression expected
}

나는 이것을 전에 연구했고 여기에 내가 찾은 것이 있습니다.

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

오류, 버그, 질문

Sergey Dzyublik , 2020.04.04 21:46

함수 포인터 배열이 사용될 때 포인터를 통해 함수를 호출할 때 MT5 버그(빌드 2375) 컴파일 오류 :

 #define PRINT(x) ; Print ( #x, ":" , string (x))

void test(){
   PRINT( __FUNCSIG__ );
}

template < typename T>
void call(T f_ptr){
   f_ptr();
}


template < typename T>
class A{
public :
   T arr_1[ 1 ];
   
   typedef void (*ff)();
   ff arr_2[ 1 ];  
   
   
   T test_1(){
       return arr_1[ 0 ];
   } 
   
   ff test_2(){
       return arr_2[ 0 ];
   } 
   
   T operator []( int index){
       return arr_1[index];
   }
};

void OnStart (){
   typedef void (*ff)();
   ff arr[ 1 ];
   arr[ 0 ] = test;   
   
   ff f_ptr = arr[ 0 ];
   f_ptr();             //Ok
   call(arr[ 0 ]);         //Ok
   arr[ 0 ]();             //Compile Error: ')' - expression expected    
   
   
   A<ff> a;             
   a.arr_1[ 0 ] = test;
   a.arr_2[ 0 ] = test;
   
   
   a.arr_1[ 0 ]();         //Compile Error: ')' - expression expected    
   a.arr_2[ 0 ]();         //Compile Error: ')' - expression expected    
   
   a.test_1()();         //Compile Error: ')' - expression expected    
   a.test_2()();         //Compile Error: ')' - expression expected    
   
   a[ 0 ]();               //Ok ???
}