//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 16.05.2008 |//| Описание : Возвращает нормализованное значение торгуемого лота. |//+----------------------------------------------------------------------------+//| Параметры: |//| lo - нормализуемое значение лота. |//| ro - способ округления ( False - в меньшую, |//| True - в большую сторону) |//| sy - наименование инструмента ("" или NULL - текущий символ) |//+----------------------------------------------------------------------------+double NormalizeLot(double lo, bool ro=False, string sy="") {
double l, k;
if (sy=="" || sy=="0") sy=Symbol();
double ls=MarketInfo(sy, MODE_LOTSTEP);
double ml=MarketInfo(sy, MODE_MINLOT);
double mx=MarketInfo(sy, MODE_MAXLOT);
if (ml==0) ml=0.1;
if (mx==0) mx=100;
if (ls>0) k=1/ls; else k=1/ml;
if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k;
if (l<ml) l=ml;
if (l>mx) l=mx;
return(l);
}
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку, так как небольшая ошибка в логике советника или индикатора может привести к убыткам на торговом счете. Именно поэтому нами разработана серия базовых проверок, призванных обеспечить необходимый уровень качества продуктов Маркета. Если в процессе проверки...
でも、何かすごく変なんです...。
つまり、OrderSelectを一度やって、関数からもう一度...ということです。とんでもないことだ...。
単純な論理だ...
自分が行っている操作の順序を見る。
当然ながら、まず数量を確認し、必要なオーダーを選択し、それに対して必要な操作を行う必要があります。
オーダー配列はどちらを向いているのでしょうか?
改訂」時に閉鎖/削除の可能性がある場合は、反対側を見た 方が良い。OrdersTotal()-1 から 0 まで(0 を含む)。
そうでなければ、トラブルに巻き込まれるかもしれません :-)
私も一度、この方法で個人的な宝物を 発見しそうになったことがあります :-)
そして、「時の深み」から現在に至る古い注文の削除(全部ではなく、たまに)により、テスターの収益性が天にも昇るほど上がりました :-)
単純な論理だ...
自分が行っている操作の順序を見る。
まず数量を確認し、次に正しい順序を選択し、それに対して必要な操作を行うことは当然である
私はこのようにしました。
ただ、オーダーカウントを優先し、それ以外はすべて後回し。
アルテムさん、ありがとうございます。聖杯のおかげです。この失敗が、私を苦しめることになったのです......。
小数点 以下の桁数を計算するにはどうしたらよいですか?
例えば、最小ロットが0.01であることを知りました。
小数点 以下の桁数が2であることはどのように推測すればよいのでしょうか?
で、オーダーボリュームを小数点以下2桁に正規化します。
小数点 以下の桁数を計算するにはどうしたらよいですか?
例えば、最小ロットが0.01であることを知りました。
小数点 以下の桁数が2であることはどのように推測すればよいのでしょうか?
を使い、後でオーダーボリュームを小数点以下2桁に正規化します。
これを試してみてください。
これを試してみてください。
なぜ、そんな古いものを提供するのか?
小数点 以下の桁数を計算するには?
例えば、最小ロットが0.01であることを知りました。
小数点 以下の桁数が2であることを調べるにはどうしたらよいですか?
その後、オーダーボリュームを小数点以下2桁に正規化する。
ここでは、記事中の 既成の機能を紹介します。
あとは、この関数が返す結果に応じたアクションを追加するだけです。
こんな感じでたくさん入れました。
となり、取引は1.11の出来高で開始されます。
では、何も正規化する必要はないのでは?
ターミナルを開くと、必要な小数点 以下の桁数に正規化されていますね。
何も正規化する必要はないのかも?
編集者が同じことをするならば......必要ないですね。
ターミナルを開くと、注文が必要な小数点 以下の桁数に正規化されますね。
もしかして、何も正規化する必要はないのでは?
エラーに次ぐエラーを出したい場合は、ノーマライズをしないでください。
もし、その後にエラーが続出するようであれば、正規化しないことです。