Experts: Multik

 

Multik:

다중 통화 어드바이저.

Multik

Author: Andrey Kornishkin

 

모든 쌍을 현재 상품으로 정규화할 건가요?

dsma2 = NormalizeDouble(SMA[2] - SMA[3], _Digits);      // 사이트 2-3의 MA
dsma1 = NormalizeDouble(SMA[1] - SMA[2], _Digits);      // 사이트 1-2의 MA
 
Valmars:

현재 상품으로 모든 쌍을 정규화할 건가요?


예, 여기에 오류가 있습니다. 게다가 새 막대를 정의하는 기능은 시간 복사 기능을 사용하지 않고도 구현할 수 있습니다.
 
Valmars:

현재 상품으로 모든 쌍을 정규화할 것인가요?


그리고 경고가 없도록 올바르게 구현하는 방법은 무엇인가요?

원래 버전에서는 다음과 같습니다:

     int Digits_ = SymbolInfoInteger(Symbol_, SYMBOL_DIGITS) + 4;
     dsma2 = NormalizeDouble(SMA[2] - SMA[3], Digits_);      // 사이트 2-3의 MA
     dsma1 = NormalizeDouble(SMA[1] - SMA[2], Digits_);      // 사이트 1-2의 MA
 
AM2:

경고 없이 구현하는 올바른 방법은 무엇인가요?

원래 버전에서는 다음과 같습니다:

4가 +4와 무슨 관련이 있나요? 논리적으로 이렇게 해야 합니다.

int Digits_ = SymbolInfoInteger(Symbol_, SYMBOL_DIGITS);
dsma2 = NormalizeDouble(SMA[2] - SMA[3], Digits_); // 사이트 2-3의 MA
dsma1 = NormalizeDouble(SMA[1] - SMA[2], Digits_); // 사이트 1-2의 MA
 
Interesting:

그게 +4와 무슨 상관이 있나요? 논리적이어야 합니다.

경고도 마찬가지입니다:

유형 변환으로 인한 데이터 손실 가능성 Multik.mq5 218 18

 
AM2:

경고도 마찬가지입니다:

유형 변환으로 인한 데이터 손실 가능성 Multik.mq5 218 18

경고를 피하려면 다음과 같이 변환해야 합니다.

int Digits_ = (int)SymbolInfoInteger(Symbol_, SYMBOL_DIGITS);
 

하지만 동일한 설정으로 코레벨링된 쌍을 거래할 때 멀티상품의 의미가 사라지지 않나요? 거의 같은 시기에 하락이 발생할 것으로 예상되며 이는 문제가 될 수 있습니다. 하지만 안타깝게도 모든 통화쌍이 코렐레이션되어 있기 때문에 피할 수 없는 문제일 수 있습니다. 저는 실제로 EUR/USD GBP/USD 쌍을 함께 거래하지만 하나는 추세 추종자, 다른 하나는 반전, 고점 및 저점 유형의 EA를 사용합니다.

 
sergey1294:

경고를 받지 않으려면 다음과 같이 변환해야 합니다.

감사합니다, 작동합니다!
 

request.volume = Money_M();

이 EA는 체계적인 코드의 좋은 예이며 훌륭한 코멘트가 있습니다. 그러나 Money_M()이라는 로트 크기 함수와 관련하여 한 가지 질문이 있습니다. 이 뒤에있는 의사 결정 트리는 무엇이며 어디에 있습니까?

지원 사이트에서 검색을 시도했지만 참조를 찾을 수 없었고 관련 클래스에 연결되어 있지 않은 것 같았습니다.

 
bdwezensky:

request.volume = Money_M();

이 EA는 체계적인 코드의 좋은 예이며 훌륭한 코멘트가 있습니다. 하지만 Money_M()이라는 로트 크기 함수와 관련하여 한 가지 질문이 있습니다. 이 뒤에 있는 의사 결정 트리는 무엇이며 어디에 있나요?

지원 사이트에서 검색을 시도했지만 참조를 찾을 수 없었고 관련 클래스에 연결되어 있지 않은 것 같았습니다.

double Money_M()
  {
   double Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)/100000*10;
   Lots=MathMin(5,MathMax(0.1,Lots));
   if(Lots<0.1)
      Lots=NormalizeDouble(Lots,2);
   else
     {
      if(Lots<1) Lots=NormalizeDouble(Lots,1);
      else       Lots=NormalizeDouble(Lots,0);
     }
   return(Lots);
  }

이 함수는 거래 랏의 크기를 계산하는 데 사용됩니다.

double Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)/100000*10;

이 문자열은 거래 랏의 계산된 크기입니다. 계산은 여유 자금(ACCOUNT_FREEMARGIN)에서 수행됩니다. 위험 = 사용 가능한 여유 자금의 10%.

Lots=MathMin(5,MathMax(0.1,Lots));
이 줄에서는 거래 랏의 정규화가 실행됩니다. 0.1 <= 랏 <= 5.0