//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
なぜか端末にエラーが表示されない)
自分でできないのか?
なぜかターミナルにエラーが表示されない)
端末は何の関係があるのですか?ボリュームグレーディングを考慮したプログラムを組む必要があります。
ロット0.000001、または0.12345678、または100000.1などのポジションを開く ための注文をプログラムで送信してみてください。
自分でできないのか?
ロット0.12345678のポジションを建てる ためにプログラムされた注文を送信してみてください。
は、ロット0.12で開きます。
問題は、ノーマライズするかしないかです。
これを試してみてください。
ロットピッチが0かそれ以下かで何が違うのか。
アーテム 忘れたらどうだ?
寝る
は0.12というロットで開きます。
問題は、正常化するかしないかです。
もう、うんざりです。ロットと開店時の値段に何の関係があるんだ、患者さんよ?
もう、うんざりです。ロットと開封した値段に何の関係があるんだ、この患者。
掲示板の書き込みを読んでいると、「この人、脳が弱いな」と思ってしまいます。
これを試してみてください。
ここでは、ロットステップサイズで割って余りを捨て、そのロットステップ数を取得する。
ここに間違いがあるのかもしれません。
例えば、関数に7ロットという値を入れています。
このブローカーは、最小ロット数を5、ロットステップを2としています。
7をロット数で割り、全体の部品点数で割る。そして、ロット増分を再度乗じる。そして、この数量で注文を出そうとします。
しかし、5巻、7巻、9巻などの巻数でなければ注文を開けることができない。
うちの敷地(7)から最低敷地面積(5)を引いた方がいいんじゃないですか?そして、その残りを使って仕事をする。
機能を持つということで、余分な動作をすべて行う。
全ステップが何個あるか、ロットステップの大きさを計算する。そして、ステップ数にロットステップサイズを掛けたものです。これによって、2.
そして、この2が再び最小ロットの大きさ(5)に加えられる。その結果、5+2=7となる。
しかし、これは素晴らしい例です。
ブローカーは、最小ロットと0.01のロット単位を持つようになりました。
または最小ロットおよびロット単位0.1