OnStart()の利用方法
MQL4 (MT4)のOnStart()の使い方をChatGPTに確認しました。
使用GPTs:EA Creator
MT4 MQL4のOnStartの利用方法を実装例を交えて教えて下さい。補足で気を付ける点なども教えて下さい。
回答
OnStart
はMetaTrader 4 (MT4) プラットフォームのMQL4言語において、主にカスタムインジケータやスクリプトで使用されるエントリーポイント(開始点)関数です。OnStart
関数はスクリプトが実行されるときに一度だけ呼び出され、スクリプトのメインロジックを含む部分です。この関数は、特に一回限りの操作や計算を実行するスクリプトで使用されます。
OnStart関数の基本形式
void OnStart()
{
// ここにスクリプトのコードを記述します
}
使用例:単純な注文送信スクリプト
以下の例は、OnStart
関数を使用して特定の通貨ペアに対して市場注文を送信する簡単なスクリプトです。
void OnStart()
{
// EURUSDに対して0.1ロットの買い注文を送信
string symbol = "EURUSD";
double lotSize = 0.1;
double price = Ask; // 現在のAsk価格を取得
int slippage = 2;
double stopLoss = 0; // ストップロスは設定しない
double takeProfit = 0; // テイクプロフィットは設定しない
int ticket = OrderSend(symbol, OP_BUY, lotSize, price, slippage, stopLoss, takeProfit, "My first script order", 0, 0, clrNONE);
if(ticket < 0)
{
Print("注文送信に失敗しました。エラー番号: ", GetLastError());
}
else
{
Print("注文送信成功。チケット番号: ", ticket);
}
}
注意点
- エラーハンドリング:注文送信(
OrderSend
)が失敗した場合、GetLastError
関数を使用してエラーコードを取得し、失敗の原因を特定します。 - 価格の取得:市場注文を送信する前に、最新の
Ask
(買い注文の場合)またはBid
(売り注文の場合)価格を取得することが重要です。 - スリッページの設定:スリッページは、注文が実行される価格と要求された価格の最大許容差を指します。市場のボラティリティが高い時に注文滑りを防ぐために重要です。
OnStart
の使用シナリオ:OnStart
関数はスクリプトに特有のもので、EA(Expert Advisor)やカスタムインジケータでは使用しません。EAではOnInit
,OnDeinit
,OnTick
などの他のイベントハンドラが使用されます。
OnStart
を使用するスクリプトは、MT4のナビゲータウィンドウから直接実行することができ、分析や取引の自動化に役立つツールや一回限りの操作を素早く実行するのに適しています。
MQL4リファレンス
正式な仕様は”MQL4 Reference“をご確認下さい。上記内容を確認しておくとより分かりやすいかと思います。
リンク:https://docs.mql4.com/basis/function/events#onstart
他のイベントハンドリング関数の利用方法
以下のそれぞれのリンク先で確認していますので、ご参照ください。
関数名 | 概要 |
---|---|
OnInit | エキスパートアドバイザーやインジケータがチャートに読み込まれた時に一度だけ呼ばれる初期化関数です。初期設定やリソースの準備に使用されます。 |
OnDeinit | エキスパートアドバイザーやインジケータがチャートから削除される時、またはMT4が閉じられる時に呼ばれる終了関数です。使用したリソースの解放などの後処理に使用されます。 |
OnStart | スクリプトが実行された時に呼ばれる関数です。エキスパートアドバイザーでは使用されません。 |
OnCalculate | カスタムインジケーターが新しい価格データを受け取った時に呼ばれる関数です。価格データの分析やインジケーター値の計算に使用されます。 |
OnTick | 新しい市場のティックデータ(価格更新)が到着した時にエキスパートアドバイザーによって呼ばれる関数です。トレードの決定や価格分析に使用されます。 |
OnTimer | 設定された時間間隔で定期的に呼ばれる関数です。定期的なタスクの実行や状態のチェックに使用されます。 |
OnTester | バックテスト中に呼ばれる関数です。バックテストの最後に特定の処理を行うために使用されます。 |
OnChartEvent | チャートイベント(マウス操作、キーボード入力、カスタムイベント)が発生した時に呼ばれる関数です。ユーザーの操作に応じた処理やインタラクティブな機能の実装に使用されます。 |
コメント