찻주전자의 질문 - 페이지 52

 

그리고 어디로 가야 할까요? ... 그냥 모르겠어..

글쎄요, 일반적으로 EMA로 날아가는데, iCustom을 통해서는 계산이 10배는 더 걸립니다..

 

어떤 경우에도 다음과 같이 해서는 안 됩니다.

 void OnTick ()
  {
   //--- безусловно создаем индикатор
   ma_handle = iMA ( _Symbol , 0 , MA, 0 , MODE_EMA , PRICE_CLOSE );
  }

실제로 "새 지표를 생성 "할 때 "지표 핸들 얻습니다"라는 말로 자신을 속이지 마십시오.

또한 핸들 누수가 있습니다.

 
Karlson :

그리고 어디로 가야 합니까? ... 그냥 모르겠어..

글쎄요, 일반적으로 EMA로 날아가는데, iCustom을 통해서는 계산이 10배는 더 걸립니다..

더 이상 사용되지 않는 표시기 핸들을 처리하려면 어떻게 해야 합니까? 몰라.. 그렇게 일하지 않았어. 매 틱마다 점점 더 많은 것들이 있습니다.

이러한 전략을 구현해야 하는 경우 iCustom()을 통해 미리 만들어진 사용자 지정 지표 를 호출하는 것을 거부 하고 대신 Expert Advisor의 OnTick()에 지표의 본문을 배치합니다. 그리고 데이터 계산은 전문가가 직접 수행합니다.

..지표가 .ex5 형식이고 해당 코드가 없으면 문제가 발생합니다.

 

여기에서 나는 "더 이상 사용되지 않는 표시기에서 컴퓨터 메모리를 해제하기 위해 표시기의 핸들이 전달되는 IndicatorRelease() 함수를 사용합니다"라고 기억했습니다(저는 Expert Advisor를 초기화 해제할 때 사용합니다).

하지만 어쨌든: 매 틱마다 새로운 핸들은 어렵습니다.

 

핸들의 축적에 관해서는 질문을 확인하겠습니다 ..

그래서 칠면조를 전문가에게 맡길 생각입니다. 감사합니다.

 
Karlson :

핸들의 축적에 관해서는 질문을 확인하겠습니다 ..

그래서 칠면조를 전문가에게 맡길 생각입니다. 감사합니다.

지표를 그대로 두고 타이머나 이벤트로 복사본을 만들 수 있습니다.
 
Interesting :
지표를 그대로 두고 타이머나 이벤트로 복사본을 만들 수 있습니다.

OnTick(), OnTimer() 또는 OnChartEvent()에서 표시기의 복사본을 생성하는 위치에 어떤 차이가 있습니까 ? 어쨌든 "지표 사본"은 각 이벤트와 함께 생성되어 이미 거대한 더미를 악화시킵니다.

아니면 내가 당신의 논리를 잘못 이해했습니다.

 
Yedelkin :

OnTick(), OnTimer() 또는 OnChartEvent()에서 표시기의 복사본을 생성하는 위치에 어떤 차이가 있습니까? 어쨌든 "지표 사본"은 각 이벤트와 함께 생성되어 이미 거대한 더미를 악화시킵니다.

아니면 내가 당신의 논리를 잘못 이해했습니다.

여기에 그러한 트릭이 있습니다. 표시기에서 매개변수를 변경할 필요가 없는 경우(새 칠면조 사본을 생성할 필요가 없음) 초기화 블록에서 표시기를 한 번 생성하는 것이 더 논리적입니다.

그러나 작업 과정에서 표시기의 매개변수를 자동으로 변경해야 하는 경우 가능한 한 효율적으로 변경해야 합니다.

각 틱에서 새 복사본을 만드는 것은 가장 비효율적인 방법이며 타이머에서 처리하는 것이 더 효율적입니다(모든 타이머 작업에서 반드시 그런 것은 아님).

가장 효과적인 방법은 특정 이벤트(여러 이벤트)가 발생할 때 칠면조의 새 복사본을 만드는 것입니다.

추신

이 경우 칠면조 계산에 소요되는 시간을 고려하고 "추가"사본을 제거해야 합니다.

 

고려 사항에 대한 그러한 아이디어 .. 새 차를 세는 것은 나를 위해 하루 또는 일주일에 한 번 수행 할 수 있습니다 .. 타이머를 설정했습니다.

 bool    EventSetTimer (
   int   seconds       // количество секунд
   );

진실은 하루 또는 일주일의 초 수를 혼동 ...))) 또는 새로운 일일 막대를 사용할 수 있습니다..

다음으로 OnTimer() 함수 에서 먼저 IndicatorRelease ()를 사용하여 이전 칠면조를 삭제하고 변경된 기간으로 새 틱을 만듭니다.

 void OnTimer () 
{

IndicatorRelease ( ma_handle );

ma_handle= iMA ( Symbol (), 0 , newMA , 0 ,MA_EMA, PRICE_CLOSE );

}

대체적으로 이런게..

 
Renat :

어떤 경우에도 다음과 같이 해서는 안 됩니다.

실제로 "새 지표를 생성 "할 때 "지표 핸들 얻습니다"라는 말로 자신을 속이지 마십시오.

또한 핸들 누수가 있습니다.

MQL5의 여명기에 이것의 많은 사본이 깨졌고 자동 거래를 위한 개발의 중요한 부분을 차단했습니다. 결과적으로 사람들은 더미로 매우 최적화된 OnCalculate() 를 억제하고 계산을 이벤트에 넣습니다. 약간 느리지만 각 동적 매개변수에 대해 고유한 핸들을 만드는 것보다 여전히 빠릅니다.