機能
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関数についてはこちらをご覧ください↓
コメント