「KimIVの便利な機能」のみ。 - ページ 10

 
borilunad:

1つ増やすのは難しくない!

どういうことですか?
 

ModifyOrder()関数

以下はコードの冒頭部分です。

void ModifyOrder(double pp=-1, double sl=0, double tp=0, color cl=CLR_NONE) {
  bool   fm;
  double op, pa, pb, os, ot;
  int    dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
 
  if (pp<=0) pp=OrderOpenPrice();
  if (sl<0 ) sl=OrderStopLoss();
  if (tp<0 ) tp=OrderTakeProfit();

初期状態では、関数の正式なパラメータは 次のようになっている。

pp=-1, но sl=0 и tp=0

わかりやすく体系的に書くと、形式パラメータにそれぞれ- 1をつける、つまりこうなるのが便宜上楽なのだろう。

pp=-1, sl=0 tp=0

ここで疑問が生じるのは、なぜ形式パラメータの一方を0と 比較し、他方を- 1と比較することで、これほどまでにコードを混乱させるのか、ということだ。また、-73を 入力することもできたのですが...。

 
hoz:

ModifyOrder()関数

以下はコードの冒頭部分です。

初期状態では、関数の正式なパラメータは次のようになっている。

わかりやすく体系的に書くと、形式パラメータにそれぞれ- 1をつける、つまりこうなるのが便宜上楽なのだろう。

ここで疑問が生じるのは、なぜ形式パラメータの一方を0と 比較し、他方を- 1と比較することで、これほどまでにコードを混乱させるのか、ということだ。また、-73を 入力することもできたのですが...。


作者に直接聞いてください!小数点以下5桁は1を足してください。
 

open price == 0 の注文は修正できない(意味がない)けど、stoploss と takeout はゼロにできるはずだから、気合いを入れて(考えて)やれば、すべてがうまくいく。

ZS.確かに関数は4桁の 時代に書かれたものですが、その関連性が無効になるわけではありません。

 
borilunad:

作者に直接聞いて、小数点以下5桁で1つ追加!


小数点以下の桁数では、それが容易になります。

if(Digits==3 || Digits==5) pt=10*Point;
 
FAQ:

open price == 0 の注文は修正できない(意味がない)けど、stoploss と take はゼロにできるはずだから、気合いを入れて(考えて)やれば、すべてがうまくいく。

ZS.確かに関数は4桁の時代に書かれたものですが、その関連性が無効になるわけではありません。


ストップロスやテイクプロフィットを0に 修正できるはずですが、ストップロスやテイクプロフィットは0 以下であってはいけないし、始値もいけないから、-1や 0は 単なる形式パラメータでどんな 整数の 下でも使えると、私は理解します。
 
jurist70:

親愛なる、ラインのどこを。


円ペア以外のペアは、気配値の4桁目の変化量がポイントです。円ペアの場合、2桁目にあります。見積もり精度が0.1ポイントになったことで、5桁や3桁の見積もりも登場しました。

 
hoz:

ModifyOrder()関数

以下はコードの冒頭部分です。

初期状態では、関数の正式なパラメータは次のようになっている。

わかりやすく体系的に書くと、形式パラメータにそれぞれ- 1をつける、つまりこうなるのが便宜上楽なのだろう。

ここで疑問が生じるのは、なぜ形式パラメータの一方を0と 比較し、他方を- 1と比較することで、これほどまでにコードを混乱させるのか、ということだ。また、-73を 入力することも可能でした。

pp= -1 は任意の始値

if(pp<=0) pp=OrderOpenPrice(); これは特定の開始価格です。

 
pako:

pp= -1 は任意のオープン価格

if(pp<=0) pp=OrderOpenPrice(); これは定義された開始価格です。


質問を読んでから答えるべきでしたね。正式なパラメータが 異なるデフォルト値を持つのはなぜか、と。ポイントは、slとtpを宣言せずに関数を呼び出すと、デフォルトで0になる、つまり変化しない、ということだと思います。

それ以外の方法は考えられません。

 
hoz:


質問を読んでから答えるべきでしたね。形式パラメータに異なるデフォルト値があるのはなぜか、という質問です。ポイントは、slとtpを宣言せずに関数を呼び出すと、デフォルトで0になる、つまり変更されないということだと思います。

それ以外の方法は考えられません。


この場合== 0でstopとtakeがクリアされます。実は、この騒動が何なのか理解できないのです。言語 標準の関数ではなく、一人のプログラマーが書いたラッパーで、それが不満なら自分で書くか、適当に変えて使えばいいのです。