1. ChartYOnDropped関数の概要と実務での活用法
MQL5のChartYOnDropped関数は、プログラム(EA、スクリプト、インジケーター)がチャート上のどの高さ(Y座標)にドラッグ&ドロップされたかを取得するための関数です。
戻り値は「ピクセル単位」の数値です。FXの価格(Price)ではなく、画面上の座標としての「上からの距離」を返します。
実務での活用シーン
実務開発において、この関数は「ユーザーの直感的な操作」をトリガーにした初期設定によく使われます。
– ドラッグした位置にストップロスやテイクプロフィットを自動配置する
– 特定の価格帯を狙った指値注文を、プログラムを投げ入れた瞬間に発注する
– GUIのパネルやボタンの初期表示位置を、マウスで落とした場所に合わせる
初心者がつまずきやすいポイント
最も多い間違いは、「この関数で取得できるのは『価格』である」という勘違いです。ChartYOnDroppedはあくまで「ピクセル(Y座標)」を返すため、実際のチャート上の価格を知りたい場合は、ペアとなるChartPriceOnDropped関数を使用するか、座標から価格への変換処理を行う必要があります。
2. 構文と戻り値
ChartYOnDropped関数の仕様は非常にシンプルです。
double ChartYOnDropped();
- 引数: なし
- 戻り値: プログラムがドロップされた位置のY座標(ピクセル単位)。
- 補足: 座標系はチャートウィンドウの左上を(0,0)とし、下に向かって数値が大きくなります。
3. 具体的な使い方・実践サンプルコード
以下は、スクリプトをチャートにドロップした際、その場所の「Y座標」と、それを変換して得られた「価格」をチャート上に水平線として描画する実践的なコード例です。
//+------------------------------------------------------------------+
//| SampleChartYOnDropped.mq5 |
//| Copyright 2023, Quant Engineer |
//+------------------------------------------------------------------+
#property script_show_inputs
//--- スクリプト開始時の処理
void OnStart()
{
// 1. ドロップされた位置のY座標(ピクセル)を取得
double dropY = ChartYOnDropped();
// 2. ドロップされた位置の価格を取得(ChartPriceOnDroppedを使用)
// ※ピクセルから価格を計算することも可能ですが、MQL5には専用関数があります
double dropPrice = ChartPriceOnDropped();
// 3. 取得した情報の確認
PrintFormat("ドロップされた位置のY座標: %.0f ピクセル", dropY);
PrintFormat("ドロップされた位置の価格: %f", dropPrice);
// 4. 視覚的に分かりやすくするため、その場所に水平線を引く
string lineName = "DropLine_" + TimeToString(TimeCurrent());
if(ObjectCreate(0, lineName, OBJ_HLINE, 0, 0, dropPrice))
{
ObjectSetInteger(0, lineName, OBJPROP_COLOR, clrRed);
ObjectSetInteger(0, lineName, OBJPROP_WIDTH, 2);
Alert("ドロップ位置(Y:", dropY, ")に水平線を引きました。価格: ", dropPrice);
}
else
{
Print("オブジェクトの作成に失敗しました。");
}
}
このコードをスクリプトとして保存し、チャートの任意の場所にドラッグ&ドロップしてみてください。投げ入れた瞬間の高さに合わせて、正確にラインが引かれるのが確認できるはずです。
4. 使用上の注意点とよくあるエラー
① 実行タイミングの制約
ChartYOnDroppedは、プログラムがチャートに投入された瞬間(ロード時)の値を保持します。実行中にマウスを動かしても、この値は更新されません。リアルタイムのマウス位置を取得したい場合は、OnChartEvent関数内でCHARTEVENT_MOUSE_MOVEをハンドリングする必要があります。
② サブウィンドウでの挙動
複数のインジケーターウィンドウ(サブウィンドウ)が表示されている場合、メインウィンドウからの相対的な座標が返されます。座標計算を自作する場合は、どのウィンドウにドロップされたかを意識する必要があります。
③ 価格への変換
ピクセル座標(Y)を価格(Price)に手動で変換する場合、チャートのズーム倍率や表示範囲によって計算式が変わります。基本的にはChartPriceOnDroppedを併用するのが最も安全で確実です。
5. 【重要】自動売買における約定スピードと環境の罠
アルゴリズムトレードの世界において、ロジックと同じくらい重要なのが「実行環境」です。どれほど優れたEAを開発し、ChartYOnDroppedなどで直感的な操作を実現したとしても、自宅のPCや一般的な光回線で運用を続けるのは技術的に非常にリスクが高いと言わざるを得ません。
FXの価格はミリ秒(1000分の1秒)単位で変動しています。自宅PCからの注文は、プロバイダのネットワークや家庭内Wi-Fiの不安定さを経由するため、証券会社のサーバーに届くまでに大きな遅延(レイテンシ)が発生します。この数ミリ秒の遅れが原因で、表示価格と実際の約定価格がズレる「スリッページ」が起き、本来得られるはずだった利益が削られ、あるいは損失が拡大する致命的な結果を招きます。
プロのクオンツエンジニアが例外なく専用のVPS(仮想専用サーバー)を利用するのは、物理的に証券会社のサーバーに近いデータセンターにシステムを置くことで、このネットワーク遅延を極限まで排除するためです。安定した電源と24時間稼働の信頼性、そして何より「最速の注文スピード」を確保することは、シストレ開発者にとっての最低限のインフラ投資と言えます。
💡 この記事の内容を実運用で活かすには?
この記事の内容を実運用で活かすには、正しい環境が必要です。
特にVPSを使わないと、このロジックは再現できません。

コメント