[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 970

 
Vinin:

ありがとうございます。
 
AlexSTAL:
戒告

私の母国語はウクライナ語です。しかし、ご清聴ありがとうございました。
 

助けてペンダントが2つ設定されていて、そのうちの1つがTake Profitで 閉じられた場合、2つ目を削除してほしいのですが。どう書けばいいのか?コードのどこに誤りがあるのでしょうか?

int pos;
for (pos=0; pos<OrdersTotal(); pos++)
{
if (OrderSelect(pos, SELECT_BY_POS))
{
if (OrderClosePrice() >= OrderTakeProfit())
{
int i;
for (i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrderDelete(OrderTicket()))
{
Print("Ордер удален");
       }
      }
     }
    }
break;
   }
  }
 }
return(0);
}
 

こんばんは(以前の記事でご挨拶するのを忘れていました)。以下のことを行うには、どの関数を使用すればよいかアドバイスをお願いします。Expert Advisorでは、現在のキャンドル(それが番号= 9であるとする)上のインジケータによって注文を開いている。開口部の順序の後、それ(指標)再描画した場合(とキャンドル9を閉じた後表示されませんでした)、その後、私はキャンドル9注文を閉じた後にする必要があります。

 

入力パラメーターがあります。

bool Mart - もしtrueなら、ストップ高でクローズド・オーダーがあったことを意味し、それゆえ倍々で行われる。

TradeInf -取引許可、もしtrueなら、取引された注文がないことを意味し、我々は取引することができる)

以下のコードがあります:
if (Mart == true && TradeInf==true)
{
Alert("double the lot");
LotS=NormalizeDouble(LotS*martin,2);
Alert("lot size",LotS);
}
if (Mart == false && TradeInf==true)
{
Alert("Reset Lot");
LotS=lot;
}。

そして、OpenOrderコマンドで、ロットサイズ=LotS.

そのため、ロット単位で閉じたロットを見つけると、ロットサイズが-9315605757223323600
になってしまうのですが、なぜでしょうか? 理由は何でしょうか?

 

こんにちは、私は別の原理にしたがってバランス値からロットを計算しています...。

結局0.2345みたいな数字になるんだけど、どうやって丸めずに2倍を切ればいいんだろう、っていうか。

を1桁にしたもの - 0.2

を2桁にしたもの - 0.23

から3へ - 0.234 といった具合に...。

 
akacuk21:

こんにちは、私は別の原理にしたがってバランス値からロットを計算しています...。

0.2345のような数字になってしまうのですが、丸めずに2倍を切るにはどうしたらいいのでしょうか、、、。

を1桁にしたもの - 0.2

を2桁にしたもの - 0.23

から 3 - 0.234 など。


double lot =NormalizeDouble(LOT,2)

lot - 発注用

LOT - 注文の計算式

"2" - 小数点以下2桁に丸める。

 
回答ありがとうございます。しかし、NormalizeDoubleの 場合、0.29のような数字を1桁に丸めると0.3となり、0.2でないといけないのですが...。
 
四捨五入のルールに反するので、長老の意見を聞いてからにしましょう。
 
Sys15975382:
丸付けのルール違反だ、先輩同志の意見を待とう。

えー...紳士の皆さん。あんなにたくさんあっても、正常化できない......。:)ここでちょっとだけお手伝い。

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