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

 
A100 :
제가 제안한 내용은 다음과 같습니다.
...
변경 사항은 == 및 != 작업에만 영향을 줍니다.
작업을 포함한 기타 모든 항목 = 현재 상태로 유지(변경 사항 없음)

= 연산자가 포인터와 객체 자체 사이에 혼란을 야기한다면 어떻게 변경하지 않고 그대로 둘 수 있습니까? 이를 위해 *를 사용하면 다른 모든 연산자에도 사용해야 합니다. 하나의 기준이 있어야 합니다. 그리고 컴파일러가 올바른 옵션 자체를 선택한다고 제안한다는 사실은 잘못된 것입니다. 미묘한 오류가 많이 있을 것입니다. 모든 것이 모호하지 않아야 합니다. 객체 또는 포인터를 사용한 작업입니다.

그러나이 모든 별은 물론 강제 목발입니다. 초기에 개발자들이 잘 선택하지 않은 개념을 전체적으로 바꿔야 한다고 생각합니다.

C++에 대한 바인딩에서 벗어나 포인터를 독립 변수 유형으로 포기하고 참조로 대체해야 했습니다. 참조는 본질적으로 동일한 포인터이며 컴파일러에 의해 객체 자체로 해석됩니다. 따라서 연산자를 포함하여 이러한 변수가 있는 모든 작업은 개체가 있는 작업으로 처리됩니다. 참조를 정확히 비교하거나 할당해야 하는 경우 참조 사용 연산자를 사용하십시오. 따라서 모순이 없을 것입니다. 이와 같이:

 A  a;                     // воздаём объект
 A& aref;                   // создаём неинициализированную ссылку

 &aref = &a;                 // присваиваем ссылку на a
 bool equalref = &aref==&a; // сравниваем ссылки

 aref = a;                   //вызываем оператор=()
 bool equal = aref==a;       // вызываем оператор==()

일반적으로 언젠가 개발자가 MQL6을 생각한다면 우리는 이 방향으로 가야 합니다. C ++에 바인딩하는 것은 언어의 개념에 해당하지 않기 때문에 이미 의미가 없습니다.

 
A100 :
가장 최근에 업데이트한 내용은 무엇입니까?

MetaTrader와 MetaEditor 모두 빌드 1159(Windows 10 32비트)입니다. 대형 PC(64비트)에서는 MetaEditor가 확실하지 않지만 MetaTrader는 확실히 빌드 1159입니다.
 
A100 :
가장 최근에 업데이트한 내용은 무엇입니까?

나는 1150을 가지고 있습니다. 나중의 1159에 대한 업데이트를 볼 수 없습니다
 
Gennadiy Stanilevych :
나는 1150을 가지고 있습니다. 나중의 1159에 대한 업데이트를 볼 수 없습니다
최신 업데이트를 받으려면 MetaQuotes-Demo 서버에 연결해야 합니다.
 
A100 :
관심 있는 것은 MetaQuotes-Demo입니다. 이전 업데이트가 한 달에 2-3회였기 때문입니다. 브로커의 업데이트가 훨씬 덜 빈번하다는 것은 분명합니다.
블라디미르 카르푸토프 :
최신 업데이트를 받으려면 MetaQuotes-Demo 서버에 연결해야 합니다.

동의합니다. MetaQuotes-Demo를 통해 업데이트되었지만 여전히 1150입니다! 또한, 터미널은 업데이트가 다운로드되어 재부팅을 제안했지만 여전히 1150이라고 여러 번 보고했습니다.

자, http://www.metatrader5.com/ru/download에서 배포 패키지를 다운로드하고 MetaQuotes-Demo에서 데모 계정을 열고 터미널을 여러 번 껐다가 켰습니다 - 1150! UAC 비활성화, Windows 7 SP1 - 64

Скачать MetaTrader 5
Скачать MetaTrader 5
  • www.metatrader5.com
