초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1245

 
Artyom Trishkin :

모든 배열이 동일한 방향성을 가지는 것은 아닙니다.

이해하지만 결국 ArraySetAsSeries(barsBuffer1 ,true); !

글쎄, 그것은 절반의 문제입니다. 그러나 새 양초를 추가하는 방법 - 나는 결코 알지 못할 것입니다.

다음과 같이 시도했습니다.

.........
   else
   {
       Print ( "tick_count = " ,++tick_count);
       if (tick_count >= 5 )
      {
         Print ( "Добавляем свечу." );
         
         double    O[ 1 ], H[ 1 ], L[ 1 ], C[ 1 ];
         O[ 0 ]  = newCandles_Open[ 3 ];
         H[ 0 ]  = newCandles_High[ 3 ];
         L[ 0 ]  = newCandles_Low[ 3 ];
         C[ 0 ]  = newCandles_Close[ 3 ];
         
         ArrayResize (barsBuffer1, ArraySize (barsBuffer1)+ 1 );
         ArrayResize (barsBuffer2, ArraySize (barsBuffer2)+ 1 );
         ArrayResize (barsBuffer3, ArraySize (barsBuffer3)+ 1 );
         ArrayResize (barsBuffer4, ArraySize (barsBuffer4)+ 1 );
         
         ArrayInsert (barsBuffer1,O, 0 );
         ArrayInsert (barsBuffer2,H, 0 );
         ArrayInsert (barsBuffer3,L, 0 );
         ArrayInsert (barsBuffer4,C, 0 );
         
         tick_count = 0 ;
      }
   }
//--- return value of prev_calculated for next call
   return (rates_total);
}

작동하지 않습니다... (((

 
Сергей Таболин :

이해하지만 결국 ArraySetAsSeries(barsBuffer1 ,true); !

글쎄, 그것은 절반의 문제입니다. 그러나 새 양초를 추가하는 방법 - 나는 결코 알지 못할 것입니다.

다음과 같이 시도했습니다.

작동하지 않습니다... (((

물론 미안하지만 표시기 버퍼로 할당된 배열의 크기는 조정할 수 없습니다 . 이는 터미널 하위 시스템에서 처리합니다.

    SetIndexBuffer ( 0 , barsBuffer1, INDICATOR_DATA );
   SetIndexBuffer ( 1 , barsBuffer2, INDICATOR_DATA );
   SetIndexBuffer ( 2 , barsBuffer3, INDICATOR_DATA );
   SetIndexBuffer ( 3 , barsBuffer4, INDICATOR_DATA );
          ArrayResize (barsBuffer1, ArraySize (barsBuffer1)+ 1 );
         ArrayResize (barsBuffer2, ArraySize (barsBuffer2)+ 1 );
         ArrayResize (barsBuffer3, ArraySize (barsBuffer3)+ 1 );
         ArrayResize (barsBuffer4, ArraySize (barsBuffer4)+ 1 );

당신의 논리를 재고하십시오. 나는 그녀를 전혀 알지 못하고 노골적으로 잘못된 것을 보여줄 수 있습니다.

 
Artyom Trishkin :

물론 미안하지만 표시기 버퍼로 할당된 배열의 크기는 조정할 수 없습니다 . 이는 터미널 하위 시스템에서 처리합니다.

논리를 재고하십시오. 나는 그녀를 전혀 알지 못하고 노골적으로 잘못된 것을 보여줄 수 있습니다.

그것도 이해하지만...

Artyom, 표시기 버퍼 가 하위 시스템에 의해 제어되면 크기도 증가한다는 것이 밝혀졌습니다. 즉, 차트에 새로운 캔들이 나타날 때까지 차트에 새로운 인디케이터 캔들을 그릴 수 없다는 것입니다.

 
Сергей Таболин :

그건 나도 이해하지만...

Artyom, 표시기 버퍼 가 하위 시스템에 의해 제어되면 크기도 증가한다는 것이 밝혀졌습니다. 즉, 차트에 새로운 캔들이 나타날 때까지 차트에 새로운 인디케이터 캔들을 그릴 수 없다는 것입니다.

"새 양초 그리기"은(는) 무슨 뜻인가요?

모든 종류를 그릴 수 있지만 막대를 추가할 수는 없습니다. 막대는 아직 존재하지 않습니다.

예, 터미널 자체가 표시기 배열의 크기를 처리합니다. 또한 마지막 통화에 몇 명이 있었는지에 대한 데이터도 제공합니다.

 
Artyom Trishkin :

"새 양초 그리기"은(는) 무슨 뜻인가요?

모든 종류를 그릴 수 있지만 막대를 추가할 수는 없습니다. 막대는 아직 존재하지 않습니다.

예, 터미널 자체가 표시기 배열의 크기를 처리합니다. 또한 마지막 통화에 몇 명이 있었는지에 대한 데이터도 제공합니다.

고마워, 이제 내가 왜 할 수 없는지 이해한다.

그럼 마지막 질문. 표시기에 다른 시간대의 양초를 표시하는 것이 가능하다는 것을 알고 있습니다. 전류가 H2이고 H1이 있는 양초가 표시되면 한 양초 의 수명 동안 표시기에 2를 그려야 합니다. 시스템만 버퍼를 늘리면 어떻게 됩니까? 또는 어렵지 않은 경우 예제에 대한 링크. 아마도 나는 추측)))

 
Сергей Таболин :

고마워, 이제 내가 왜 못하는지 알겠어.

그럼 마지막 질문. 표시기에 다른 시간대의 양초를 표시하는 것이 가능하다는 것을 알고 있습니다. 전류가 H2이고 H1이 있는 양초가 표시되면 한 양초 의 수명 동안 표시기에 2를 그려야 합니다. 시스템만 버퍼를 늘리면 어떻게 됩니까? 또는 어렵지 않은 경우 예제에 대한 링크. 아마도 나는 추측)))

