Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
//--------------------------------------if (ArrayGetAsSeries(time)!=true)
ArraySetAsSeries(time,true);
if (ArrayGetAsSeries(open)!=true)
ArraySetAsSeries(open,true);
if (ArrayGetAsSeries(high)!=true)
ArraySetAsSeries(high,true);
if (ArrayGetAsSeries(low)!=true)
ArraySetAsSeries(low,true);
if (ArrayGetAsSeries(close)!=true)
ArraySetAsSeries(close,true);
//--------------------------------------
お前ら遅いな :)フォールスはファルスではなく、すべてが機能する。探す場所を間違えていますよ )))正しい機能があります。
ArrayIsSeries(High)が常にfalseになる原因を探っています。
この関数のヘルプには、次のように書かれています(https://www.mql5.com/ru/docs/array/arrayisseries)。
戻り値
チェック対象の配列が時系列配列の場合は true、そうでない場合は false を返します。OnCalculate() のパラメータとして渡された配列は、ArrayGetAsSeries() で配列の要素にアクセスする順序をチェックする必要があります。
宣言した配列は時系列ではなく、どのような状況でも時系列になることはありません。時系列は、OnCalculate() 関数などでランタイムシステムによってあらかじめ定義される配列である。
この関数のヘルプには、次のように書かれています(https://www.mql5.com/ru/docs/array/arrayisseries)。
宣言した配列は時系列ではなく、どのような状況でも時系列になることはありません。時系列は、OnCalculate() 関数など、ランタイムであらかじめ定義された配列である。
ArrayGetAsSeriesが意図したとおりに動作しない。
時系列は、OnCalculate() などで実行時に定義される配列です。
これについては、ヘルプに書いてある通りです。
Примечание
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
これについては、ヘルプに書いてある通りです。
そのようなインジケータを走らせれば、自分の目で確認することができます。
ArrayGetAsSeries 関数はインデックスの方向を変更するだけで、配列を時系列に変換することはありません。この機能で何を得ようとしているのでしょうか?
この機能は、変化ではなく、方向をチェック します。
1) 初期化なし
2)初期化あり
3) 上記コードのうち、ArrayGetAsSeries 関数で配列のインデックス方向を取得しているもののみ
サービスデスクでは、関数名を間違えてしまいました。そのようなインジケータを走らせれば、自分の目で確認することができます。
それは理解できる。また、私の質問はエラーについてではなく、すべてがヘルプに書かれているとおりに動作することでした。
Примечание
Для проверки массива на принадлежность к таймсерии следует применять функцию ArrayIsSeries(). Массивы ценовых данных, переданных в качестве входных параметров в функцию OnCalculate(), не обязательно имеют направление индексации как у таймсерий. Нужное направление индексации можно установить функцией ArraySetAsSeries().
ヘルプで強調されている色や太字と、おっしゃることが食い違うため、疑問が生じました。
ロッシュ
時系列は、OnCalculate() などの実行時に定義された配列です。
だからOnCalculate()でやっているんです。
この関数のヘルプには、次のように書かれています(https://www.mql5.com/ru/docs/array/arrayisseries)。
宣言した配列は時系列ではなく、どのような状況でも時系列になることはありません。時系列は、OnCalculate() 関数などであらかじめ定義された配列です。
インジケーターでもチェックが効きません。
また、prev_calculatedは もう機能せず、常に0になって います。
そうですね、これらの機能については、すでに自分たちで整理していると思います。
しかし、私は忘れないように、願いとして - エディタで、3つまたは何文字を入力した後にプロンプトが表示されたとき、あなたがリストの最初の行に立ってクリックすると、リストから削除されません。ただ、スタジオと同じようにすでに慣れているので、スタジオと同じようにやらないと「うっとうしい」と思う人も多いのではないでしょうか。IMHO