//---------------------------------------------------------------------------- // Spread History インジケーター // 取扱説明書 // // Copyright (c) 2024, HANDY SYSTEMS // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // // バージョン履歴: // 2023/04/13:1.0 新規作成 //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // 概要 //---------------------------------------------------------------------------- Spread Historyは、MetaTrader 4 (MT4)用のカスタムインジケーターです。 通貨ペアのスプレッド(売値と買値の差)の履歴を表示します。 ティックデータを使用して、リアルタイムのスプレッドを表示するだけでなく、 過去のスプレッドも推定値として表示します。 //---------------------------------------------------------------------------- // インストール方法 //---------------------------------------------------------------------------- インジケーターのソースファイル(Spread History.mq4)をMetaEditor4でコンパイル して出力されたインジケーターファイル(Spread History.ex4)を、ご使用のMT4の インジケーターフォルダにコピーしてください。 通常は、インジケーターフォルダは以下のような場所にあります。 C:\Program Files\MetaTrader 4\MQL4\Indicators //---------------------------------------------------------------------------- // 使用方法 //---------------------------------------------------------------------------- MT4のチャートを開き、インジケーター挿入メニューから「Spread History」を選択して チャートに適用します。 インジケーターウィンドウに、 ・青い実線で実際のスプレッド値(リアルタイムで取得) ・赤い点線で推定スプレッド値(ヒストリーから算出) が表示されます。 //---------------------------------------------------------------------------- // パラメータ //---------------------------------------------------------------------------- ・STR_IndicatorName  インジケーターの名前を設定します。  デフォルトは「Spread History」です。 //---------------------------------------------------------------------------- // 内部ロジック //---------------------------------------------------------------------------- ・リアルタイムのティックデータを使用して、最新のスプレッド値を取得し表示します。 ・過去のスプレッド値は、ローソク足のHigh値とLow値から推定します。 ・通貨ペアの小数点以下の桁数に応じて、スプレッド値を調整します。 ・実際のスプレッド値が保存されている場合は、その値を使用します。 ・保存されていない場合は、推定値を計算して表示します。 //---------------------------------------------------------------------------- // 使用上の注意 //---------------------------------------------------------------------------- ・このインジケーターは、スプレッドの履歴を表示するためのものであり、売買機能や  トレードシグナルを提供するものではありません。 ・推定スプレッド値は、ローソク足のHigh値とLow値から計算された推定値であるため、  実際のスプレッド値と異なる場合があります。 ・スプレッドは、市場の流動性やボラティリティの影響を受けるため、時間帯によって  大きく変動する可能性があります。 ・このインジケーターは、デモ口座およびリアル口座の両方で使用できますが、過去のデ  ータが十分にない場合、推定値の精度が低くなる可能性があります。 ・Windowsのスリープなどにより、MT4が非アクティブになった場合は、再アクティブ化の  際に青い実線で実際のスプレッド値が失われてしまう場合があります。その対策として、  長時間稼働させる環境では、スリープを無効にすることを推奨します。 //---------------------------------------------------------------------------- // 開発者からのメッセージ //---------------------------------------------------------------------------- ・このインジケーターは、EA開発の補助ツールとして作成されたものです。  現在、スキャルピング系のEAの開発を行っており、その際に各ブローカーの  スプレッド(特に日本時間早朝時間帯)の実績値を確認するため、作成しました。 ・開発用PCなど、常時稼働でないPC環境で動作させると、インジケーターのグラフが  赤線の推定値のみになってしまいますが、この現象はMT4およびMQL4の制約による  ものです。 ・インジケーターのOnCalculateのパラメータとして、spread[]という配列変数が  存在します。この変数には過去のスプレッド実績値の履歴が代入されて渡される  ものと推測しておりましたが、実際のMT4で動作させると空の配列が渡されてきます  (Tradeview、TitanFX、ThreeTrader、XMTradingのいずれも、空の配列となる)。  おそらくMT5では配列に値が入ると想像しています。 ・また、MQL5ではiSpread()という、iOpen()、iClose()と同様のシフトバー値を指定  することで過去のスプレッド実績値を取得する関数があるようですが、こちらも  MQL4ではコンパイルできないため、使用できません。 ・そのため、MT4では実績値の取得は最低限に止めざるを得ませんでした。その旨を  あらかじめご理解いただいた上で、必要であればVPS等の常時稼働環境で動作させて  いただけましたら幸いです。 (*eod*)