初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 114

 
Yedelkin:
答えるのは難しいですね。メッセージを読み直しましたが、配列のサイズを変えるという発想はありませんでした。コードに対する答えも、コンセプトを理解しているかどうかにかかっています。もしかしたら、誰かが答えてくれるかもしれません。

配列の大き さを変えるのはあまり気にしないので、例えば20個にします。

 double masCenPoc[20]; 

 for(int i=0; i<20; i++){
 
   if((cena_poc < high && cena_poc < low)||(cena_poc > high && cena_poc > low))

//как вот дальше обозначить чтоб он запомнил значение цены уровня Рос?
    
    masCenPoc[i] = cena_poc;

else 

//и удалил значение из массива, если нашлось пересечение с ценой этого уровня Рос?
 
Top2n: 配列の大きさは特に気にせず、例えば20に設定します。

ここでは、20個の要素を持つ配列があります。ここで、if 条件が成立して いると仮定して、 配列の 最初の要素に 価格値を代入します:masCenPoc[0] = cena_poc;

配列の 2番目の要素には、何を代入するのでしょうか?

 
Yedelkin:

ここでは、20個の要素を持つ配列があります。ここで、if 条件が成立して いると仮定して、 配列の 最初の要素に 価格値を代入します:masCenPoc[0] = cena_poc;

配列の 2番目の要素には、何を代入すればよいのでしょうか?

n回目に入るRosの次の値。Rosラインは、前日の結果をもとに、毎日冒頭に表示されます。価格がその水準にタッチしない場合、このRos水準の値が配列に格納されます。
 
Top2n: 次のRosの値で、n時間後になる。Rosラインは、前日の結果をもとに、毎日冒頭に表示されます。もし価格がレベルに触れなければ、このRosレベルの値が配列に格納されます。
なるほど。私なら次のようにします。20個の要素からなる配列を作成し、そのすべてに値-1を代入する。毎日の始めに、for(int i=0; i<20; i++)というループを実行し、配列の中で値-1の最初の要素を探します。そのような要素を見つけたら、取引条件(if((cena_poc < high && cena_poc < low)||(cena_poc > high && cena_poc > low))を確認し、成功したら、見つかった配列要素に cena_pocの値を代入します。そうすると、必要な値で配列が徐々に埋まっていきます。
 
Top2n: なるほど、ありがとうございます。
はい、(最後の例のように)非ダイナミック配列を使用する場合は、この関数も必要ではありません。動的配列が 必要な場合は、ループの前のコードの最初の行で宣言し、サイズを決定します。
 
Top2n:

配列の大きさを変えるのはあまり気にしないので、例えば20個にします。

理にかなっていなければならない。この場合、アレイは必要ない場合があります。1つのループでさらに計算をする場合、1つの変数で十分かもしれません。ヒストリーデータを取得したいのだと思いますので、あるバーから0までループさせる方が論理的です。配列が必要な場合は、あなたの場合、スタックとして蓄積されるはずです。

オンライン見積もりで構築する場合は、やはりスタックルールに従います。

//Удачи!
 

こんにちは。CopyBuffer関数を 使用してインジケータデータを配列にコピーしようとすると、-6.999999999e-005のような値が表示されます。

その理由は何でしょうか?


Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyBuffer - Документация по MQL5
 
sss20192:

こんにちは。CopyBuffer関数を 使用してインジケータデータを配列にコピーしようとすると、-6.999999999e-005のような値が表示されます。

その理由は何でしょうか?


もしかしたら、オリジナルと同じ値になっているかもしれません。コードを掲載するのが良いと思います。
 

インジケーターは、データウィンドウ のデータが異なります。H1チャートにEAを貼り付けると、M5 M15とH1のタイムフレームのデータがコピーされます。

int MacdHandleTf1 = iMACD(_Symbol, Timeframe1, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

int MacdHandleTf2 = iMACD(_Symbol, Timeframe2, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

int MacdHandleTf3 = iMACD(_Symbol, Timeframe3, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

CopyBuffer(MacdHandleTf1, 0, 1, 1, MacdArray);

Print(NormalizeDouble(MacdArray[0], 5)); 

CopyBuffer(MacdHandleTf2, 0, 1, 1, MacdArray);

Print(NormalizeDouble(MacdArray[0], 5)); 

CopyBuffer(MacdHandleTf3, 0, 1, 1, MacdArray); 

Print(NormalizeDouble(MacdArray[0], 5)); 
理由: