MQL 전문가를 위한 질문 - 페이지 8

 

덕분에.

 

좋은 오후에요 여러분.

제발. 말하다. 표시기는 상품의 가격 라인을 표시하고

오른쪽에는 텍스트 주석이 있습니다. 이름과 위치 크기.

모든 것이 잘 작동합니다. 내가 5자리 따옴표로 악기 차트에 칠면조를 넣을 때까지.

가격선이 그려집니다. 그런데 오른쪽 댓글이 완전히 사라집니다. 또는 위치 크기 대신 0이 표시됩니다.

그리고 잡지는 ZERO DIVIDY 를 발행합니다(Alpari 차트 참조).

- EURUSD 및 GBPUSD의 경우 - 크기 대신 0이 표시됩니다...

위치 크기 계산과 관련이 있다고 생각합니다.

 double vol1= 1 , vol2, vol3, k1;

  k1=MarketInfo(Symbol_1, MODE_TICKVALUE)*iOpen(Symbol_1, 0 , 0 )/
     MarketInfo(Symbol_1, MODE_TICKSIZE);

  vol2=k1/(MarketInfo(Symbol_2, MODE_TICKVALUE)*iOpen(Symbol_2, 0 , 0 )/
           MarketInfo(Symbol_2, MODE_TICKSIZE))*vol1;

  vol3=k1/(MarketInfo(Symbol_3, MODE_TICKVALUE)*iOpen(Symbol_3, 0 , 0 )/
           MarketInfo(Symbol_3, MODE_TICKSIZE))*vol1;

    // пишем комментарий в окне индикатора с правой стороны: 
 object ( "Symbol1" , DoubleToStr(N1, 0 )+ "*" +Symbol_1+ " -" +DoubleToStr(vol1, 2 ), 10 , indicator_color1, 5 );
 object ( "Symbol2" , DoubleToStr(N2, 0 )+ "*" +Symbol_2+ " -" +DoubleToStr(vol2, 2 ), 10 , indicator_color2, 18 );
 object ( "Symbol3" , DoubleToStr(N3, 0 )+ "*" +Symbol_3+ " -" +DoubleToStr(vol3, 2 ), 10 , indicator_color3, 31 );
 object ( "SymbolS" , "AVERAGE" , 10 , indicator_color4, 44 );   
           

관계 k1= MarketInfo(Symbol_1, MODE_TICKVALUE) .... / MarketInfo(Symbol_1, MODE_TICKSIZE)

5자리에서 "0으로 나누기"를 제공합니다.

제발. 이 문제를 해결하는 방법을 알려주세요?

 

예를 들어 이런 저런 숫자에서 과거에 이루어진 거래를 보여주는 스크립트나 지표가 있는지 알려주십시오. pts. 내 생각에 유용한 것

감사해요,

유리

 
leonid553 :

좋은 오후에요 여러분.

제발. 이 문제를 해결하는 방법을 알려주세요?


간단하다면 MODE_TICKSIZE 대신 MODE_POINT를 넣어보세요. 그러나 일반적으로 MarketInfo() 0을 고려하도록 코드를 다시 작성해야 합니다.
 
tyn :

예를 들어 이런 저런 숫자에서 과거에 이루어진 거래를 보여주는 스크립트나 지표가 있는지 알려주십시오. pts. 내 생각에 유용한 것

감사해요,

유리

https://www.mql5.com/en/code - 스크립트. 터미널 계정 내역에서 시간 간격을 지정합니다.

VisualOrders.mq4 - 표시기

파일:
 

안녕하세요.

mt4 DC EXNESS에서 내 "다중 통화" 표시기는 어떤 이유로 인터넷이 연결된 경우에만 작동합니다(mt4 other DC와 다름).

인터넷이 없으면 칠면조 줄은 반영되지 않고 주석이 있는 빈 창만 반영됩니다. 이 잡지는 "제로 배당금"을 발행합니다.

인터넷에 연결할 때 종종 칠면조 라인이 나타나도록 먼저 tf를 클릭해야 합니다.

무엇이 잘못되었고 어떻게 고칠 수 있는지 알려주십시오.

꺼졌을 때 인터넷:

연결 시:

 
leonid553 :

안녕하세요.

mt4 DC EXNESS에서 내 "다중 통화" 표시기는 어떤 이유로 인터넷이 연결된 경우에만 작동합니다(mt4 other DC와 다름).

인터넷이 없으면 칠면조 줄은 반영되지 않고 주석이 있는 빈 창만 반영됩니다. 이 잡지는 "제로 배당금"을 발행합니다.

인터넷에 연결할 때 종종 칠면조 라인이 나타나도록 먼저 tf를 클릭해야 합니다.

무엇이 잘못되었고 어떻게 고칠 수 있는지 알려주십시오.

꺼졌을 때 인터넷:

연결 시:


정상적인 것. 종종 발생하며 이에 대처하는 것이 항상 가능한 것은 아닙니다. 0으로 나누는 것은 수정할 수 있지만. 문제는 가장 흔한 시장 환경의 부재다.
 

이해가 잘 안가네요, 빅터.

이것이 "정상적인 일"입니까? 이것은 명백한 결함입니다!

나는 "시장 환경의 부족"이라는 용어를 이해하지 못합니다.

나누기를 0으로 수정하면 가격선이 나타납니까? 나는 생각하지 않는다.

인디케이터 창의 우측 코너에 코멘트가 정상적으로 표시됩니다. 저것들. f- 및 ObjectCreate 등 잘 작동하고 있습니다.

수학적 계산 도 정상적으로 작동하며 그 수는 주석에 설정되어 있습니다.

표시기의 가격선만 남습니다. 왜냐하면 거기에는 더 이상 아무것도 없습니다.

가격 라인은 버퍼에 설정됩니다. 각 가격선은 두 MA의 차이일 뿐입니다.

 int start() {
     int limit;  int counted_bars=IndicatorCounted();
  //---- проверка на возможные ошибки
     if (counted_bars< 0 ) return (- 1 );
  //---- последний посчитанный бар будет пересчитан
     if (counted_bars> 0 ) counted_bars-= 10 ;      limit= Bars -counted_bars;
  //---- основной цикл
 for ( int i= 0 ; i<limit; i++)       {
 
   Symbol1[i]= N1*
     ( iMA (Symbol_1, Period (),MA_fast, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_1, 0 ,Time[i],false))-
     iMA (Symbol_1, Period (),MA_per, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_1, 0 ,Time[i],false)))  ;
  .... ....

그래서 "제로 배당"을주는 것은이 부분입니다! 그러나 여기에는 나눗셈이 전혀 없으며 또한 0으로 나누기가 없습니다!

따라서 이 경우의 오류는 랜턴에서 서버(또는 플랫폼)에 의해 반환됩니까? 또는 MT4 개발자는 그러한 결함을 예측하지 못하고 그러한 오류의 본질에 해당하지 않는 "제로 배당" 반환을 설정했습니다.

그리고 MT4 다른 DC 표시기가 정상적으로 작동하는 이유는 무엇입니까?

동일한 플랫폼이 어떻게 다를 수 있으므로 그러한 간단한 코드가 플랫폼에서 다르게 작동할 수 있습니까?

 

0으로 나누기를 처리할 수 있지만 표시기의 올바른 작동도 필요합니다. 이것은 더 어렵습니다.

 

그리고 이론적으로 그러한 간단한 코드(4줄)의 부정확성은 다음과 같습니다.

 int start() {
     int limit;  int counted_bars=IndicatorCounted();
  //---- проверка на возможные ошибки
     if (counted_bars< 0 ) return (- 1 );
  //---- последний посчитанный бар будет пересчитан
     if (counted_bars> 0 ) counted_bars-= 10 ;
     limit= Bars -counted_bars;

  //---- основной цикл
 for ( int i= 0 ; i<limit; i++)       {
   //РИСУЕМ ЛИНИИ СИМВОЛОВ, ЕСЛИ ИМЕЮТСЯ БАРЫ

   Symbol1[i]= N1*
     ( iMA (Symbol_1, Period (),MA_fast, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_1, 0 ,Time[i],false))-
     iMA (Symbol_1, Period (),MA_per, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_1, 0 ,Time[i],false)))  ;
   Symbol2[i]= N2*
     ( iMA (Symbol_2, Period (),MA_fast, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_2, 0 ,Time[i],false))-
     iMA (Symbol_2, Period (),MA_per, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_2, 0 ,Time[i],false)))  ;
   Symbol3[i]= N3*
     ( iMA (Symbol_3, Period (),MA_fast, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_3, 0 ,Time[i],false))-
     iMA (Symbol_3, Period (),MA_per, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_3, 0 ,Time[i],false)))  ; 
   Symbol4[i]= N4*
     ( iMA (Symbol_4, Period (),MA_fast, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_4, 0 ,Time[i],false))-
     iMA (Symbol_4, Period (),MA_per, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_4, 0 ,Time[i],false)))  ;
    
      
      
   }
   return ( 0 );
} // конец функции СТАРТ