【MT4/5】MetaTrader初心者専用28【ゆとり隔離スレ】

このエントリーをはてなブックマークに追加
715ブルーローズ対ペプシマン
現在の価格Close[0]から近いきりのいい価格、例えばUSDJPYなら78.89→79.00 EURUSDなら、1.2723→1.2700 を基準ラインにして
上下の価格値でエントリーのサインを出す関数を考えています。(その後フィルターでサインは選別されます。)

具体的に例をいいますと、USDJPYのClose[0]値が77.82ででありましたら、そこから近い「きりのよい価格」78.00を基準のラインとします。
変数は「point00」としました。

78.00から、上下に所定のマージン「pointmargin」5pip分と「pointmargin*2」10pip分の領域内に
Close[0]値があればエントリーのサインがでます。

78.05〜78.10 内にClose[0]値がある。→売りサイン発生 ret=-1
77.95〜77.90 内にClose[0]値がある。→買いサイン発生 ret=1

で下のような関数を考えました。
でやっぱりきちんと動きません。orz

*******************

int init() //きりのいい値段を調べる準備
{
if (Digits <= 3) {
x1 = 1;
x2 = 1;
} else {
x1 = 100;
x2 = 0.01;
}
}

// エントリー関数
extern double pointmargin = 5;
int EntrySignal(int magic)
{
double pos = MyCurrentOrders(MY_OPENPOS, magic);
int i = Close[0] * x1;
double point00_b = i * x2;
double point00_a = (i + 1) * x2;
static double point00 = 0;

//現在値から近いほうのきりのいい値段を調べる
if(point00_a - Close[0] < Close[0] - point00_b) point00 = point00_a;
else point00 = point00_b;
int ret = 0;
// 買いシグナル
if(pos <= 0 && Close[0] <= point00 - pointmargin * Point && Close[0] >= point00 - pointmargin * Point *2) ret = 1;
// 売りシグナル
if(pos >= 0 && Close[0] >= point00 + pointmargin * Point && Close[0] <= point00 + pointmargin * Point *2) ret = -1;
return(ret);
}

*******************

おかしいのは、次の部分です。
if(pos <= 0 && Close[0] <= point00 - pointmargin * Point && Close[0] >= point00 - pointmargin * Point *2) ret = 1;
if(pos >= 0 && Close[0] >= point00 + pointmargin * Point && Close[0] <= point00 + pointmargin * Point *2) ret = -1;

調べてみますと、何故か「pointmargin * Point」「pointmargin * Point *2 」も同じ値になるようで、変数の型であるdoubleを疑ったり、
定数のPointを疑ったりしているのですが、やっぱりわかりません。(FXDDでテストしているので5桁表示の問題かもしれません。)
お分かりになるかたいらっしゃいますか? どうぞお助けください。