通貨ペア情報について。
EA(自動売買プログラム)を作成するにあたり、取引対象となる通貨ペアを把握することは重要になってきます。
スプレッドや、AskやBidの、スワップ値・・・等、自明なものから、「そんな情報があったんだ!」というものまでたくさんあります。
自明なものだろうが、マニアックなものであろうが、それは人間が認識する時の経験則に基づいた切り分けであって、コンピュータにはそのような区別はできませんから、適切なコーディングを行って、それらを伝える必要があります。
通貨ペア情報をPCに正確に伝達することは、自分のEAを思惑通りに動作させる肝となります。
取得した通貨ペア情報を各種変数に格納し、それをコメント出力して可視化する事によって、プログラムに不備がないかどうかを突合することが容易になります。
通貨ペア情報を取得するには、SymbolInfoInteger(),SymbolInfoDouble(),SymbolInfoString()などの、SymbolInfo…関数を使います。
通貨ペア情報のチャート表示のロードマップ
以下の手順でコードを記述していきます
OnTick()内に必要な通貨ペア情報を取得する記述を行う
今回はSymbolInfoIntegerとSymbolInfoDouble関数を使っていきます。
第1引数に、チャートにセットする通貨ペア、
第2引数に、取得したい通貨ペアプロパティを指定します。
下記サンプルコード以外にもたくさんあるので、
お暇なときに、MQL5リファレンスのシンボルプロパティを参照頂ければと思います。
void OnTick()
{
//スプレッド情報を取得
long spreadInfo=SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
//現在値(買い)を取得
double askInfo=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
//スワップ情報(買い)を取得
double swapLongInfo=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_LONG);
//スワップ情報(売り)を取得
double swapShortInfo=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_SHORT);
//1日の最高直近価格を取得
double lastHighInfo=SymbolInfoDouble(_Symbol,SYMBOL_LASTHIGH);
//1日の最低直近価格を取得
double lastLowInfo=SymbolInfoDouble(_Symbol,SYMBOL_LASTLOW);
//約定に必要な最小ボリューム情報を取得
double minVolumeInfo=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
//約定可能な最大ボリューム情報を取得
double maxVolumeInfo=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
//ボリュームのステップ幅(=約定エラーにならない最小限の変化幅)情報を取得
double volumeStepInfo=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
コメント関数を使って、取得した通貨ペア情報をチャート上に表示する記述を行う
Comment関数を使ってチャート上に表示が必要なデータを記述していきます。
★”\n”というのは「改行」を実現させる為の記述です。
この記述を入れると該当箇所の部分で改行がなされます。
Comment(
"スプレッド: ",spreadInfo,"\n",
"現在値(買い): ",askInfo,"\n",
"スワップ情報(買い): ",swapLongInfo,"\n",
"スワップ情報(売り): ",swapShortInfo,"\n",
"1日の最高直近価格: ",lastHighInfo,"\n",
"1日の最低直近価格: ",lastLowInfo,"\n",
"約定に必要な最小ボリューム: ",minVolumeInfo,"\n",
"約定可能な最大ボリューム: ",maxVolumeInfo,"\n",
"ボリュームのステップ幅: ",volumeStepInfo,"\n"
);//Comment
}//void OnTick()
全体のプログラムコード
#property copyright "MQL5ssei"
#property link "https://mqlinvestmentlab.com/"
#property strict
//+-----------------------------
void OnTick()
{
//スプレッド情報を取得
long spreadInfo=SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
//現在値(買い)を取得
double askInfo=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
//スワップ情報(買い)を取得
double swapLongInfo=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_LONG);
//スワップ情報(売り)を取得
double swapShortInfo=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_SHORT);
//1日の最高直近価格を取得
double lastHighInfo=SymbolInfoDouble(_Symbol,SYMBOL_LASTHIGH);
//1日の最低直近価格を取得
double lastLowInfo=SymbolInfoDouble(_Symbol,SYMBOL_LASTLOW);
//約定に必要な最小ボリューム情報を取得
double minVolumeInfo=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
//約定可能な最大ボリューム情報を取得
double maxVolumeInfo=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
//ボリュームのステップ幅(=約定エラーにならない最小限の変化幅)情報を取得
double volumeStepInfo=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
Comment(
"スプレッド: ",spreadInfo,"\n",
"現在値(買い): ",askInfo,"\n",
"スワップ情報(買い): ",swapLongInfo,"\n",
"スワップ情報(売り): ",swapShortInfo,"\n",
"1日の最高直近価格: ",lastHighInfo,"\n",
"1日の最低直近価格: ",lastLowInfo,"\n",
"約定に必要な最小ボリューム: ",minVolumeInfo,"\n",
"約定可能な最大ボリューム: ",maxVolumeInfo,"\n",
"ボリュームのステップ幅: ",volumeStepInfo,"\n"
);//Comment
}//void OnTick()
サンプルコードの挙動は以下のようになります。
最後までお読みいただきありがとうございました<(_ _)>
※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる
をメインコンテンツとして展開しています。
第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。
コメント