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

 
//Test.mqh
class A {
public :
         virtual int f() { return ( 1 ); }
};
 //TestLib.mq5
#property library
#include "Test.mqh"
int g( A* pA ) export { return ( 5 ); }

//Test.mq5
#include "Test.mqh"
#import "TestLib.ex5"
         int g( A* pA );
#import
void OnStart ()
{
        A* pA = new A();
         Print ( g( pA ));
         delete ( pA );
}
지금까지는 모든 것이 정상이지만 예를 들어 Test.mq5에 삽입할 가치가 있습니다.
 class B : public A {
};
런타임 오류 가 발생하는 즉시 - g는 TestLib.ex5에서 찾을 수 없습니다.
 
Silent :

datetime이 이미 있습니다.

ArraySize - 막대 수, ArraySize-1 - 마지막 막대, ArraySetAsSeries는 인덱싱 방향을 설정하고 셀 번호는 막대, 왼쪽 또는 오른쪽입니다.

여기 에 테스트 스크립트가 조각되어 있습니다.

고맙습니다! 나는 노력할 것이다
 

안녕하세요!

TimeCurrent는 MarketWatch에서 마지막 틱의 시간을 반환하도록 지정됩니다. 나는 그것을 사용하려고 시도하지만 마지막 눈금이 22:59:57이지만 20:30을 반환합니다.

왜 이런 일이 일어날 수 있습니까?

고맙습니다!

 
ns_k :

안녕하세요!

TimeCurrent는 MarketWatch에서 마지막 틱의 시간을 반환하도록 지정됩니다. 나는 그것을 사용하려고 시도하지만 마지막 눈금이 22:59:57이지만 20:30을 반환합니다.

왜 이런 일이 일어날 수 있습니까?

고맙습니다!

도움말에서:

OnTick() 핸들러 에서 이 함수는 들어오는 처리된 틱의 시간을 반환합니다 . 다른 경우(예: OnInit(), OnDeinit(), OnTimer() 등처리기 호출) 는 "시장 조사" 창에서 사용할 수 있는 모든 기호에 대한 마지막 견적 도착 시간입니다. 이 창의 제목에 표시됩니다.

 
Lizar :

도움말에서:

고맙습니다!

반면 onCalculate에서 마지막 견적의 도착 시간을 얻는 방법은 무엇입니까?

 
ns_k :

고맙습니다!

반면 onCalculate에서 마지막 견적의 도착 시간을 얻는 방법은 무엇입니까?

타임핑크 플로이드를 듣고 알게 되었어요 :)

 if ( SymbolInfoTick ( Symbol (),last_tick))

     {

       Print (last_tick.time, ": Bid = " ,last_tick.bid,

             " Ask = " ,last_tick.ask, "  Volume = " ,last_tick.volume);

     }

   else Print ( "SymbolInfoTick() failed, error = " , GetLastError ());

   lEnd=last_tick.time; 
 

안녕하세요!

ArrayResize가 클래스/구조체 의 정적 멤버에 대한 전역 초기화 단계에서 작동하지 않는 것 같습니다.

구조체 테스트{
정적 문자열 arr[];
시험() {
배열 크기 조정(arr,5) ;
if (ArraySize(arr)!=5) Alert("버그가 있습니다.");
}
};
테스트 테스트;

 

다음과 같은 문제가 있는 사람이 있습니까?

터미널의 버전 및 비트 수

Windows 8, MetaTrader 5 - Alpari UK, 빌드 821, 64비트.

문제에 대한 설명

H1에서 실행 중인 표시기는 M1에서 실행 중인 표시기를 호출합니다. CopyBuffer 명령은 잘못된 데이터를 복사합니다. 이 문제는 전략 테스터에서만 재현됩니다. 터미널에서는 모든 데이터가 오류 없이 복사됩니다. 표시자 M1은 첫 번째 버퍼에 하이를 복사합니다.

시퀀싱

전략 테스터에서 H1 에서 SampleCopyBuffer 표시기를 테스트 하도록 선택합니다. 기간은 2013-05-01 ~ 2013-07-07로 설정했습니다. 시작을 누르고 로그의 오류 메시지를 읽습니다.

결과

로그에서 오류 메시지를 읽습니다. M1이 있는 표시기 버퍼의 값이 CopyHigh의 값과 일치하지 않습니다.

예상 결과

CopyBuffer와 CopyHigh 값은 같아야 합니다.

추가 정보

터미널을 실행하면 오류가 없습니다. 전략 테스터에서만. 부록의 내 지표를 참조하십시오. SampleHighs는 M1 기간에서 작동하며 H1에서 작동하는 SampleCopyBuffer 표시기에서 호출됩니다.
파일:
 
denmax :

안녕하세요!

ArrayResize가 클래스/구조체 의 정적 멤버에 대한 전역 초기화 단계에서 작동하지 않는 것 같습니다.

구조체 테스트{
정적 문자열 arr[];
시험() {
배열 크기 조정(arr,5) ;
if (ArraySize(arr)!=5) Alert("버그가 있습니다.");
}
};
테스트 테스트;

메시지를 보내주셔서 감사합니다. 수정하겠습니다. 코드에서 정적 문자열 arr[]가 없다는 오류가 발생합니다. 코드가 올바르게 작동하려면 Test 클래스의 테스트 인스턴스 앞에 정적 변수를 "배치"해야 합니다.

 struct Test{
   static string arr[];
   Test() {
       ArrayResize (arr, 5 ) ;
       if ( ArraySize (arr)!= 5 ) Alert ( "We have a bug" ); 
    } 
};

string Test::arr[];

Test test; 
 

안녕하세요!

내 자신의 프로덕션의 사용자 지정 표시기의 일부 특성을 분석해야 하는 스크립트를 작성 중입니다. :)

도움말에 IndicatorCreate 를 사용하라고 나와 있습니다.

표시기 핸들을 가져옵니다. 실제로 스크립트가 실행되는 차트에서 지표를 찾았을 때 지표를 다시 생성해야 한다는 다소 이상하게 보이는 점을 제외하고는 거의 모든 것이 명확합니다. 어떻게 든 스크립트에서 이미 계산된 지표 값을 얻을 수 있습니까?

고맙습니다!