Top Page



パラメーターで円換算ペアとドル換算ペアを振り分ける処理
パラメーターを使用して処理を振り分けます。
具体的には、1つ前の価格表示プログラムを「円換算通貨ペア」と「ドル換算通貨ペア」に対応します(小数点の処理が異なります)。
その振り分けをインジケーターをチャートに挿入するときのパラメーターで設定するというものです。

・「円換算の場合」
 ①インジケーターをチャートに挿入する時に、「パラメーターの入力」タブを開きます。
 ②「FLG_DOL0_YEN1」の「Value」に"1"を設定します。
③画面左上に価格(小数点以下3桁)が表示されます。
・「ドル換算の場合」
 ①インジケーターをチャートに挿入する時に、「パラメーターの入力」タブを開きます。
 ②「FLG_DOL0_YEN1」の「Value」に"0"を設定します。
③画面左上に価格(小数点以下5桁)が表示されます。
◎解説
[1]パラメーターの設定
    extern int FLG_DOL0_YEN1 = 1; //ドル換算か円換算か 【0:ドル】【1:円】
  「FLG_DOL0_YEN1」というパラメーターを設定します。
  初期値を"1"に設定しています。
  メイン処理で、"0"の場合は、ドル換算の処理を行い、それ以外の場合は円換算の処理を行います。
  今回はパラメーターのプログラムに慣れることが目的なので振り分け処理は簡略化しました。
  つまり、"0"もしくは"1"以外の処理は、プログラミングしていません。了承ください。

[2]メイン処理
  パラメーターの値によって振り分けられる処理の違いは、小数点の桁処理です。
  ドル換算の場合は、小数点以下5桁まで求めます。
  円換算の場合は、小数点以下3桁まで求めます。


◎以下、プログラム
//+----------------------------------------------------------------------------+
//| インジ 1-2 パラメーターで円換算ペアとドル換算ペアを振り分ける処理 |
//+----------------------------------------------------------------------------+
//----------------
//プロパティの設定
//----------------
//インジケーターをチャートウィンドウに表示する
#property indicator_chart_window

//----------------
//パラメーターの設定
//----------------
extern int FLG_DOL0_YEN1 = 1; //ドル換算か円換算か 【0:ドル】【1:円】

//----------------
//定数の定義
//----------------
#define OBJ_DISP_01 "OBJ_DISP_01" //オブジェクト名
#define STR_LAVEL_FONT "MS ゴシック" //ラベルのフォント

//+----------------------------------------------------------------------------+
//| 初期処理関数 |
//+----------------------------------------------------------------------------+
//プログラム起動時に1回だけ呼び出される関数
//今回は特に処理なし
int init()
{
return(0);
}
//+----------------------------------------------------------------------------+
//| 終了処理関数 |
//+----------------------------------------------------------------------------+
//プログラム終了時に呼び出される関数
int deinit()
{
//オブジェクト削除
ObjectDelete(OBJ_DISP_01);

return(0);
}

//+----------------------------------------------------------------------------+
//| メイン処理関数 |
//+----------------------------------------------------------------------------+
//価格が更新される度に呼び出される関数
int start()
{
double WK_DBL_PRICE=0; //作業用 価格

//オブジェクト削除
ObjectDelete(OBJ_DISP_01);
// 価格表示
WK_DBL_PRICE = ((Ask+Bid)/2);
ObjectCreate(OBJ_DISP_01,OBJ_LABEL,0,0,0);
ObjectSet(OBJ_DISP_01,OBJPROP_XDISTANCE,10);
ObjectSet(OBJ_DISP_01,OBJPROP_YDISTANCE,10);

//ドル換算か円換算かのフラグ判定
//フラグ"0"の場合ドル換算の処理。小数点以下5桁計算。
if(FLG_DOL0_YEN1 == 0)
{
ObjectSetText(OBJ_DISP_01,DoubleToStr(WK_DBL_PRICE,5),28,STR_LAVEL_FONT,MediumSlateBlue);
}
//フラグ"0"以外の場合円換算の処理。小数点以下3桁計算。
//ここでは、パラメーターの設定処理に慣れることが目的のため、
//フラグの設定値が異常の場合の処理はあえて行いません。
//よってフラグが"0"以外の場合は、円換算の処理とするロジックにします。
else
{
ObjectSetText(OBJ_DISP_01,DoubleToStr(WK_DBL_PRICE,3),28,STR_LAVEL_FONT,MediumSlateBlue);
}

return(0);
}

//+----------------------------------------------------------------------------+