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

 

막대의 시간 좌표에 NOT LABEL 개체의 시각적 고정을 제거하는 방법은 무엇입니까?

객체의 시간 좌표를 초 단위의 정확도로 설정했는데, 시간 단위의 정확도로 설정된 것처럼 시각화됩니다.

질문을 파헤쳤다

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

오류, 버그, 질문

앤드류 페트라스 , 2014.11.26 13:34

삼각형, 타원, 직사각형, 앵커 포인트 유형의 개체를 이동할 때 불균형하게 "떠있게"됩니다.

이 설정은 영향을 미치지 않습니다


내가 만들다


나는 끌고있다


직사각형은 두 번째 점, 삼각형 및 타원 - 세 번째 점을 "떠나게"합니다.

어떻게 해결할 수 있습니까? 정확한 측정이 필요합니다.

"정확한 시간 척도"를 선택하면 언급된 바인딩이 사라지고 모든 것이 원래대로 표시됩니다. 그러나 MQL5에서 이 매개변수를 활성화/비활성화하는 방법을 찾지 못했습니다. 제공되지 않습니까?

 

정말 도움이 필요해요! 몇 시간 동안 나는 이상한 행동의 원인을 찾으려고 노력했습니다. 결과적으로 전혀 예상치 못한 결과 로 고문을 썼습니다

#define TOSTRING(A) #A + " = " + ( string )A + "\n"

string TimeToString ( const ulong Time )
{
   return ( TimeToString ( Time / 1000 , TIME_DATE | TIME_SECONDS ) + "." + :: IntegerToString ( Time % 1000 , 3 , '0' ));
}

void OnTick ()
{
   static MqlTick PrevTick = { 0 };
  
   MqlTick NowTick;
  
   if ( SymbolInfoTick ( _Symbol , NowTick) && (PrevTick.time_msc > NowTick.time_msc))
     Alert (TOSTRING( TimeToString (PrevTick.time_msc)) + TOSTRING( TimeToString (NowTick.time_msc)));
    
  PrevTick = NowTick;  
}

결과(상향식)

2016.10 . 31 11 : 55 : 51.031 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 10.698
2016.10 . 31 11 : 55 : 51.031 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 10.702
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 10.654
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 10.656
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 05.458
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 05.464
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 56 : 05.474
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 56 : 05.476

SymbolInfoTick은 때때로 이전 것보다 시간이 짧은 틱을 반환합니다(기다려야 함)!

이게 무슨 개소리야?! 구성

Network 'xxx': authorized on BCS-MetaTrader5 through Access Server #2 (ping: 112.19 ms)
Terminal        C:\Program Files\BCS Broker MetaTrader 5 Terminal
Terminal        Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700K  @ 3.50GHz, RAM: 11327 / 16301 Mb, HDD: 4346 / 30000 Mb, GMT+02:00
Terminal        MetaTrader 5 x64 build 1455 started (MetaQuotes Software Corp.)
 
fxsaber :

정말 도움이 필요해요! 몇 시간 동안 나는 이상한 행동의 원인을 찾으려고 노력했습니다. 결과적으로 전혀 예상치 못한 결과 로 고문을 썼습니다

#define TOSTRING(A) #A + " = " + ( string )A + "\n"

string TimeToString ( const ulong Time )
{
   return ( TimeToString ( Time / 1000 , TIME_DATE | TIME_SECONDS ) + "." + :: IntegerToString ( Time % 1000 , 3 , '0' ));
}

void OnTick ()
{
   static MqlTick PrevTick = { 0 };
  
   MqlTick NowTick;
  
   if ( SymbolInfoTick ( _Symbol , NowTick) && (PrevTick.time_msc > NowTick.time_msc))
     Alert (TOSTRING( TimeToString (PrevTick.time_msc)) + TOSTRING( TimeToString (NowTick.time_msc)));
    
  PrevTick = NowTick;  
}

결과(상향식)

2016.10 . 31 11 : 55 : 51.031 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 10.698
2016.10 . 31 11 : 55 : 51.031 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 10.702
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 10.654
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 10.656
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 05.458
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 05.464
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 56 : 05.474
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 56 : 05.476

SymbolInfoTick은 때때로 이전 것보다 시간이 짧은 틱을 반환합니다(기다려야 함)!

이게 무슨 개소리야?! 구성

Network 'xxx': authorized on BCS-MetaTrader5 through Access Server #2 (ping: 112.19 ms)
Terminal        C:\Program Files\BCS Broker MetaTrader 5 Terminal
Terminal        Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700K  @ 3.50GHz, RAM: 11327 / 16301 Mb, HDD: 4346 / 30000 Mb, GMT+02:00
Terminal        MetaTrader 5 x64 build 1455 started (MetaQuotes Software Corp.)
예, 여기에서 도움이 필요한 유일한 사람은 아닙니다. 몇 주 동안 나는 티키를 양초로 만들려고 노력했습니다. 그래서 ... 틱은 여전히 축축합니다. SD #1598238 의 애플리케이션
 

마법의 끈

#include "key.mqh"
virtual int f( const ABCDEFGHIJK ) const { return ABCDEFGHIJK; }

작업 순서(엄격)

  1. 첨부 파일을 한 폴더에 넣습니다. 다음은 MetaEditor에서 마우스로
  2. 파일->열기->Test.mqh 선택->열기 버튼
  3. 아래와 같이 편집->찾기 및 바꾸기->바꾸기->찾기: 및 '바꾸기:' 필드 채우기->모두 바꾸기 버튼

결과:

여기에서 설정: https://www.mql5.com/en/forum/1111/page1127#comment_795376

파일:
Test.mqh  1 kb
key.mqh  1 kb
 
Alexey Kozitsyn :
예, 여기에서 도움이 필요한 유일한 사람은 아닙니다. 몇 주 동안 나는 티키를 양초로 만들려고 노력했습니다. 그래서 ... 틱은 여전히 축축합니다. SD #1598238 의 애플리케이션
Tiki는 일반적으로 양초로 굴립니다.
 
fxsaber :
Tiki는 일반적으로 양초로 굴립니다.
진지하게? 그리고 사이즈는 같은가요? 그리고 통제했습니까? 로그도 보여주실 수 있나요?
 
Alexey Kozitsyn :
진지하게? 그리고 사이즈는 같은가요? 그리고 통제했습니까? 로그도 보여주실 수 있나요?

통제 - 코드 베이스를 보십시오. 나는 양초의 양과 계산된 양 사이의 불일치에 대해 신경 쓰지 않습니다. 왜냐하면 왜냐하면. 여기에서 우리는 한 막대 또는 다른 막대를 칠 수 있는 경계 눈금에 대해 이야기하고 있습니다. 그리고 그것은 중요하지 않습니다. 나는 또한 포럼에 거래량 지표를 게시했습니다. 문제 없습니다.

귀하의 경우 매우 지루한 경우 바 생성 메커니즘에서 결함을 찾을 수 있지만 CopyTicks에서는 결함을 찾을 수 없습니다.

 

컴파일 중 오류

class A {
protected :
         void f(   int ) {} //(*)
};
class B : public A {
public :
         void f( uint ) {}
};
void OnStart ()
{
        B b;
        b.f( 1 ); //'A::f' - cannot call protected member function
}

그리고 줄(*)을 제거하면 모든 것이 정상입니다. 왜 B::f(uint)가 당신에게 어울리지 않습니까?. 반대편에서 상황을 보면

class A {
public :
         void f(   int ) {} //(**)
};
class B : public A {
public :
         void f( uint ) {}
};

그러면 적절한 기능을 찾기 위한 MQL 알고리즘의 근본적인 단점이 나타납니다. 두 번째 예에서는 아직 문자열(**)이 없습니다. B::f(uint)가 호출됩니다. 문자열(**)이 나타나자마자 A::f(int)가 호출됩니다. 따라서 기본 클래스의 변경 사항은 최종 결과에 영향을 줍니다. 반면 C++에서는 기본 클래스의 변경 사항에 관계없이 B::f(uint)가 항상 호출되어 최종 결과의 안정성을 보장합니다.

MQL에서 클래스 A의 개발자가 새로운 public\protected\private 기능을 생각해 냈고 이 때문에 클래스 B의 사용자가 코드 컴파일을 중단하고 더 중요하게는 최종 결과가 변경되었습니다.

 
A100 :

마법의 끈

#include "key.mqh"
virtual int f( const ABCDEFGHIJK ) const { return ABCDEFGHIJK; }

작업 순서(엄격)

  1. 첨부 파일을 한 폴더에 넣습니다. 다음은 MetaEditor에서 마우스로
  2. 파일->열기->Test.mqh 선택->열기 버튼
  3. 아래와 같이 편집->찾기 및 바꾸기->바꾸기->찾기: 및 '바꾸기:' 필드 채우기->모두 바꾸기 버튼

결과:

여기에서 설정: https://www.mql5.com/en/forum/1111/page1127#comment_795376

메시지 감사합니다. 버그는 다음 업데이트에서 수정될 것입니다.
 
A100 :

컴파일 중 오류

class A {
protected :
         void f(   int ) {} //(*)
};
class B : public A {
public :
         void f( uint ) {}
};
void OnStart ()
{
        B b;
        b.f( 1 ); //'A::f' - cannot call protected member function
}

그리고 줄(*)을 제거하면 모든 것이 정상입니다. 왜 B::f(uint)가 당신에게 어울리지 않습니까?. 반대편에서 상황을 보면

class A {
public :
         void f(   int ) {} //(**)
};
class B : public A {
public :
         void f( uint ) {}
};

그러면 적절한 기능을 찾기 위한 MQL 알고리즘의 근본적인 단점이 나타납니다. 두 번째 예에서는 아직 문자열(**)이 없습니다. B::f(uint)가 호출됩니다. 문자열(**)이 나타나자마자 A::f(int)가 호출됩니다. 따라서 기본 클래스의 변경 사항은 최종 결과에 영향을 줍니다. 반면 C++에서는 기본 클래스의 변경 사항에 관계없이 B::f(uint)가 항상 호출되어 최종 결과의 안정성을 보장합니다.

MQL에서 클래스 A의 개발자가 새로운 public\protected\private 기능을 생각해 냈고 이 때문에 클래스 B의 사용자가 코드 컴파일을 중단하고 더 중요하게는 최종 결과가 변경되었습니다.

bf(1) 호출에서 상수 "1"이 int로 해석된다는 것뿐입니다. 명시적 캐스트를 수행하면 다음과 같이 작동합니다.

b.f( ( uint ) 1 );