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

 
barabashkakvn :

MetaQuotes-Demo 서버에 연결할 때 업데이트 검색이 트리거됩니다. 다음과 같은 경우에 가능합니다.

  1. 일부 거래 계정에서 MetaQuotes-Demo에서 개설한 거래 계정으로 전환
  2. 터미널을 다시 시작할 때.
고맙습니다.
 
joo :

:영형

아니요. 오류가 더 이상 나타나지 않습니다.

슈뢰딩거는 똥이 있는 새끼 고양이를 찾아 방을 돌아다녔고 그는 살아도 죽지도 않은 상자 안에 앉아 있었습니다. )))

 
tol64 :

슈뢰딩거는 똥이 있는 새끼 고양이를 찾아 방을 돌아다녔고 그는 살아도 죽지도 않은 상자 안에 앉아 있었습니다. )))

정말 이상합니다. 다음 번에 작동을 멈추는 것은 무엇입니까?
 
joo :
정말 이상합니다. 다음 번에 작동을 멈추는 것은 무엇입니까?
알려지지 않은. 확인해야 할 것입니다. )
 
joo :

정렬된 인쇄 - 오류가 사라졌습니다...

양자역학에서 관찰자 효과란..

NaN을 표현식에 넣었을 때만 상황을 재현했습니다.
 
Renat :
NaN을 표현식에 넣었을 때만 상황을 재현했습니다.

그래서 팹이 제대로 작동합니까?

 
joo :

그래서 팹이 제대로 작동합니까?

바르게.
 

안녕하세요! 제 생각에는 간단한 계획을 구현하는 데 도움을 요청합니다.

하나의 악기에서 잘 작동하는 조언자가 있습니다. 여러 악기에서 동시에 작동하도록 "마무리"하고 싶습니다. 이렇게 하려면 여러 다른 기호에 연결된 EA의 모든 인스턴스에서 멤버에 액세스할 수 있는 데이터 배열을 올바르게 생성해야 합니다. 저것들. 단 하나의 데이터 배열이 있고 여러 개의 전문가 고문 인스턴스가 있습니다. 각 EA 인스턴스는 배열 구성원을 읽고 수정할 수 있습니다.

내가 알기로는 정적 멤버(정적)가 있는 배열을 만들어야 합니다.

가장 간단한 예는 Expert Advisors가 첨부된 모든 차트의 총 눈금 수를 계산하는 것입니다. Expert Advisor를 2개의 차트에 연결하고 OnTick() 이벤트에서 카운터를 1만큼 증가시킵니다. 간단하게 하기 위해 배열이 아닌 하나의 정적 변수 카운터를 사용하려고 했습니다. 그러나 불행히도 각 Expert Advisor는 자체 카운터에서만 작동하며 카운터는 "공통"이 아닙니다. 결과:

문자1, 틱1 : 카운터 = 0;

문자1, 틱2 : 카운터 = 1;

문자2, 틱1 : 개수 = 0; - 여기 카운터 = 2가 예상됨

예를 들어 카운터가 있는 간단한 클래스를 만들었습니다.

 //+------------------------------------------------------------------+
//|                                                   TestStatic.mqh |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class TestStatic
  {
private :
static int counter;
public :
                     TestStatic();
                    ~TestStatic();

static void IncreaseCounter();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
TestStatic::TestStatic()
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
TestStatic::~TestStatic()
  {
  }
//+------------------------------------------------------------------+
int TestStatic::counter= 0 ;
TestStatic::IncreaseCounter()
  {
   Print ( "Symbol: " + _Symbol + ", counter: " + TestStatic::counter);
   TestStatic::counter++;
  };

어드바이저 코드는 다음과 같습니다.

 //+------------------------------------------------------------------+
//|                                                Exp_testMulti.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property version    "1.00"
#property strict
#include <TestStatic.mqh>

static string tickCounter[ 2 ][ 2 ];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
  
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   TestStatic::IncreaseCounter();
    
  }
//+------------------------------------------------------------------+

내가 그것을 알아낼 수 있도록 도와주세요. 미리 감사드립니다!

 
VangoghFX :

안녕하세요! 제 생각에는 간단한 계획을 구현하는 데 도움을 요청합니다.

