Top Page



現在ローソク足の始値から終値までの数値を表示する
ローソク足の状態を画面表示します。
「円換算」と「ドル換算」を振り分ける処理は1つ前のプログラムと同じなので説明は省略します。

・「円換算」の場合
 画面左上に[↓ 1.0pips]の表示
 チャート挿入時のパラメーターの設定は"1"
・「ドル換算」の場合
 画面左上に[↓ 6.9pips]の表示
 チャート挿入時のパラメーターの設定は"0"
◎解説
[1]パラメーターの設定
  前回の設定と同じです。

[2]メイン処理
  パラメーターの値によって振り分けられる処理の違いは、小数点の桁合わせ処理です。
  ドル換算の場合は、始値と終値から算出したピップ数の小数点の位置を4桁ずらします。
  円換算の場合は、始値と終値から算出したピップ数の小数点の位置を2桁ずらします。


◎以下、プログラム
//+----------------------------------------------------------------------------+
//| インジ 1-3 現在ローソク足の始値から終値までの数値を表示する |
//+----------------------------------------------------------------------------+
//----------------
//プロパティの設定
//----------------
//インジケーターをチャートウィンドウに表示する
#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()
{
string WK_STR_MSG1=""; //作業用 メッセージ
double WK_DBL_PIPS=0; //作業用 ピップ数

//オブジェクト削除
ObjectDelete(OBJ_DISP_01);

//現在ローソク足の状態表示
ObjectCreate(OBJ_DISP_01,OBJ_LABEL,0,0,0);
ObjectSet(OBJ_DISP_01,OBJPROP_XDISTANCE,10);
ObjectSet(OBJ_DISP_01,OBJPROP_YDISTANCE,10);

WK_STR_MSG1 = "[ ";
if(FLG_DOL0_YEN1 == 0) //ドル換算の場合、小数点を4桁ずらして処理する
{
//ローソク足が陽線の場合(始値と終値が同値を含む)
if(Close[0] >= Open[0])
{
WK_STR_MSG1 = WK_STR_MSG1 + "↑ ";
WK_DBL_PIPS = (Close[0] - Open[0])*10000;
WK_STR_MSG1 = WK_STR_MSG1 + DoubleToStr(WK_DBL_PIPS,1);
}
//ローソク足が陰線の場合
else
{
WK_STR_MSG1 = WK_STR_MSG1 + "↓ ";
WK_DBL_PIPS = (Open[0] - Close[0])*10000;
WK_STR_MSG1 = WK_STR_MSG1 + DoubleToStr(WK_DBL_PIPS,1);
}
}
//フラグ"0"以外の場合円換算の処理。
//ここでは、パラメーターの設定処理に慣れることが目的のため、
//フラグの設定値が異常の場合の処理はあえて行いません。
//よってフラグが"0"以外の場合は、円換算の処理とするロジックにします。
else //円換算の場合、小数点を2桁ずらして処理する
{
//ローソク足が陽線の場合(始値と終値が同値を含む)
if(Close[0] >= Open[0])
{
WK_STR_MSG1 = WK_STR_MSG1 + "↑ ";
WK_DBL_PIPS = (Close[0] - Open[0])*100;
WK_STR_MSG1 = WK_STR_MSG1 + DoubleToStr(WK_DBL_PIPS,1);
}
//ローソク足が陰線の場合
else
{
WK_STR_MSG1 = WK_STR_MSG1 + "↓ ";
WK_DBL_PIPS = (Open[0] - Close[0])*100;
WK_STR_MSG1 = WK_STR_MSG1 + DoubleToStr(WK_DBL_PIPS,1);
}
}
WK_STR_MSG1 = WK_STR_MSG1 + "pips]";
ObjectSetText(OBJ_DISP_01,WK_STR_MSG1,18,STR_LAVEL_FONT,Yellow);

return(0);
}

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