MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 705

 
multiplicator:
なぜか端末にエラーが表示されない)

自分でできないのか?

 
multiplicator:
なぜかターミナルにエラーが表示されない)

端末は何の関係があるのですか?ボリュームグレーディングを考慮したプログラムを組む必要があります。

ロット0.000001、または0.12345678、または100000.1などのポジションを開く ための注文をプログラムで送信してみてください。

 
Алексей Тарабанов:

自分でできないのか?

えっ、表示されないんですけど。
 
Artyom Trishkin:


ロット0.12345678のポジションを建てる ためにプログラムされた注文を送信してみてください。

は、ロット0.12で開きます。

問題は、ノーマライズするかしないかです。

 
アーテム 忘れたらどうだ?
 
Alekseu Fedotov:

これを試してみてください。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}


というのが、よくわからないところです。
  if (ls>0) k=1/ls; else k=1/ml;
ロットピッチが0かそれ以下かで何が違うのか。
 
Алексей Тарабанов:
アーテム 忘れたらどうだ?
くそったれ
寝る
 
multiplicator:

は0.12というロットで開きます。

問題は、正常化するかしないかです。

もう、うんざりです。ロットと開店時の値段に何の関係があるんだ、患者さんよ?

 
Алексей Тарабанов:

もう、うんざりです。ロットと開封した値段に何の関係があるんだ、この患者。

おっさん、誰も聞いてないぞ、寝ろ。

掲示板の書き込みを読んでいると、「この人、脳が弱いな」と思ってしまいます。
 
Alekseu Fedotov:

これを試してみてください。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}

ここでは、ロットステップサイズで割って余りを捨て、そのロットステップ数を取得する。

ここに間違いがあるのかもしれません。

例えば、関数に7ロットという値を入れています。
このブローカーは、最小ロット数を5、ロットステップを2としています。


7をロット数で割り、全体の部品点数で割る。そして、ロット増分を再度乗じる。そして、この数量で注文を出そうとします。
しかし、5巻、7巻、9巻などの巻数でなければ注文を開けることができない。


うちの敷地(7)から最低敷地面積(5)を引いた方がいいんじゃないですか?そして、その残りを使って仕事をする。

機能を持つということで、余分な動作をすべて行う。

全ステップが何個あるか、ロットステップの大きさを計算する。そして、ステップ数にロットステップサイズを掛けたものです。これによって、2.

そして、この2が再び最小ロットの大きさ(5)に加えられる。その結果、5+2=7となる。


しかし、これは素晴らしい例です。
ブローカーは、最小ロットと0.01のロット単位を持つようになりました。
または最小ロットおよびロット単位0.1