MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1418

 
Valeriy Yastremskiy:

ブーリアンオプションの方が好きです

それがここにどう当てはまるのか、よくわからないのですが。

もしよろしければ、私のコードをいじっていただけませんか?

      string symbol;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart); Print(symbol);
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
なぜかというと、Vitalyは良いコードを書いたからです。彼はi++を正しい場所に持っている。このコードはどのように機能するのでしょうか?
 
MakarFX:

Print() で値変更時に一度だけ印刷する方法を教えてください。

どのような場合に値が変化するのか?

 
MakarFX:

ここでどう応用できるのか、よくわからないのですが

私のコードに手を加えることは可能でしょうか?

string symbol, printsimbol="";
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart);if(printsimbol!=symbol) Print(symbol);printsimbol=symbol;
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
MakarFX:

ここでどう応用できるのか、よくわからないのですが

私のコードは、無理のない範囲で修正することができますか?

この構成がどこでどのように呼び出されるのか、詳細は指定されていません。

この場合、必要なチャートが見つかり、それが唯一のものであるならば、無理に端末を操作しないように、すぐに、ブレークを行います。

チャートを見つけ、それを記憶し、二度とその構成要素を呼び出さないようにする。タスクにもよるが、イベントで呼ぶのがベストだろう。

 
Aleksei Stepanenko:

というのは、どのような値が変化するのか?

アクティブなチャートウィンドウが変更されたとき、アクティブなチャートシンボルを表示する機能です。

Vitaly Muzichenko:

このコンストラクトがどこでどのように呼び出されるのか、詳細は指定されていません。

この場合、必要なチャートが見つかり、かつ、そのチャートが1つしかない場合は、無理に端末を操作しないように、一旦、区切りをつける。

チャートを見つけ、それを記憶し、二度とその構成要素を呼び出さないようにする。おそらく、タスクにもよりますが、イベントで呼び出すのが一番いいと思います。

すみません、この関数は...で呼び出されます。

//+------------------------------------------------------------------+
//| 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++;
        }
//--- 
  }
Valeriy Yastremskiy:

残念ながら、それもうまくいきません。エンドレスに印刷する(

 
MakarFX:

アクティブなチャートウィンドウが変更されたとき、アクティブなチャートシンボルを表示する機能です。

すみません、この関数は...で呼び出されます。

残念ながら、それもうまくいきません。無限にプリントされる(

これはどうでしょう?- のみで、プリント時に一度だけシグナルを出します。

//+------------------------------------------------------------------+
//|                                                         0001.mq5 |
//|                        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"
int ticks_to_close=1; // количество тиков
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   if(!EventSetTimer(1))
      Alert("Error create timer!");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  }
//+------------------------------------------------------------------+
//| 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);
           {
            if(ticks_to_close>0)
              {
               ticks_to_close--;
               Print(symbol01);
              }
           }
        }
      currChart=ChartNext(currChart);
      i++;
     }
//---
  }
//+------------------------------------------------------------------+
 
SanAlex:

これはどうでしょう?- のみで、プリント時に一度だけシグナルを出します。

間違っている。起動時に一度だけ印刷されます。スケジュールを変更しても何もしない。
 
MakarFX:

アクティブなチャートウィンドウが変更されたとき、アクティブなチャートシンボルを表示する機能です。

すみません、この関数は...で呼び出されます。

残念ながら、それもうまくいきません。無限にプリントされる(

それとも、ドキュメントをもっとよく読んだ方がいいのかな?

チャートトップ

他のチャートの上にチャートを表示する

ブール


これは、このプロパティが書き込み専用であることを意味する。そして、それを読もうとしているあなた......。

さらに、あなたは質問に対して完全な回答をしていません。

スクリプトやインジケータである。
 
MakarFX:

アクティブなチャートウィンドウが変更されたとき、アクティブなチャートシンボルを表示する機能です。

すみません、この関数は...で呼び出されます。

残念ながら、それもうまくいきません。延々とプリントされる(

わからないことがあれば、手持ちのものを全部印刷する、それが役に立つこともある。そして、ヴェールの本質が理解できない。条件は常に真である。

string symbol, printsimbol="";
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart);if(printsimbol!=symbol) Print(symbol," ",ChartSymbol(currChart)," ",printsimbol,
" ",currChart," ",ChartFirst()," ",ChartNext(currChart)," ",ChartGetInteger(currChart,CHART_BRING_TO_TOP,0));
printsimbol=symbol;
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }