mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 16

 
안드레이 딕 :
그러나 "백테스트" 탭의 " 차트 열기 " 명령으로 테스트 후 해당 매개변수와 함께 EA에서 사용된 모든 지표가 열린 차트에 자동으로 추가되도록 할 수 있습니까?

아직 아님.

지금은 시각적 테스트 템플릿‌을 저장하고 클라이언트 터미널에 적용할 수 있습니다.

 
슬라바 :

아직 아님.

지금은 시각적 테스트 템플릿‌을 저장하고 클라이언트 터미널에 적용할 수 있습니다.

OnDeinit의 Expert Advisor에서

차트저장 템플릿()


tester.tpl이라는 이름으로 " Open Chart " 명령으로 차트를 연 후 필요한 것을 얻을 수 있습니까?

 
안드레이 딕 :

그리고 OnDeinit의 Expert Advisor에서

차트저장 템플릿()


tester.tpl이라는 이름으로 " Open Chart " 명령으로 차트를 연 후 필요한 것을 얻을 수 있습니까?

아니요. ChartSaveTemplate은 템플릿을 테스트 에이전트의 로컬 파일 폴더에 저장합니다.

이것은 메인 메뉴를 통해 비주얼라이저에서 템플릿을 수동으로 저장하는 것을 의미했습니다.

Tester.tpl은 클라이언트 터미널에서 시각화 도우미까지 한 방향으로만 작동합니다.

 
슬라바 :

아니요. ChartSaveTemplate은 템플릿을 테스트 에이전트의 로컬 파일 폴더에 저장합니다.

이것은 메인 메뉴를 통해 비주얼라이저에서 템플릿을 수동으로 저장하는 것을 의미했습니다.

Tester.tpl은 클라이언트 터미널에서 시각화 도우미까지 한 방향으로만 작동합니다.

아니요, 너무 번거롭고 몸의 움직임이 많이 필요하고 템플릿을 저장하기 위해 매번 시각적 테스트 를 수행하는 것은 비용이 많이 듭니다. 특히 자주 수행해야 하는 경우 특히 그렇습니다...

지표로 즉시 테스트한 후 차트를 열 수 있는 정기적인 기능이 필요하다는 것을 의미합니다.‌

추신. 테스터에서 작동하지 않습니다. 나는 이것을 좋아한다:

//——————————————————————————————————————————————————————————————————————————————
void OnDeinit ( const int reason)
{
   if ( ChartSaveTemplate ( 0 , "testersdfsdfsdfsdf" ))
     Print ( __FUNCTION__ + ": Шаблон сохранён" );
   else
     Print ( __FUNCTION__ + ": Шаблон НЕ сохранён" );
    
   EventKillTimer ();
}
//——————————————————————————————————————————————————————————————————————————————

//——————————————————————————————————————————————————————————————————————————————
double OnTester ()
{
   if ( ChartSaveTemplate ( 0 , "testersdfsdfsdfsdf" ))
     Print ( __FUNCTION__ + ": Шаблон сохранён" );
   else
     Print ( __FUNCTION__ + ": Шаблон НЕ сохранён" );
   return (- DBL_MAX );
}
//——————————————————————————————————————————————————————————————————————————————

결과:

2017.03.07 12:22:15.422 코어 1 2017.03.06 23:58:59 OnTester: 템플릿이 저장되지 않음
2017.03.07 12:22:15.422 코어1 최종잔액 1129.18 USD
2017.03.07 12:22:15.422 Core 1 OnTester 결과 -1.797693134862316e+308
2017.03.07 12:22:15.422 코어 1 2017.03.06 23:58:59 OnDeinit: 템플릿이 저장되지 않음

 
void OnStart ()
  {
   int indic = iCustom ( Symbol (), Period (), "Examples\\ATR" , 7 , PRICE_CLOSE , clrGreen );
   ChartIndicatorAdd ( 0 , 1 , indic);  
   Sleep ( 10000 );
  }

이러한 방식으로 표시기의 색상을 설정할 수 없습니다.

그렇다면 왜 일부 사람들은 "이것은 버그가 아니라 기능"이라고 말하는가?‌

그러나 공식 답변은 나를 완전히 만족 시켰습니다.

MQL5 프로그램에서 표시기의 색상과 스타일을 변경하는 방법에 대해 생각해 보겠습니다.

그 동안 색상 유형의 입력 변수를 사용하여 표시기의 색상을 설정합니다‌

 
로프필드 :
void OnStart ()
  {
   int indic = iCustom ( Symbol (), Period (), "Examples\\ATR" , 7 , PRICE_CLOSE , clrGreen );
   ChartIndicatorAdd ( 0 , 1 , indic);  
   Sleep ( 10000 );
  }

이러한 방식으로 표시기의 색상을 설정할 수 없습니다.

그렇다면 왜 일부 사람들은 "이것은 버그가 아니라 기능"이라고 말하는가?‌

그러나 공식 답변은 나를 완전히 만족 시켰습니다.

표시기 핸들(계산부)을 통한 표시 속성(도면부) 설정이 불가능하기 때문입니다. 버그는 한 가지 방식으로 작성되었지만 완전히 다른 방식으로 작동하는 경우입니다.

여기에는 다른 접근 방식이 필요합니다. ChartIndicatorXXX 기능 그룹에서와 같이 짧은 이름으로 표시기에 액세스합니다. ChartIndicatorSetInteger (chart_id,sub_window,indicator_name,PROP_COLOR,mod,value)와 같은 것

우리는 이미 그것에 대해 생각했지만 아직까지 손이 닿지 않았습니다‌

 

핸들을 통해 무언가를 설정하려면 어떻게 해야 합니까? 색상은 PLOT_LINE_COLOR 속성을 통해 표시기 자체에서 설정됩니다.

Indicator_colorN은 초기 색상만 지정하며 이는 PLOT_LINE_COLOR를 통해 변경됩니다.

Indicator_colorN은 PLOT_LINE_COLOR를 통해 후속 설정 으로 표시기를 호출 할 때 입력과 다르지 않습니다.

일반적으로 핸들을 통해 이러한 속성을 변경하는 것은 불가능합니다.

이제 Indicator_buffers를 동적으로 설정할 차례입니다.‌

 
로프필드 :

핸들을 통해 무언가를 설정하려면 어떻게 해야 합니까? 색상은 PLOT_LINE_COLOR 속성을 통해 표시기 자체에서 설정됩니다.

Indicator_colorN은 초기 색상만 지정하며 이는 PLOT_LINE_COLOR를 통해 변경됩니다.

Indicator_colorN은 PLOT_LINE_COLOR를 통해 후속 설정 으로 표시기를 호출 할 때 입력과 다르지 않습니다.

핸들을 통해 그러한 속성을 변경하는 것은 전혀 허용되어서는 안됩니다.

이제 Indicator_buffers를 동적으로 설정할 차례입니다.‌

‌핸들은 말할 것도 없다. 나 자신도 핸들을 통해 그리기 속성을 설정하는 것은 불가능하다고 말했다. 그리고 그 이유를 설명했다

사용자 지정 지표 외에도 프로그래밍 방식으로 차트에 추가한 후 색상을 변경해야 하는 내장 지표도 있음을 잊지 마십시오.

 

표시기 호출 기능만 확장하는 것이 좋습니다.

 iCustom (... inputs, PRICE_CLOSE ,
         [ color color1, int width1, int style1]... );

iAlligator (... params, PRICE_CLOSE ,
         [ color color1, int width1, int style1]... );
더 이상 추가할 필요가 없습니다.

 
어, 어쨌든 볼 수 없다면?