하나의 악기에서 잘 작동하는 조언자가 있습니다. 여러 악기에서 동시에 작동하도록 "마무리"하고 싶습니다. 이렇게 하려면 여러 다른 기호에 연결된 EA의 모든 인스턴스에서 멤버에 액세스할 수 있는 데이터 배열을 올바르게 생성해야 합니다. 저것들. 단 하나의 데이터 배열이 있고 여러 개의 전문가 고문 인스턴스가 있습니다. 각 EA 인스턴스는 배열 구성원을 읽고 수정할 수 있습니다.

내가 알기로는 정적 멤버(정적)가 있는 배열을 만들어야 합니다.

가장 간단한 예는 Expert Advisors가 첨부된 모든 차트의 총 눈금 수를 계산하는 것입니다. Expert Advisor를 2개의 차트에 연결하고 OnTick() 이벤트에서 카운터를 1만큼 증가시킵니다. 간단하게 하기 위해 배열이 아닌 하나의 정적 변수 카운터를 사용하려고 했습니다. 그러나 불행히도 각 Expert Advisor는 자체 카운터에서만 작동하며 카운터는 "공통"이 아닙니다. 결과:

문자1, 틱1 : 카운터 = 0;

문자1, 틱2 : 카운터 = 1;

문자2, 틱1 : 카운터 = 0; - 여기 카운터 = 2가 예상됨

예를 들어 카운터가 있는 간단한 클래스를 만들었습니다.

어드바이저 코드는 다음과 같습니다.

내가 그것을 알아낼 수 있도록 도와주세요. 미리 감사드립니다!

안녕하세요. 특히, 틱으로 예제를 구현하려면 전역 터미널 변수가 적합합니다(이 주제에 대한 기사 가 최근에 게시됨). 그런 배열에 관해서는 ... 확실하지 않습니다. 시도해야합니다. 하지만 다른 옵션을 제공할 수 있습니다. 하나의 Expert Advisor에서 작업에 필요한 기호를 입력하고 말씀하신 대로 필요한 데이터의 정적/전역적 배열을 만드십시오. 그리고 EA가 필요한 모든 기호를 순환하도록 합니다.
 
Tapochun :
안녕하세요. 특히, 틱으로 예제를 구현하려면 전역 터미널 변수가 적합합니다(이 주제에 대한 기사 가 최근에 게시됨). 그런 배열에 관해서는 ... 확실하지 않습니다. 시도해야합니다. 하지만 다른 옵션을 제공할 수 있습니다. 하나의 Expert Advisor에서 작업에 필요한 기호를 입력하고 말씀하신 대로 필요한 데이터의 정적/전역적 배열을 만드십시오. 그리고 EA가 필요한 모든 기호를 순환하도록 합니다.

답변 주셔서 대단히 감사합니다.

나는 일반적인 아이디어를 설명하는 가장 쉽고 설명적인 방법으로 틱 예제를 사용했습니다. EA는 더 복잡한 알고리즘을 사용합니다.

N 기호가 크기와 비보편성 때문에 하나의 어드바이저에 쓰여지는 옵션이 마음에 들지 않습니다. 포털에 이 주제에 대한 여러 기사가 있습니다. 저는 그것들을 보았지만 큰 루프, 배열, 데이터 복사, 각 기호에 대한 많은 변수 팩 등을 좋아하지 않습니다. 제 생각에는 더 간단하고 효과적인 접근 방식을 사용하고 싶습니다. 모든 기호에 대해 하나의 EA 코드(기호는 EA가 첨부된 차트에 따라 결정됨) - EA의 각 사본은 다른 것과 병렬로 작동합니다. 그러나 동시에 고문은 의사 결정에 필요한 일반적인 분석 정보를 서로 "뒤집습니다".

전역변수에 대한 아이디어가 저를 방문했지만 이것은 여전히 절차적 접근에 가깝지만 OOP의 장점을 모두 사용하고 싶습니다. 필요한 분석 데이터를 배열 형태로 어드바이저에게 전달하는 별도의 클래스를 작성할 계획이며, 어드바이저는 이미 거래 결정을 내릴 것입니다.