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

 
dimon74:
私の場合は、こんな感じです。ポジションはTPで決済され、新規の注文を出すにはTP+n*ポイントの値が必要です。OrderTakeProfit () 4桁の数字を表示しますが(Alertで確認)、私の証券会社は5桁を要求して います。いろいろと試しましたが、まだまだのようです。何かアイデアがあれば、ぜひ教えてください。ありがとう ございました。
Alert()とPrint()は、デフォルトで小数点以下4桁を出力しますが、実際には8桁が使用されます。 コンソールに正しく出力するには、DoubleToStr()を使用してください。
 
dimon74:
私の場合は、こんな感じです。ポジションはTPで決済されますが、新規の保留注文はTP+n*Pointの値が設定される必要があります。ここで矛盾が生じます。OrderTakeProfit() では4桁の数字が表示されますが(Alertで確認)、私の証券会社では5桁を希望して います。いろいろと試しましたが、まだまだのようです。何かアイデアがあれば、ぜひ教えてください。ありがとう ございました。

文字列DoubleToStr( 倍精度、整数値)

BUYMA関数は,数値を,指定された精度での文字表現を含むテキスト文字 列に変換する。

これはプリベリフィケーションに役立つはずです。

ただ、Alert()もPrint()も値を4桁で出力してしまうのです。だから、あなたの問題は違うのです。

 

なぜこのような形になっているのか理解できない

for(int a=0;a<8;a++)
// тут что нить делаем
for(int a=0;a<8;a++)
// еще чо нить делаем

変数はすでに定義されていると書いてありますが、なぜ繰り返しで再び0になるのでしょうか?そして、それらは異なるコードの断片にあり、最初はifに、2番目はelseに...。

 
Abzasc:

なぜこのような形になっているのか理解できない

すでに定義されている変数と書いてありますが、繰り返しでまた0になるのでは?そして、それらは異なるコードの断片にあり、1つ目はifに、2つ目はelseに...。


int a;
for(a=0;a<8;a++)
// тут что нить делаем
for(a=0;a<8;a++)
// еще чо нить делаем
では、なぜ同じ変数を2回定義するのか
 
Vinin:

同じ変数を2回定義する理由

読み返すには

 for(int a=0;a<8;a++)
 aJPY[a]=iCustom(NULL,PERIOD_M15,"Indexes",a,0);

すなわち、条件が1つなら読み、もう1つなら...ということです。クソッ 了解しかし、これは特殊なケースで、この断片は他では必要ない。

別のコードで使用できるように、変数を NULL に する方法がわかりません。条件が1つなら1つのインジケータを呼び、もう1つなら-もう1つの...。...変数が足りないから...

 
Abzasc:

読み返すには

すなわち、条件が1つなら読み、もう1つなら...ということです。クソッ 了解しかし、これは特殊なケースで、この断片は他では必要ない。

別のコードで使用できるように、変数を NULL にする方法がわかりません。条件が1つなら1つのインジケータを呼び、もう1つなら-もう1つの...。...変数が足りないから...


いや、どうにかして解決しなければならない。ただ、コードが足りないようです。私は一つのことだけを話していました。変数を宣言することと、(事前に初期化した上で)使用することは別物です。1つの同じ変数が非常に異なる機能値を持つことがあり、主なものは、何とどことを混同しないことです。
 

詳しく説明しよう。バッファのないインジケーターがある。別のインジケータの値を4つの配列に取り込みます。を付けようとしています。

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit;
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
新しいバー がある場合は、すべての配列が再計算されます。 新しいバーがない場合は、0番目のバーだけが計算されます。しかし、すべて同じように再計算する、つまり、ifとelseの両方を呼び出すのです。
 
Abzasc:

詳しく説明しよう。バッファのないインジケーターがある。別のインジケータの値を4つの配列に取り込みます。添付しようとしています。

新しいバーがあれば,すべての配列を再計算し,バーがなければ0番目の配列だけを再計算する。しかし、すべて同じように再計算する、つまり、ifとelseの両方を呼び出すのです。


私は別のアプローチを好みます

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit=Bars-counted_bars-1;
   if(Bars-counted_bars>2)
      limit = //.......................
   for(int i=limit;i>=0;i--)

とはいえ、好みの問題ではありますが。しかし、少なくとも私は、それぞれの行を説明することができます

 
Vinin:


私は別のアプローチを好みます

好みの問題ですけどね。しかし、少なくとも私はすべての行を説明することができます

こう言い換えよう。そして、limit = 0の場合、配列0、1、2、それ以外は-配列0と書くと、変数エラーになります。

それとも、1, 2, else - array 0 の配列を書けばいいのでしょうか?

いずれにせよ、-a変数を2回使えない、それが問題です。使うのはifとelseの2回だけですけどね。コードの先頭の共有変数にも入っていない。

 
Abzasc:

こんな感じにしておきましょう。そして、limit = 0の場合、配列0、1、2、それ以外は-配列0と書くと、変数エラーになります。

あるいは、配列1、2、その他 - 配列0と書けばいいのか?

いずれにせよ、-a変数を2回使えない、それが問題です。使うのはifとelseの2回だけですけどね。コードの先頭の共有変数にも入っていない。


コード全体を教えてください。直接送ってもいいんですよ。手伝ってみる。