スプレッドが規定値以下であるかを確認する関数です。
発注前に実行することでスプレッドが拡大した状態でのエントリーを避けることができます。
bool checkSpread(
double max_spread_pips,
string symbol=NULL
);
パラメータ
max_spread_pips
許容する最大スプレッド値。
単位はpips単位で指定。
symbol
スプレッドを判定する通貨ペア名を指定。
このパラメータは省略可能です。
省略された場合にはプログラムが適用されているチャートの通貨ペアにて計算が行われます。
戻り値
現在のスプレッドが規定値以下であればtrue, 規定値を超えていればfalse
ソースコード
bool checkSpread(double max_spread_pips, string symbol=NULL){
// 通貨ペアの指定が無かった場合はチャートの通貨ペアで計算
if(symbol == NULL){
symbol = Symbol();
}
// スプレッドを取得
double spread = MarketInfo(symbol, MODE_SPREAD);
// 単位を揃える
if(Digits == 3 || Digits == 5){
max_spread_pips *= 10;
}
// スプレッド判定
if(spread > max_spread_pips){
return(false);
}
return(true);
}
サンプル1
#property copyright "Copyright 2016, gogojungle"
#property link "http://labo.fx-on.com"
#property version "1.00"
#property strict
extern int MaxSpread = 5; //最大スプレッド(pips単位)
void OnTick(){
/* ---------------
各種処理
--------------- */
if(checkSpread(MaxSpread) == true){
// 発注処理
}
}
bool checkSpread(double max_spread_pips, string symbol=NULL){
// 通貨ペアの指定が無かった場合はチャートの通貨ペアで計算
if(symbol == NULL){
symbol = Symbol();
}
// スプレッドを取得
double spread = MarketInfo(symbol, MODE_SPREAD);
// 単位を揃える
if(Digits == 3 || Digits == 5){
max_spread_pips *= 10;
}
// スプレッド判定
if(spread > max_spread_pips){
return(false);
}
return(true);
}
サンプル2
複数通貨で取引する場合など、特定の通貨ペアでスプレッドの確認を行うには第2引数に通貨ペア名を指定する。
#property copyright "Copyright 2016, gogojungle"
#property link "http://labo.fx-on.com"
#property version "1.00"
#property strict
extern int MaxSpread = 5; //最大スプレッド(pips単位)
void OnTick(){
/* ---------------
各種処理
--------------- */
if(checkSpread(MaxSpread, "EURUSD") == true){ // 注釈1
// 発注処理
}
}
bool checkSpread(double max_spread_pips, string symbol=NULL){
// 通貨ペアの指定が無かった場合はチャートの通貨ペアで計算
if(symbol == NULL){
symbol = Symbol();
}
// スプレッドを取得
double spread = MarketInfo(symbol, MODE_SPREAD);
// 単位を揃える
if(Digits == 3 || Digits == 5){
max_spread_pips *= 10;
}
// スプレッド判定
if(spread > max_spread_pips){
return(false);
}
return(true);
}
注釈1 この行は全ブローカー対応に相応しくない書き方で書かれています。
参考:modifySymbol
検索結果がありません。 |
検索結果がありません。 |