지표에 대한 지난 기사에서 예제를 제공했지만 모든 것이 라이브러리와 연결되어 있습니다.

그리고 하나가 아닌 두 개의 양초를 그리는 방법을 이해하려면 차트를 보십시오. H2의 양초는 몇 시에 열렸고 H1의 같은 시간에 열린 양초는 어디에 있습니까? 모든 것이 명확해질 것입니다.

 
Artyom Trishkin :

지표에 대한 지난 기사에서 예제를 제공했지만 모든 것이 라이브러리와 연결되어 있습니다.

그리고 하나가 아닌 두 개의 양초를 그리는 방법을 이해하려면 차트를 보십시오. H2의 양초는 몇 시에 열렸고 H1의 같은 시간에 열린 양초는 어디에 있습니까? 모든 것이 명확해질 것입니다.

Artyom, 문제는 그것이 나에게 닿지 않는다는 것입니다!

예를 들어, H2의 양초는 12:00에 열립니다. 다음 시간은 오후 2시에 있습니다. 그러나 H1의 다음 시간은 13:00입니다. 논리적으로 시니어 TF에서 양초가 열릴 때까지 표시기 배열은 증가하지 않습니다! 그래서 지표에 두 번째 촛대를 그릴 수 없습니까? 또는 어떻게?

글쎄, 누가 그렇게 멍청한지 설명해줘.... 한 차트에 두 개의(원칙적으로 n개의 양초) 양초를 왜 그리고 어떻게 그릴 수 있지? 인디케이터 버퍼의 0번째 인덱스를 새 값으로 채우면(단순 할당) 인디케이터가 변경되지 않는 이유는 무엇입니까?

이 가능성에 대해 개발자에게 물어봐야 할까요? 이 버퍼에 새 요소를 추가했습니다. 이전 요소를 모두 왼쪽으로 이동하여 그려졌습니다. 결국, 이것은 내 지표입니다! 내가 원하는대로 씁니다! 그리고 차트의 새로운 막대가 열리는 시간에 묶고 싶지 않습니다! 정말 그렇게 어려운가요?

 

Artyom과 Vladimir에게 감사드립니다! 귀하의 답변과 설명은 저를 생각하게 만들었고 지표가 나타났습니다. 다시 한번 감사합니다.


 

제발 말해줘, 무슨 일이야?

간단한변수 선언이 있습니다.

 input double    StopLoss= 150.0 ;

실제 데이터에서 디버깅할 때 StopLoss 변수에는 "150"이라는 지정된 값이 있습니다. 그러나 기록 디버깅을 활성화하면 동일한 코드의 동일한 변수가 다른 값을 갖습니다. 이 문제의 원인은 무엇입니까? 그리고 문제를 해결하는 방법?

 
Sayberix :

제발 말해줘, 무슨 일이야?

간단한 변수 선언이 있습니다.

실제 데이터에서 디버깅할 때 StopLoss 변수에는 "150"이라는 지정된 값이 있습니다. 그러나 기록 디버깅을 활성화하면 동일한 코드의 동일한 변수가 다른 값을 갖습니다. 무엇이 이것을 일으킬 수 있습니까? 그리고 문제를 처리하는 방법?

전략 테스터의 "매개변수" 탭에서 값을 확인하십시오. 실제 데이터에 대한 디버깅을 활성화하면 EA는 입력 변수에서 값을 가져오고, 히스토리에 있으면 테스터 설정에서 값을 가져옵니다.