MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1419

 
Alexey Viktorov :

아니면 문서를 더 자세히 읽는 것이 더 나을까요?

CHART_BRING_TO_TOP

다른 모든 항목 위에 그래프 표시

부울 w/o


이것은 이 속성이 쓰기 전용임을 의미합니다. 읽으려고 하는건지...

또한 질문에 대한 완전한 답변을 제공하지 않습니다.

이것은 스크립트 또는 지표입니다.
이것은 지표입니다. 그리고 그는 창을 변경할 때 즉시 결과를 인쇄합니다. 즉, 읽을 수 있습니다.
 
Valeriy Yastremskiy :

그리고 나는 Vile의 본질을 이해하지 못합니다. 조건은 항상 참입니다.

조건은 항상 참이지만 그래프의 수는 알 수 없음

 
Valeriy Yastremskiy :

무슨 일이 일어나고 있는지 이해하지 못하면 내가 가진 모든 것을 인쇄하고 때로는 도움이됩니다. 그리고 나는 Vile의 본질을 이해하지 못합니다. 조건은 항상 참입니다.

무엇이든 정적으로 만들어야합니다. 그렇지 않으면 재설정됩니다.

 string symbol, printsimbol= "" ;
       long currChart= ChartFirst (); int i= 0 ;
       while (currChart>= 0 )
        {
 
MakarFX :
이것은 지표입니다. 그리고 그는 창을 변경할 때 즉시 결과를 인쇄합니다. 즉, 읽을 수 있습니다.

당신은 어떤 종류의 쓰레기가 읽히고 있다고 생각하지 않습니까? 불변하지만 여전히 쓰레기입니다.

일정을 변경할 때 이것을 인쇄해 보십시오. 그런 다음 활성 일정이 어떻게 변경되는지 아는 것이 중요합니다. 지표가 맨 왼쪽 차트에 있으면 오른쪽의 다음 차트로 이동하고 맨 오른쪽으로 이동하여 무작위로 전환합니까? 아니면 지표가 있는 차트에서 출발을 추적하고 그 차트로 돌아갈 필요가 있습니까?

 
Alexey Viktorov :

당신은 어떤 종류의 쓰레기가 읽히고 있다고 생각하지 않습니까? 불변하지만 여전히 쓰레기입니다.

일정을 변경할 때 이것을 인쇄해 보십시오. 그런 다음 활성 일정이 어떻게 변경되는지 아는 것이 중요합니다. 지표가 맨 왼쪽 차트에 있으면 오른쪽의 다음 차트로 이동하고 맨 오른쪽으로 이동하여 무작위로 전환합니까? 아니면 지표가 있는 차트에서 출발을 추적하고 그 차트로 돌아갈 필요가 있습니까?

무엇을 읽고 있는지 모르지만 인쇄된 것은 필요한 것입니다

 2021.03 . 16 09 : 33 : 25.650 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 33 : 25.148 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 33 : 24.647 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 33 : 24.145 Label USDCHF,M15: GBPCHF
2021.03 . 16 09 : 33 : 23.644 Label USDCHF,M15: GBPCHF
2021.03 . 16 09 : 33 : 23.142 Label USDCHF,M15: GBPCHF
2021.03 . 16 09 : 33 : 22.641 Label USDCHF,M15: USDCHF
2021.03 . 16 09 : 33 : 22.155 Label USDCHF,M15: USDCHF
2021.03 . 16 09 : 33 : 21.654 Label USDCHF,M15: USDCHF
2021.03 . 16 09 : 33 : 21.152 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 33 : 20.651 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 33 : 20.149 Label USDCHF,M15: EURGBP

모든 차트(가장 왼쪽, 오른쪽, 가운데) 및 일정 변경 순서에서 작동

노력하다

 //+------------------------------------------------------------------+
//|                                                        Label.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   EventSetMillisecondTimer ( 500 );
//--- indicator buffers mapping
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- destroy timer
   EventKillTimer ();
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
       string symbol01;
       long currChart= ChartFirst (); int i= 0 ;
       while (currChart>= 0 )
        {
         if ( ChartGetInteger (currChart, CHART_BRING_TO_TOP , 0 )== true ) 
           { 
            symbol01= ChartSymbol (currChart);       Print (symbol01);
           } 
         currChart= ChartNext (currChart);  i++;
        }
//--- 
  }
//+----------------------------------------------------------------------------+
 

그랬어

 //+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
       long currChart= ChartFirst (); int i= 0 ;
       while (currChart>= 0 )
        {
         if ( ChartGetInteger (currChart, CHART_BRING_TO_TOP , 0 )== true ) 
           { 
            symbol01= ChartSymbol (currChart);
           } 
         currChart= ChartNext (currChart);  i++;
        }
   PrintLabel();
