静的配列 ?

 

皆さん、こんにちは。

まず最初に、MQL4の勉強になるような回答をくれた皆さんに感謝します。

次は、配列の作り方を理解するために移動 します。

件名

シグナルを静的配列に格納する方法。このような場合、高値と安値の上に小さな線を置くことになるでしょう。

だから、私は静的な配列[1,2,3,4,5,6,7]を考えています。

array[1] = (Low[3] < Low[4] && Low[3] < Low[3]) /or次のようなもの ?

Low_1 = array[1].

Low_2 = array[2]といった具合です。

これは、これを行うための標準的な方法でしょうか、私は道を外れていますか?

アドバイスお願いします。

 

まずは読んでみてください ... ... その後、理解できるまで何度も読んでみてください。

https://book.mql4.com/variables/arrays

例えば、配列の最初の要素は要素0 Barsのようなビット、fumy that eh ;-)

 
  1. ずれている
  2. array[1,2,3,4,5,6,7] giberish
  3. array[1] = (Low[3] < Low[4] && Low[3]... arrayはboolか?
  4. Low_1 = array[1] は、配列が bool でないことを意味します。
  5. 「信号を静的な配列に格納する」 必要なときにいつでも計算できるのに、なぜ静的である必要があるのでしょう?
 

oops I meant int array[1][7];

回答ありがとうございました

もう少し読んでみて、あなたの指示と質問から、配列は私がやろうとしていることではないのかもしれません。

基本的には、私は高値と安値の私自身の定義されたバージョンを作成することを学びたい;そして新しいバーが形成された後でも信号のためにそれらを参照することができるようにします。しかし、高値・安値の全履歴ではなく、自分が選んだいくつかの高値・安値のみです。
私はここで間違った方向に進んでいるのかもしれません。

もう少し考え直してみます。

ありがとうございました。

 
Agent86:


基本的に、私は自分自身で定義した高値と安値のバージョンを作成し、新しいバーが形成された後でもシグナルのためにそれらを参照することができるようになることを学びたいです。しかし、高値・安値の全履歴ではなく、自分が選んだ数だけです。

なぜですか? 何を達成しようとしているのか説明してください。
 

もっとこんな感じでやっていこうと思います。

私はそれがこの時点でこの記事はもはや配列についてではないと思いますので、私は私が配列についてもっと学ぶことができるまで、この質問を撤回します。


ありがとうございました。

static double Low_A;
   
   if(Low[2] < Low[2]
      && Low [2] < Low[1])
      {
      Low_A = Low[3];
      Print (Low_A + " Low_A has formed");
      }
 
RaptorUK:
なぜですか?何をしようとしているのか説明してください。

確かに、特定のローソクの高値と安値ではなく、一連のローソク足かもしれませんね。例えば、私が使いたいローソクの本数によってLow_Aと呼ぶこともできますが、安値は左側に4本、右側に4本の高いローソクとみなされ、この低いローソクはLow_Aとみなされます あるいは、より多くのローソク、あるいはより少ないローソクで安値や高値を構成し、このように他のハイ、安値を作ることも可能でしょう。そして、前の安値と次の安値を比較する




関数や、前の高値と次の高値を比較する関数を 作成します。 あるいは、この例のように、左側に1本、右側に1本のローソク足があり、これを安値と呼ぶこともできます。当初、私は結果を配列に入れることを検討していたが、私はこれが私が望んでいたものを行うとは思わない、少なくとも私は現時点でそれを判断するのに十分な配列を理解していない。もっと読み込めば、きっと解決するはずです。HA!私は本当に、私が定義した一連の高値と安値を保存するために、配列が有用であるかどうか確信がありませんでした。
 

Low[2]をプリントすると、5桁ではなく8桁になり、一部はすべて0.0000000になってしまいます。

おそらく、私が使用したデータ型は static double Low_A;

正しくプリントさせる必要があるのかどうかわかりませんが、正しいスタティックを保存するために、どのようなデータを使用すればよいのかわかりません。

 
OK、私は静的配列と静的ダブルのアイデアを捨てます。

新しい設計が必要です。私がやろうとしていたことが正しく機能しないことは明らかで、その理由もわかりました。

だから、もう一度最初からやり直す。ウッヒョー
 

話を戻します。

さらに学習した後、私は静的な配列というものがあるのか、それとも配列は主にデフォルトで静的なものなのかと考えていたのですが、あなたが提供したリンクを読んだ後、私はすべてがデフォルトで静的だと言います。すごい。


ともあれ、自分が定義したHighとLowをマークしようとするのではなく、iFractalsを考えています。私はより良い知識とより多くの読書を得るまで、私は今のところFractalsを使用することができます。

では、iFractalsはどうでしょうか?どうやって印をつけたり、参照したりできるのでしょうか?
私はちょうど追加のiFractalsを作成し、シフトを変更し、そのようにそれを参照してください、またはiFractalsとシフトはまだバーについて話して、前のフラクタルをしないのでしょうか?

//+------------------------------------------------------------------+
//|                Support and Resistance                            |
//|                Copyright © 2004/5     Barry Stander              |
//|                http://www.4Africa.net/4meta/                     |
//+------------------------------------------------------------------+

#property copyright "Support and Resistance             Barry_Stander_4@yahoo.com"
#property link      "http://www.4Africa.net/4meta/"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

//---- buffers
double v1[];
double v2[];
double val1;
double val2;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
//----
   IndicatorBuffers(2);

   SetIndexArrow(0, 119);
   SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,1,Red);
   SetIndexBuffer(0, v1);
   SetIndexLabel(0,"Resistance");

   SetIndexArrow(1, 119);
   SetIndexStyle(1,DRAW_ARROW,STYLE_DOT,1,Blue);
   SetIndexBuffer(1, v2);
   SetIndexLabel(1,"Support");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i=Bars;
//----
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+


誰かがこのコードを書いてくれて、それがどう動くかは理解できたのですが、配列から特定の高値や安値(別名 Support/Resistance)を選択する方法がよくわかりません。つまり、私は確かにif(val1 > imacd)または何かで取引を開始する

関数を 作ることができますが、前のiFractals、または2バックと言うことができます、 これは単にシフトの問題でしょうか? それとも、これを別の配列に入れる必要があるのでしょうか?





アドバイスお願いします。

ありがとうございます。

 
フラクタルの価格値を保持する 2 つのバッファ (配列) があります ... val1 と val2 です。 もし以前のフラクタル値を見つけたいなら、単純にループしてシフト値を増加させ、EMPTY_VALUE (https://docs.mql4.com/customind/SetIndexEmptyValue) でないものを見つけるまでバッファの値をチェックすることになります。