恥は/dev/nullへ by 初心者

プログラミング素人がのろのろと学んだことをつづっています♪

開いているチャートの数をカウントする

やっていることは大したことないのですが、たまに他のチャートの情報を取ってくることがあるので、開いているチャートの数に応じた動作をするスクリプトをブログに貼り付けておくことにしました。(ここからコピペして使おうと思います)。

 

以下のコードは開いているチャートの数を数えます。

#property copyright "Copyright 2020. PHILOJUAN"
#property link      "https://uhoho.hatenablog.jp/"
#property version   "1.00"
#property strict

void OnStart()
{
    int  counter = 1;  // チャートの数
    // [備考] 1つもチャートが無い状態では、EAもインジもスクリプトも実行できない
    //        ので必ず1つはチャートを開いている。

    // 2つ目のチャートのIDをnextChartに代入
    // [備考] 2つ目のチャートが無い場合は、-1が代入される
    long nextChart = ChartNext(ChartFirst());

    while(nextChart != -1){
        counter++;
        nextChart = ChartNext(nextChart);
    }

    printf("チャートの個数は: %d", counter);

}

 

for文の例

実際に使う場合は、for文でループさせる気がします。

void OnStart()
{
    int n = 1;
    for(long nextchart = ChartNext(ChartFirst()); nextchart != -1; nextchart = ChartNext(nextchart)){
        printf("%d回目", n);
        n++;
    }
    // このコードを実行すると「チャートの数 - 1」回だけループすることが分かる。
    // チャートの数だけループするわけではない点に注意。
}