//--- 
  }
//+----------------------------------------------------------------------------+
void PrintLabel()
  {
   if (symbol02!=symbol01){symbol02=symbol01; Print (symbol02);}
   return ;
  }

결과

 2021.03 . 16 10 : 00 : 05.075 Custom indicator Label USDCHF,M15: removed
2021.03 . 16 10 : 00 : 05.060 Label USDCHF,M15: uninit reason 1
2021.03 . 16 10 : 00 : 00.046 Label USDCHF,M15: USDCHF
2021.03 . 16 09 : 59 : 55.486 Label USDCHF,M15: EURCAD
2021.03 . 16 09 : 59 : 54.498 Label USDCHF,M15: CADCHF
2021.03 . 16 09 : 59 : 53.511 Label USDCHF,M15: EURGBP
2021.03 . 16 09 : 59 : 52.994 Label USDCHF,M15: GBPCHF
2021.03 . 16 09 : 59 : 51.991 Label USDCHF,M15: EURUSD
2021.03 . 16 09 : 59 : 48.945 Label USDCHF,M15: USDCHF
2021.03 . 16 09 : 59 : 48.428 Label USDCHF,M15: initialized
2021.03 . 16 09 : 59 : 47.046 Custom indicator Label USDCHF,M15: loaded successfully

도와주셔서 감사합니다!!!

 
MakarFX :

무엇을 읽고 있는지 모르지만 인쇄된 것은 필요한 것입니다

모든 차트(가장 왼쪽, 오른쪽, 가운데) 및 일정 변경 순서에서 작동

노력하다

1 또는 0으로 표시됩니다. 이것이 얼마나 신뢰할 수 있는지 모르겠지만 놀랍게도 작동합니다 ...

그렇다면 여기 해결책이 있습니다

 /***************************Timer function***************************/
void OnTimer ()
 {
   static long chart_ID = 0 ;
   string symbol01;
   long currChart = ChartFirst ();
   while (currChart >= 0 )
   {
     if ( chart_ID != ChartGetInteger (currChart, CHART_WINDOW_HANDLE ) && ChartGetInteger (currChart, CHART_BRING_TO_TOP , 0 ) == 1 )
     {
       chart_ID = ChartGetInteger (currChart, CHART_WINDOW_HANDLE );
      symbol01 = ChartSymbol (currChart);
       Print (symbol01, " " , EnumToString ( ChartPeriod (currChart)), " " , chart_ID);
     }
    currChart = ChartNext (currChart);
   }
 } /*******************************************************************/
 
MakarFX :

그랬어

결과

도와주셔서 감사합니다!!!

같은 기호 또는 그 이상의 차트가 2개 있는 경우,


그러면 작동하지 않을 것입니다

 
MakarFX :

무엇을 읽고 있는지 모르지만 인쇄된 것은 필요한 것입니다

모든 차트(가장 왼쪽, 오른쪽, 가운데) 및 일정 변경 순서에서 작동

노력하다

 void OnTimer ()
{
   long currChart= 0 ,prevChart= ChartFirst ();
   int i= 0 ,limit= 100 ;
   static long CurrID;
   while (i<limit) { // у нас наверняка не больше 100 открытых графиков
      currChart= ChartNext (prevChart); // на основании предыдущего получим новый график
       if ( ChartGetInteger (currChart, CHART_BRING_TO_TOP ))
         break ;
       if (currChart< 0 ) break ;           // достигли конца списка графиков
      prevChart=currChart; // запомним идентификатор текущего графика для ChartNext()
      i++; // не забудем увеличить счетчик
   }
   if (CurrID!=currChart) {
       Print ( ChartSymbol (currChart));
      CurrID=currChart;
   }
}


PS 작성하는 동안 코드는 이미 스케치되어 있습니다. :)

 
Alexey Viktorov :

1 또는 0으로 표시됩니다. 이것이 얼마나 신뢰할 수 있는지 모르겠지만 놀랍게도 작동합니다 ...

그렇다면 여기 해결책이 있습니다

작동합니다. 감사합니다.

비탈리 무지첸코 :


PS 작성하는 동안 코드는 이미 스케치되어 있습니다. :)

첫 번째 차트 창을 건너뜁니다.

알렉세이 빅토로프 :

같은 기호 또는 그 이상의 차트가 2개 있는 경우,

그러면 작동하지 않을 것입니다

제대로 작동합니다. Essence - 기호가 교체된 경우 인쇄합니다!