MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1239

 
BarCloseB1 = iClose (nameSym,xPeriod,xshiftBar);
BarCloseB1Signal = iClose (nameSymSignal,xPeriod,xshiftBar)

안녕하세요!

새로운 시간별 막대를 열 때 현재 상품과 다른 상품(현재 상품에 대한 신호)의 종가를 찾습니다. 테스터에서 모든 것이 정상입니다.

그러나 실생활에서 현재 기기의 값은 해당하고 신호 기기의 경우 이전 막대의 값을 취합니다. 즉, xshiftBar = 1이면 신호 기기에 대해 xshiftBar 를 사용합니다.   =2, 즉 하나 더

 
Vitaly Muzichenko :

이 자원에서 얻은 만큼만 인출할 수 있으며 이는 프로그램, 신호 및 컴퓨터 용량의 판매입니다. 입력한 내용은 이 리소스에만 사용할 수 있습니다.

비탈리, 당신이 잘못 이해했습니다. 먼저 제거한 다음 필요할 때 필요한 경우 버려야 합니다.

 
Yerkin Sagandykov :

안녕하세요!

새로운 시간별 막대를 열 때 현재 악기와 다른 악기(현재 악기에 대한 신호)의 종가를 찾습니다. 테스터에서 모든 것이 정상입니다.

그러나 실생활에서 현재 기기의 값은 해당하고 신호 기기의 경우 이전 막대의 값을 취합니다. 즉, xshiftBar = 1이면 신호 기기에 대해 xshiftBar 를 사용합니다.   =2, 즉 하나 더

확인하려면 변수 대신 값 1과 2를 넣으면 오류가 어디에 있는지 이해할 수 있습니다.

 
Alekseu Fedotov :

아이커스텀으로

감사합니다. 하지만 그려진 레벨이 너무 빨리 떨어지는 이유를 알려주세요.
파일:
snake.mq4  16 kb
 
Alexey Viktorov :

확인하려면 변수 대신 값 1과 2를 넣으면 오류가 어디에 있는지 이해할 수 있습니다.

문제는 내 의견으로는 변수의 값에 있지 않습니다. 내 코드에서 새로운 시간이 시작될 때 다시 계산한다는 것입니다. 그리고 현재 기호에 따라 새로운 막대 가 나타나고 막대 =1의 값이 계산되고 신호 기호에 따라 새로운 막대가 얻어지며 아직 형성되지 않았으며 값이 막대 = 2에 대해 계산됩니다.

 if   ( iTime (nameSym, LPeriod, 0 ) == counted_bar ) return ; 
Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 
Yerkin Sagandykov :

문제는 내 생각 에 변수의 값이 아닙니다. 내 코드에서 새로운 시간이 시작될 때 다시 계산한다는 것입니다. 그리고 현재 기호에 따라 새로운 막대 가 나타나고 막대 =1의 값이 계산되고 신호 기호에 따라 새로운 막대가 얻어지며 아직 형성되지 않았으며 값이 막대 = 2에 대해 계산됩니다.

"내 생각에"가 아니라 정확하려면 특정 값을 설정해야 하며 그런 다음 신호 기호에서 새 막대의 시작이 늦었다고 자신 있게 말할 수 있습니다. 그리고 어떻게 든이 새로운 바를 기다리십시오. 몇 가지 옵션이 있으며 어떤 옵션을 사용할지는 스스로 결정하십시오.

 

인사말. 말해 주세요.

특정 Expert Advisor의 주문에 대한 최대 인출액을 계산해야 합니다.

모든 주문으로 계산하면 그렇게 생각하고 MT 자체의 결과와 수렴합니다.

       if (AccountEquity()>max_equity){
         max_equity=AccountEquity();
      }   
       if (max_drawdown_total<max_equity-AccountEquity()){
         max_drawdown_total=max_equity-AccountEquity();
      } 

한 조언자는 이렇게 생각합니다.

       if (MoneyCount()>max_equity_1){
         max_equity_1=MoneyCount();
      }   
       if (max_drawdown_total_1<max_equity_1-MoneyCount()){
         max_drawdown_total_1=max_equity_1-MoneyCount();
      }

double MoneyCount(){
   double count= 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==magic){
            count+=(OrderProfit()+OrderSwap()+OrderCommission()); //
         }   
      }
   }
   return count;
}

테스터에서 계산 결과가 같아야 한다고 가정하지만, 퍼센트보다 약간 더 큰 차이(즉각적으로는 아님)가 있습니다. 내가 생각하지 않는 것은 무엇입니까?

 
안녕하세요. mql4 또는 5 중 어떤 언어를 선호하는지 알려주십시오. 그리고 왜 메타 편집기 5가 mt4에 내장되어 있습니까? 아니면 mql4에도 있습니까?
 
안녕하세요, 예를 들어 MA가 ATR에 중첩될 때 표시기 값을 코드에 반영하는 방법을 알려주세요. MT4에서 가능한가요?
 
ZahvatkiN :
안녕하세요, 예를 들어 MA가 ATR에 중첩될 때 표시기의 값을 코드에 반영하는 방법을 알려주십시오. MT4에서 가능합니까?

MQL4의 경우 iMAOnArray() 사용, MQL5의 경우 - iMA 핸들을 생성할 때 이동 평균 이 계산되는 가격이 아니라 이전에 생성된 ATR의 핸들을 지정합니다.