エラー、バグ、質問 - ページ 1845

削除済み  
Nikolai Semko:
開発者へのお願いです。
タイムフレームの切り替え時に変数や配列を保存して、再初期化が起きないようにする機能が非常に不足しています。それとも、 OnDeinit で REASON_CHARTCHANGE の理由 コードを定義することで、どうにかできるのでしょうか?
ただ、プログラム本体にかなり面倒な時間依存の計算があり、それを毎回再計算するのは嫌なのです。タイムフレームが変わっても再初期化されないような、特殊なグローバル変数が必要な気がします。グローバル変数のない単純な変数ではターミナルでやり方を覚えたが、構造体や配列ではどうしたらいいかわからないし、単にそういう可能性が存在しないだけだと思われる。もちろん、リソースを使うこともできますが、非常にわかりにくいです。
インジケータを使用してみてください。TFを変更しても、そこでグローバル変数は再初期化されません(私の記憶では)。またはファイルを通して。
削除済み  
Konstantin:

如何して

こんな感じ。

struct MyArray
{
   double buff[];
   
   MyArray()
   {
   }
   MyArray( int n )
   {
      ArrayResize( buff, n );
   }
   MyArray( const MyArray& other )
   {
      ArrayCopy( buff, other.buff );
   }
   ~MyArray()
   {
      ArrayFree( buff );
   }
   
   void operator=( const MyArray& other )
   {
      ArrayCopy( buff, other.buff );
   }
   
   void assign( int n, const double val = 0.0 )
   {
      ArrayResize( buff, n );
      ArrayInitialize( buff, val );
   }
};

MyArray func()
{
   MyArray myArray;
   
   // Заполняем массив.
   
   return myArray;
}
 
Koldun Zloy:

例えば、こんな風に。

しかし、この質問の著者は、「ない」という明確な答えに納得したのでしょう。

サービスデスクではお断りすることはございません

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

fxsaber さん 2017.04.02 10:34

配列へのポインタがないことを補うために、関数で配列を 返す機能を導入することは可能でしょうか?
int[] Func()
{
  int a[] = {1, 2, 3};

  return(a);
}

Print(Func()[1]); // 2

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

fxsaber さん 2017.04.01 10:20

昔々、文字列型に[]演算子が追加され
string Str = "AB C";
Print(CharToString(Str[1])); // B


開発者側で、配列の=演算子を追加することは可能でしょうか?

int a[], b[];
a = b; // ArrayCopy(a, b);


ポインタがないので、このような演算子があると、言語がより柔軟になり、非常に便利な状況が見つかります。

 
Alexey Kozitsyn:
インジケーターを使用してみてください。TFが変わっても、グローバル変数は再初期化されません(私の記憶では)。またはファイルを通して。

逆なんです。

 
Alexey Kozitsyn:
インジケーターを使用してみてください。TFを変更しても、グローバル変数は再初期化されません(私の記憶では)。またはファイルを通して。

これが私のインジケーターの使い方です。再初期化される。ファイルは全く選択肢になく、速度も遅く、良好な同期を提供することは困難です。この場合、ResourceCreateを 使った方がいいですね。しかし、これだけではあまり便利とは言えません。配列が何十個もあって、その中にMbが何個もある場合、少なくとも読み書きの関数を2つ書き、 OnDeinitでハンドラを作成しなければ なりません。マルチスレッドでは、リソースとファイルはそれぞれ別の生活をしているので、同期の問題に直面し、すでにすべての実験をしています。あるイベント(私の 場合は時間枠の変更)で再初期化しない可能性が十分にあるのに、なぜハンプを 作るのでしょうか。
 
Nikolai Semko:

インジケーターと使っています。再初期化しました。ファイルという選択肢は全くなく、遅いし、質の高い同期を提供するのは難しい。この場合、ResourceCreateを 使った方がいいですね。しかし、これだけではあまり便利とは言えません。配列が何十個もあって、その中にMbが何個もある場合、少なくとも読み書きの関数を2つ書き、 OnDeinitでハンドラを作成しなければ なりません。マルチスレッドでは、リソースとファイルはそれぞれ別の生活をしているので、同期の問題に直面し、すでにすべての実験をしています。単に特定のイベント(私の 場合は時間枠の変更)の再初期化を避けたいだけなのに、なぜわざわざ こんなことをしたのかわかりません。
その答えがここに あります。
 
Artyom Trishkin:

まさにその逆です。



ありがとうございます!EAのことは知りませんでした。
しかし、もし私がそのチップをインジケーターに必要とするならば!?

 
Koldun Zloy:

例えば、こんな風に。


しかし、1つの配列のために複雑な型の オブジェクトを作成することは、私がまさに望んでいないことであり、すべてが過剰なコードのように感じられます))
 
fxsaber:

しかし、この質問の著者は、「ない」という明確な答えに納得したのでしょう。

サービスデスクで拒否されることはない



配列のポインタを導入するのが普通だと思うのですが、この機能が導入されることを期待しましょう
削除済み  
Artyom Trishkin:

まさにその逆です。

おいおい...そう、まさにあなたの投稿に導かれたのです、ただそれが混同してしまっただけなのです:)