OnStart関数について

イベント処理の関数

スポンサーリンク
スポンサーリンク

機能

OnStart関数MQL5定義済みイベント(プログラムを動かす重要な起点となる作用)

の処理を担うイベントハンドラ(=プログラムの重要な処理を担当する関数)の一つで、

スクリプト(チャートに挿入後、一度だけ処理を行うプログラム)

の実行を行うの必要な関数です。

()内に、実現させたい処理を記述していきます。

スクリプトとは?→チャートに挿入後、一度だけ処理を行うプログラム

MQL5における「スクリプト」とは、プラットフォームであるMT5上で使用される、単一実行のプログラムです。

スクリプトは、一度実行されると特定の操作を行い、そのタスクが完了すると自動的に停止します。

特定のイベントや条件に基づいて自動的に反復実行されるEAや、市場の価格変動を表示するインジケータとは異なり、一度だけ実行されます。

例えば、

  • データ分析や計算の実行
  • アカウント情報や価格データの取得

などの用途に使われたりします。

引数

なし

引数についてはコチラのリンクをご覧ください。

戻り値

なし

戻り値についてはコチラを下記の記事をご覧ください。

備考

クライアント端末のイベントハンドラは、戻り値とパラメータの型によって、各イベントハンドラ関数を識別します。以下の説明に対応していないパラメータが指定された場合、また別の戻り値の型が使用された場合、その関数はイベントハンドラとして使用されません。

MQL5リファレンス

↑要は、間違った設定をしたら使えませんよってことを言っています。

引数(=パラメーター)を入れたり、戻り値を返すような記述をしてはいけません。

スクリプトやサービスを処理するための関数なので、EAおよびカスタム指標の記述に使うことはできません。

サンプルコード

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
      //フィボナッチ数列の計算終点
  int countFibo=15;
  
  //計算に必要な変数の宣言
  int iCounter=0,first=0,second=1;
  
  //フィボナッチを格納する変数
  int nowFiboNum;
  do
    {
     nowFiboNum=first+second;
    Print("iCounter = ",iCounter,"  フィボナッチ数 = ",nowFiboNum," flag=",IsStopped());
     first=second;
     //firstにsecondの値を代入
     second=nowFiboNum;
    //secondに nowFiboNumの値を代入

     iCounter++;//1増加 (この演算子がない場合、無限ループが発生)
     
    
    }
  
  while(iCounter<countFibo && !IsStopped());
  //15未満で、終了フラグが出ていない間はループする
   
  }//do
  
//+------------------------------------------------------------------+

結果↓

Print関数については↓をご覧ください

コメント

タイトルとURLをコピーしました