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

 
fxsaber :

아니요, ex5 해시가 opt에 들어갑니다. 이러한 이유로 재컴파일은 테스터의 캐시를 재설정합니다.

그러면 개발자는 도움이 되지 않을 것입니다. 자신만의 코드 분석기 를 작성하십시오.

 
fxsaber :

아니요, ex5 해시가 opt에 들어갑니다. 이러한 이유로 재컴파일은 테스터의 캐시를 재설정합니다.

설마.

Expert Advisor를 다시 컴파일할 때마다 테스터의 캐시가 재설정되는 것은 아닙니다.

EA에 라이브러리, 사용자 지정 표시기 및/또는 dll과 같은 종속 구성 요소가 있는 경우 구성 요소 해시가 EA의 해시에 추가됩니다.

전문가 해시가 계산되는 방법, 전문가에 저장된 위치 - 이것은 기술 비밀 중 하나입니다.

그래서 나는 즉시 "아니요"라고 말했습니다.

 
fxsaber :

글쎄, 정말 :

  1. mql 파일을 uchar 배열로 구동
  2. 주석 제거 //... 및 /* ... */
  3. 모든 공백, 탭, 줄 바꿈 을 제거하고 모든 대괄호와 따옴표도 할 수 있습니다.
  4. 나머지에서 우리는 해시를 계산합니다

첫 번째 근사치에서는 이미 꽤 견딜 만하게 작동합니다.

물론 변수(함수)의 이름을 바꾸거나, 사용하지 않는 변수를 새로 추가하거나, 순서를 바꾸는 등의 일을 하면 논리는 변하지 않지만 해시는 변한다. 이러한 것들을 통제하는 것은 이미 엄청나게 어렵습니다. 자신의 링커를 작성하는 것과 같습니다.

 
Slava :

전문가 해시가 계산되는 방법, 전문가에 저장된 위치 - 이것은 기술 비밀 중 하나입니다.

그래서 나는 즉시 "아니요"라고 말했습니다.

사실은 MD5 해시를 제공하라는 요청이 없었습니다. 네이티브 코드의 모든 해시가 필요합니다. 예를 들어, 세 번째 바이트마다의 합계입니다.

이 금액이 다르면 큰 확률로 어드바이저(논리 - 네이티브 코드)가 변경됩니다.


저것들. 음, 아주 간단합니다! 현재 불행히도 그러한 메커니즘은 없습니다.

 
Nikolai Semko :

이러한 것들을 통제하는 것은 이미 엄청나게 어렵습니다. 자신의 링커를 작성하는 것과 같습니다.

그래서 간단한 해결책에 대해 이야기하기 시작했습니다.

 

그러나 이 주제에 대해 개발자가 할 말이 있습니까?

https://smart-lab.ru/blog/535490.php

Черный вторник для одного трейдера в Открытии
Черный вторник для одного трейдера в Открытии
  • smart-lab.ru
Привет коллегам по цеху. Поднимите пожалуйста пост в топ, если не затруднит. Случилась одна неожиданная история, как говорится прилетело откуда не ждал. Сегодня ночью на NLMK-9.19 некто, пожелавший остаться неизвестным (на данный момент), слил или перелил 420000 рублей по четырем маркет сделкам 100,35,20,10 контрактов на счете в Открытии...
 
fxsaber :

그래서 간단한 해결책에 대해 이야기하기 시작했습니다.

그렇다면 MQ에 대한 유능한 논거가 필요합니다.
무엇을 위한 것입니까? 이것은 어떻게 그리고 어떤 경우에 mql의 기능을 확장할 수 있습니까? 그리고 개인적인 변덕의 만족만이 아닙니다.
개인적으로 현재로서는 프로그램이 변경되었음을 알아야 하는 이유가 명확하지 않습니다. 어떤 작업에 유용할 수 있습니까? 이것이 무언가에 필요한 경우 "extra"를 제거한 후 mql 코드에서 해시를 얻는 옵션이 매우 적합합니다. 그리고 이것은 실제로 20줄 이상의 코드가 필요하지 않습니다.

또한 MQ가 회의에 참석하여 이러한 해시를 공개적으로 사용한다고 해도 이러한 해시를 변경한다고 해서 논리가 변경되었다는 보장은 없습니다. 예를 들어, 무언가의 순서를 변경할 때.

 

실수로 업데이트됨 - 다시 작동하지 않음 - 컴파일 오류:

 #define MACRO1
#define MACRO2(x, y)    y
#define MACRO3          MACRO2(&, MACRO1)
class A {};
void f( A* ) { Print ( 1 ); }
void f( A& ) { Print ( 2 ); }
void OnStart ()
{
        A a;
        f( MACRO3 a ); //Error: '&' - operand expected
}

그리고 (빌드 1961) 이전에는 모든 것이 괜찮았습니다.

 

그리고 여기도 - 지금(빌드 2025) 오류:

 #define MACRO1( x )
#define MACRO2          MACRO1( y ) void
#import "any.dll"
        MACRO2 f(); //Error: '(' - expressions are not allowed on a global scope
#import

그리고 이전(빌드 1961) - 괜찮았습니다.

 

pls가 문제를 해결하도록 도와주세요. 지금이 아닌 일반 문자를 전송하는 방법은 무엇입니까?