Скачать торговый терминал MetaTrader 5 для комфортной и успешной работы на финансовых рынках. Терминал обладает внушительными торговыми и аналитическими возможностями и является одним из лучших в мире
 

질문을 반복하겠습니다. 왜냐하면 아무도 대답하지 않았고 PLO에 대한 열띤 토론과 관련하여 아래층으로 내려갔습니다. 질문은 정말 중요합니다. 버그입니까 아니면 기능입니까? MT4에서 본.

프로그램 실행 중에 extern 변수가 바뀌는 상황을 만났는데, 타임프레임이 바뀌면 다시 속성 창에서 설정한 값을 받습니다. 예를 들어 실행 전에 TradeEnable 값을 EnableAll로 설정하고 프로그램이 실행될 때 값을 EnableBuy로 변경하면 차트를 다른 시간 프레임으로 클릭하면 값이 EnableAll로 돌아갑니다. 나는 타이머 이벤트에서 값을 정의하고 주석을 통해 표시합니다. 오류가 있을 수 없습니다.

 enum ETradeEnable {EnableAll, EnableBuy, EnableSell, DisableAll};
extern ETradeEnable TradeEnable = EnableAll;

차트 사이를 뒤집는 것은 TradeEnable 변수에 어떤 식으로든 영향을 미치지 않습니다. 도움말을 읽고 있습니다 - 입력 변수와 달리 extern 변수의 값은 프로그램 작동 중에 프로그래밍 방식으로 변경할 수 있습니다.

이것이 내가 OnDeinit와 OnInit를 가지고 있는 방법입니다.

Q: 이해가 안되는 부분이 있습니다 또는 TradeEnable을 변경하는 것이 런타임 오류입니까?

 int LastDeinitReason = 0 ;

void OnDeinit ( const int reason)
{
    LastDeinitReason = reason;
     if (reason== REASON_CHARTCHANGE || reason== REASON_TEMPLATE || reason== REASON_PARAMETERS )
         return ;
     EventKillTimer ();
// далее код при завершении работы советника
}

int OnInit ()
{
     if (LastDeinitReason== REASON_CHARTCHANGE || LastDeinitReason== REASON_TEMPLATE )
    {
        LastDeinitReason = 0 ;
         return ( INIT_SUCCEEDED );
    }
     if (LastDeinitReason== REASON_PARAMETERS )
    {
        SetParams();
         return ( INIT_SUCCEEDED );                              
    }
// далее код инициализации при запуске
}
 
Karputov Vladimir :
최신 업데이트를 받으려면 MetaQuotes-Demo 서버에 연결해야 합니다.
도움이 되지 않습니다. MT5도 부숴버렸습니다. 메타 인용에 대한 데모를 열었습니다. 그래도 1150.
 
Gennadiy Stanilevych :
도움이 되지 않습니다. MT5도 부숴버렸습니다. 메타 인용에 대한 데모를 열었습니다. 그래도 1150.
MetaQuites-Demo 서버에서 데모 계정을 여는 것만으로는 충분하지 않습니다. 업데이트하려면 이 데모 계정에도 연결해야 합니다.
 
Karputov Vladimir :
MetaQuites-Demo 서버에서 데모 계정을 여는 것만으로는 충분하지 않습니다. 업데이트하려면 이 데모 계정에도 연결해야 합니다.

아, 물론 저도 합류했습니다. 그런 다음 터미널을 다시 시작했습니다. 여전히 업데이트가 표시되지 않습니다.

파일:
20150826.log  7 kb
 
Gennadiy Stanilevych :

아, 물론 저도 합류했습니다. 그런 다음 터미널을 다시 시작했습니다. 여전히 업데이트가 표시되지 않습니다.

이상합니다(로그 파일 살펴보기). 경험상 - 업데이트가 있는 경우 연결 후 문자 그대로 3초 이내에 다운로드가 시작됩니다.