エリオット波動理論に基づくトレーディング戦略 - ページ 296

 
アンドレ69

ウェーブレット変換の係数を追加で操作してみましたか?
こんな感じに仕上げます。
 
みんな、祖国のために働け、科学をやれ、役に立つことを考えろ、最後に志を示せ。
 
同僚たちよ、小さな疑問がある。どう表現したらいいのか、配列の要素数を動的に拡張することは可能なのでしょうか。例えば、私は、ゼロバーから始まるある領域の安定したチャンネルを探しています。検索開始以来、彼らの番号を知らないので、一生見つからないかもしれません。ドキュメントを読んだ限りでは、できないことがわかったような気がします。これは本当でしょうか、それとももっと巧妙な方法があるのでしょうか?

追記:今のところ、MTでいくつかのバリエーションを思いつきました(MathCADにはそのような問題はありません)。

(1).パラメータ(int count=0;)を作成し、範囲とチェック基準をループさせ、それを満たせば、count=count+1。次に、得られたカウントを配列にして、計算したパラメータを配列に書き込み、最適なチャンネルを選択する、ということを繰り返しています。

(2) 元のレンジ長に応じたチャネルパラメータ用配列を作成する。
 
grasn
...どう言えばいいのでしょうか。配列の要素数を動的に拡張することは可能でしょうか。例えば、私は、ゼロバーからある領域で安定したチャンネルを探しています。最初から番号が分からないので、見つからないかもしれません。

正直なところ、この問題はよくわからない。配列の要素数(サイズ)は ArrayResize で動的に変更される。実際にストラクチャーを作成する場合は、MT5だけのお約束です。純粋に言葉の子音だけで......
注文の 追加特性の問題を解いていたのですが、その数は正確にはわからず、特性の数(40個の指標)もあらかじめわかっていなかったのです。3つの関数を使用しましたが、それぞれに新しいプロパティを手動で追加し、その後再コンパイルする必要がありました。これが正しいのか間違っているのかわかりませんが、念のため、前バージョンのコード を掲載しておきます。
//+------------------------------------------------------------------+
//| Изменение размеров массивов свойств ордера                       |
//+------------------------------------------------------------------+
int ResizeOrdArrays() {
  ArrayResize(OrdID,OrdArrSize);
  ArrayResize(OrdTicket,OrdArrSize);
//  ArrayResize(OrdData1,OrdArrSize);
//  ArrayResize(OrdData2,OrdArrSize);
//  ArrayResize(OrdData3,OrdArrSize);
//  ArrayResize(OrdData4,OrdArrSize);
  return(0);
}
//+------------------------------------------------------------------+
//| Добавление ордера в список ордеров                               |
//+------------------------------------------------------------------+
int AddOrder(int ID) {
  OrdInd=OrdNum;
  OrdNum++;
  if (OrdNum > OrdArrSize) {
    OrdArrSize = OrdNum;
    ResizeOrdArrays();
  }
  OrdID[OrdInd] = ID;
  OrdTicket[OrdInd] = ticket;
//  OrdData1[OrdInd] = 123.45;
//  OrdData2[OrdInd] = 123.45;
//  OrdData3[OrdInd] = 123.45;
//  OrdData4[OrdInd] = 123.45;
  return(0);
}
//+------------------------------------------------------------------+
//| Исключение ордера из списка ордеров                              |
//+------------------------------------------------------------------+
int CutOrder() {
  OrdNum--;
  if (OrdInd < OrdNum) {
    OrdID[OrdInd] = OrdID[OrdNum];
    OrdTicket[OrdInd] = OrdTicket[OrdNum];
//    OrdData1[OrdInd] = OrdData1[OrdNum];
//    OrdData2[OrdInd] = OrdData2[OrdNum];
//    OrdData3[OrdInd] = OrdData3[OrdNum];
//    OrdData4[OrdInd] = OrdData4[OrdNum];
  }
  return(0);
}



追伸:ちなみに、私のチャンネルも同じ「構造」にしています。

 
<br / translate="no"> ...配列の要素数(サイズ)は、ArrayResizeで動的に変更されます。


すでに作成されている配列のサイズを変更すると、サイズがゼロになるのでは?
 
いいえ、これはプリントで確認します。
 
いいえ、これはプリントで確認します。<br /> translate="no">。


ありがとうございます。プリントの書き方がどこか間違っていたのでしょう。:о)
 
ふむ、長い間自分ではチェックしていなかったのですが、まず問題なく動作しているようで、次にRenatが このプロパティをドキュメント化する、つまりすべての新しいバージョンでサポートすることを明示的に保証しています。
 
確認済み。配列のサイズを 1 つ大きくすると、配列の末尾に新しい null 要素が追加されます。その他の要素に変更はありません。
行列のサイズを変更すると、NULL行が行列に追加されます。
 
ありがとうございます。コードをぐちゃぐちゃにしてしまったので、安心です。OK、この機能でかなり楽になりました。