int i, k=OrdersTotal();
for (i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if ((OrderType()==OP_BUY)&&(OrderOpenPrice()>=Ask-350*Point)&&(OrderMagicNumber()==Magic)||(OrderType()==OP_BUY)&&(OrderOpenPrice()<=Ask+250*Point)&&(OrderMagicNumber()==Magic))
{
double o=OrderOpenPrice();
Print(o);
OrderClose(OrderTicket(),OrderLots(),Bid,50,Blue);
}
}
}
良い一日は、インジケータがありますが、テスターで3月に今年の初めから特定の期間後に動作し、その後信号を与えて停止し、私はコードでこの制限をすることができます長い期間(認可SSBODynamicBreakoutBoxFinalEdition)、テストする必要があります - どの演算子はそれを決定する、掘るためにどこに少なくとも手がかりを与えてください?
インジケーターのソースコードをお持ちですか?そうでない場合は、作者を検索してください)))
どのように私はMQL4と5でいくつかの実績のあるExpert Advisorを教えてください、そして時間は非常に短いです、時にはあなたは1つのアイデアをチェックしたり、最終的にロボットのための基礎を作成し、それを自分で書いて終了するために誰かを支援する必要があります...
ありがたいです、よろしくお願いします!! =)
こんな感じの関数を書いています。
しかし、なぜOrderOpenPrice() は5桁に4桁に丸められた価格を返すのでしょうか?
これを実行して、OrderOpenPrice() が実際に何を返すか見てみましょう。おそらく 、Digitsパラメータで関数を正規 化していることが原因で、実際にはそうで ないものをプリンタで見て いるのでしょう。
こんな感じの関数を書いています。
しかし、なぜOrderOpenPrice() は小数点以下4桁に丸められた価格を返すのでしょうか?
Printは丸めた価格を返さず、この場合、単にデフォルトの小数点以下の桁数を出力します。
実は、FXでは桁より 低い小数点以下の数字は使えません。 一般的に、EURSDの例では小数点以下は4桁までしか表示されません。
しかし、あなたの場合、そうする方が良いでしょう: Print(DoubleToStr(OrderOpenPrice(),Digits));
これを実行し、OrderOpenPrice() が実際に何を返すか見てみましょう。おそらく 、Digitsパラメータで関数を正規化 し、 それが実際にあるもの ではないプリンタで見る ことが原因 でしょう。
正規化しなくても同じです。始値から ポイントを引く必要があり、もしそうなら価格は私が必要とするものですが、その後、IF() で型の不一致が発生します。
始値からポイントを引く必要があり、その場合は必要な価格になるのですが、IFで型の不一致が発生します(
4桁で計算してください。 正確さを重視するのであれば、計算の性質上、計算中に変化することはないので、最後の桁の値で戻してください。
4桁の場合として計算を行い、正確さを重視するのであれば、計算の仕様上、計算中に変化しないので、先にあった最後の桁の値で、その場に戻す。
既に述べたように、まずdoubleを小数点以下の桁数を指定して文字列に変換し、それをPrint...でログに出力します。