로봇 만들기 - 페이지 7

 
Vladimir M. :
보통 OnDeinit에서 핸들과 계산된 부분을 청소하면 모든 것이 삭제됩니다. 객체는 지표가 아닙니다.

https://www.mql5.com/ru/docs/chart_operations/chartindicatordelete

" 차트에서 지표를 제거한다고 해서 지표의 계산된 부분도 단말기의 메모리에서 삭제되는 것은 아닙니다. 지표 핸들을 해제하려면 IndicatorRelease() 함수를 사용하십시오."

예, 블라디미르, 나는 이미 그것을했고 그것에 대해 더 일찍 썼지 만 결과는 여전히 동일합니다.

안부 인사를 전합니다. 블라디미르.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

로봇 만들기

브루클린 씨 , 2020.09.28 10:38

다음은 제가 한 시간 이상 싸워온 한 가지 문제의 실제 예입니다. EA를 시작할 때 ZigZagColor 인디케이터를 생성하여 차트에 표시해야 했습니다. int OnInit에서 제작:

   handle_iCustom= iCustom (m_symbol.Name(), Period (), "Examples\\ZigzagColor" ,
                          Inp_ZZ_Depth,
                          Inp_ZZ_Deviation,
                          Inp_ZZ_Backstep);
   ChartIndicatorAdd ( ChartID (), 0 ,handle_iCustom);

표시기가 생성되어 표시됩니다. 이제 어드바이저를 삭제한 후 지표를 삭제해야 합니다. 쓰기:

 void OnDeinit ( const int reason)
  {
//---
   IndicatorRelease (handle_iCustom);
   ObjectsDeleteAll ( 0 , "Examples\\ZigzagColor" );
  }

표시기는 제거되지 않습니다. 선반에도 다 올려놓은 것 같습니다. 그리고 khendl이 지워지고 제거 기능이 적용되었습니다. 제거되지 않는 이유는 무엇입니까?

안부 인사를 전합니다. 블라디미르.


 
Alekseu Fedotov :

함수를 사용하여 차트에서 지표 제거


bool ChartIndicatorDelete(

long chart_id, // 차트 ID

int sub_window // 서브 윈도우 번호

const string indicator_shortname // 표시기의 짧은 이름

);

Alexey, 감사합니다. 내일 새로운 마음으로 시도하겠습니다. 그렇지 않으면 받은 정보가 이미 엉망입니다. 그들이 말했듯이 아침은 저녁보다 현명합니다!

이제 나를 크게 당황시키고 놀라게 한 또 다른 순간이 있습니다. Vladimir Karputov가 개발한 스크립트로 차트를 지우려고 했기 때문에 이 스크립트는 이 사용자 지정 표시기 ZigzagColor 를 제외한 모든 것을 완전히 제거했습니다!!! 같은 스크립트로 간단한 지그재그를 삭제하려고 했는데 삭제가 안되네요! 신비...

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin :

Alexey, 감사합니다. 내일 새로운 마음으로 시도하겠습니다. 그렇지 않으면 받은 정보가 이미 엉망입니다. 그들이 말했듯이 아침은 저녁보다 현명합니다!

이제 나를 크게 당황시키고 놀라게 한 또 다른 순간이 있습니다. Vladimir Karputov가 개발한 스크립트로 차트를 지우려고 했기 때문에 이 스크립트는 이 사용자 지정 표시기 ZigzagColor 를 제외한 모든 것을 완전히 제거했습니다!!! 같은 스크립트로 간단한 지그재그를 지우려고 했는데 지워지지도 않네요! 신비...

안부 인사를 전합니다. 블라디미르.

이 스크립트를 사용해보십시오


 #property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   int window= ChartWindowFind ( 0 , "ZigzagColor" );
   bool res= ChartIndicatorDelete ( 0 ,window, "ZigzagColor" );
//--- проанализируем результат вызова ChartIndicatorDelete()
   if (!res)
     {
       PrintFormat ( "Не удалось удалить индикатор ZigzagColor с окна #%d. Код ошибки %d" ,
                  window, GetLastError ());
     }
  }


 

짧은 이름 ZigzagColor - 기본적으로 이것은 다르게 설정하는 경우 해당 숫자를 입력해야 합니다.

 2020.09 . 29 03 : 41 : 36.604 IndicatorDelete (XAUUSD,M30)    ZigZag( 12 , 5 , 3 )

그게 다야, 당신은 써야합니다

ZigZag( 12 , 5 , 3 )
 
SanAlex :

짧은 이름 ZigzagColor - 기본적으로 이것은 다르게 설정하는 경우 해당 숫자를 입력해야 합니다.

그게 다야, 당신은 쓸 필요가있다

또는 표시기 자체를 변경할 수 있습니다. 더 간단한 이름을 설정하십시오.

 //--- name for DataWindow and indicator subwindow label
   IndicatorSetString ( INDICATOR_SHORTNAME , "ZigZag(" +( string )InpDepth+ "," +( string )InpDeviation+ "," +( string )InpBackstep+ ")" );
   PlotIndexSetString ( 0 , PLOT_LABEL , "ZigzagColor" );
