OnTick関数について

イベント処理の関数
スポンサーリンク
スポンサーリンク

機能

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

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

エキスパートアドバイザーの作成時にのみ利用します。

(=カスタムインジケ-タスクリプトの作成時には使えません)

ティック、すなわち値動きの変化を受信するたびに

カーリーブラケット(={})内の処理を実行します。

もっとも、頻繁に利用されるイベントハンドラーといっていいでしょう。

void OnTick();

引数

なし

戻り値

なし

備考

Tick イベントは、エキスパートアドバイザーのために生成されますが、エキスパートアドバイザーには NewTick イベントの他に Timer、BookEvent とChartEvent も生成されるので、エキスパートアドバイザーが 必ずしも OnTick() 関数を必要とするわけではありません。この関数は void 型でパラメータを持ちません。

MQL5リファレンス

↑ 値動きの変化だけじゃなく、

時間の変化 、情報の変化、チャートの変化

に応じて作用する関数も用意しているから、「それ使ってEA作ってもいいよー」

という事を言っています。

サンプルコード

以下のサンプルコードはTerminal>Common>ディレクトリのFilesフォルダにあるSignal.txtというテキストファイルがあることを前提としたものです。


#include <Trade\Trade.mqh>
//ファイルのインクルード

CTrade trade;
//クラスオブジェクトの宣言

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
      double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
      //チャートの値の取得と正規化
      
      int ExternalFile=FileOpen("Signal.txt",
      FILE_READ|FILE_ANSI|FILE_COMMON,
      '|',
      CP_ACP);
      //テキストファイルを開き、ファイルハンドルを取得
      
      string BuySignal=FileReadString(ExternalFile);
      //Terminal>Common>Filesフォルダにあるテキストを読み取る
      
      FileClose(ExternalFile);//ファイルを閉じる
      
      if(PositionsTotal()==0 && BuySignal=="BUY IT NOW")//読み取った中に"BUY IT NOW"があれば
      {
         trade.Buy(0.1,NULL,Ask,0,Ask+100*_Point,NULL);//買い注文
         
      }//if(PositionsTotal()==0 && BuySignal=="BUY IT NOW")
      
      Comment("BuySignal",BuySignal,"PositionsTotal:",PositionsTotal());//コメント表示
   
  }
//+------------------------------------------------------------------+

FileReadString関数についてはこちらをご覧ください↓

コメント

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