//--- set an empty value

그렇게

 //--- name for DataWindow and indicator subwindow label
   IndicatorSetString ( INDICATOR_SHORTNAME , "ZigZag" );
   PlotIndexSetString ( 0 , PLOT_LABEL , "ZigzagColor" );
//--- set an empty value

-------------------------------------------------- ---

이미 스크립트를 보냈습니다. 이 스크립트를 차트에 놓고 지표의 이름을 설정하지 않으면 둘 이상의 지표를 삭제하지 않고도 작동합니다. 하지만 창 전문가에는 어떤 지표가 있는지 기록합니다.

https://c.mql5.com/3/332/IndicatorDelete.mq5

여기 내가 가진 것이 있습니다

CS       0        03 : 41 : 36.549     IndicatorDelete (XAUUSD,M30)    EWO( 5 , 35 )
DF       0        03 : 41 : 36.604     IndicatorDelete (XAUUSD,M30)    ZigZag( 12 , 5 , 3 )
KR       0        03 : 41 : 36.626     IndicatorDelete (XAUUSD,M30)    LeMan_BrainTrend1Sig
FE       0        03 : 41 : 36.646     IndicatorDelete (XAUUSD,M30)    Hline VSC
RN       0        03 : 41 : 36.666     IndicatorDelete (XAUUSD,M30)    Pivot Lines TimeZone
KG       0        03 : 41 : 36.686     IndicatorDelete (XAUUSD,M30)    Line through two fractals
DL       0        03 : 41 : 36.706     IndicatorDelete (XAUUSD,M30)    sanbox
 
Alekseu Fedotov :

이 스크립트를 사용해보십시오

모두 좋은 하루!

Alexey, 스크립트를 적용했습니다. 그것은 오류 코드 4115를 제공했습니다. 참조 책에서 그것이 의미하는 바를 찾았습니다.

ERR_CHART_INDICATOR_CANNOT_DEL

4115

차트에서 지표를 삭제할 때 오류가 발생했습니다.


안부 인사를 전합니다. 블라디미르.

Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений
  • www.mql5.com
Коды ошибок и предупреждений - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SanAlex :

또는 표시기 자체를 변경할 수 있습니다. 더 간단한 이름을 설정하십시오.

그렇게

-------------------------------------------------- ---

이미 스크립트를 보냈습니다. 이 스크립트를 차트에 놓고 지표의 이름을 설정하지 않으면 둘 이상의 지표를 삭제하지 않고도 작동합니다. 하지만 창 전문가에는 어떤 지표가 있는지 기록합니다.

https://c.mql5.com/3/332/IndicatorDelete.mq5

여기 내가 가진 것이 있습니다

안녕하세요! 스크립트를 사용했습니다. Experts 탭에 Volumes 및 ZigZag(80,20,0)의 두 가지 지표가 나타납니다. 사실 이런 식으로 지그재그 표시기만 어떤 이유로 Color 없이 작성됩니다.

안부 인사를 전합니다. 블라디미르.

 
Alekseu Fedotov :

이 스크립트를 사용해보십시오

브루클린 씨 :

모두 좋은 하루!

Alexey, 스크립트를 적용했습니다. 그것은 오류 코드 4115를 제공했습니다.

안부 인사를 전합니다. 블라디미르.

더 조심했어야 했다.

 bool    ChartIndicatorDelete ( 
   long            chart_id,               // идентификатор графика 
   int             sub_window             // номер подокна 
   const string    indicator_shortname     // короткое имя индикатора 
   );

지표의 이름과 지표의 짧은 이름은 종종 일치하지 않습니다.

 
MrBrooklin :

안녕하세요! 스크립트를 사용했습니다. Experts 탭에 Volumes 및 ZigZag(80,20,0)의 두 가지 지표가 나타납니다. 사실 이런 식으로 지그재그 표시기만 어떤 이유로 Color 없이 작성됩니다.

안부 인사를 전합니다. 블라디미르.

그것이 당신이 필요로하는 것입니다. 다음과 같이 정확히 등록하십시오 - ZigZag (80,20,0)

그렇다면 그는 백 파운드입니다 - 은퇴

------------------

그리고 색상 없이

지표가 그렇게 말하고 있기 때문에

 IndicatorSetString ( INDICATOR_SHORTNAME , "ZigZag(" +( string )InpDepth+ "," +( string )InpDeviation+ "," +( string )InpBackstep+ ")" );

 
SanAlex :

그것이 당신이 필요로하는 것입니다. 다음과 같이 정확히 등록하십시오 - ZigZag (80,20,0)

그렇다면 그는 백 파운드입니다 - 은퇴하십시오

------------------

그리고 색상 없이

지표가 그렇게 말하기 때문에

그리고 설정을 변경하면 표시기에서 설정한 숫자를 작성해야 합니다.

예를 들어

ZigZag( 12 , 5 , 3 )