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

 
Interesting:

さて、MT4とは異なり、ピリオドは1期間の秒数を意味するものではありません。

もっとよく読んでください。私は、_Periodについて書きましたが、PeriodSecondsについては書いて いません。そして、あなたの認識ミスでページを乱雑にしないで下さいね。
 
ANG3110:
MT4 dearでも秒数が表示されることはなかった...。しかし、MT4の分足ははっきりと表示されました。H1チャートの_Periodは何を示しているのですか?私には重大なバグのように思える。
ANG3110 です。
よく読んでください、私が書いたのは_Periodのことで、PeriodSecondsのことではありません。そして、あなたの認識ミスでページを詰まらせないでください。
すでに修正済みです。一般的なポイントは、 PeriodSeconds を使って、ピリオド内の正確な秒数を取得し、それを使って好きなことをすることです...。

つまり、H1 = 16385 はナンセンスではなく、ENUM_TIMEFRAMES の H1 の数値表現である。


Period-uのヘルプを読む

期間

現在のチャートのタイムフレーム値を返します。

ENUM_TIMEFRAMESPeriod()。

戻り値

現在のチャートのタイムフレーム値を保持する_Period 変数の内容。Value には ENUM_TIMEFRAMES列挙値のいずれ かを指定することができる。

追記

したがって、(MT4でそうであったように)期間に対応する分数ではなく、列挙型 ENUM_TIMEFRAMESの要素 (または必要であればその数値表現)を返します ...。

 
Interesting:
すでに修正済みです。一般的なポイントは、 PeriodSeconds を使って、ピリオド内の正確な秒数を取得し、それを使って好きなことをすることです...。

つまり、H1 = 16385 はナンセンスではなく、ENUM_TIMEFRAMES の H1 を数値で表現しているのです。

くっそー、なんだこれ。以前は、すべてがシンプルで簡単でした。Period()と書くだけで分数を得ることができました。これで、仕事にはあまり必要のないサービス識別子が手に入りました。 よし、分単位を秒単位で取得してみるか。
 

では、H1で_Periodをリクエストして、ENUM_TIMEFRAMES= 16385と出た場合、そこからどうやって分を取得すればいいのでしょうか?

もちろん、PeriodSeconds()/60を割っても何の意味もありませんが。しかし、これらの識別子はどのようなもので、どのように扱えばよいのでしょうか。

 
ANG3110:

では、H1で_Periodをリクエストして、ENUM_TIMEFRAMES= 16385と出た場合、そこからどうやって分を取得すればいいのでしょうか?

11ヶ月前からマイグレーションライブラリでこの機能を使用していますが、今のところ問題なく動作しています

//Fumction PeriodToMinute
int PeriodToMinute(ENUM_TIMEFRAMES Value)
{
//----------------------------------------------------------------------------//
//Work variables
int Result; //Returned importance
//----------------------------------------------------------------------------//
Result = PeriodSeconds(Value)/60;
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

ANG3110 です。

もちろん、PeriodSeconds()/60で割る必要がありますが。それにしても、これらがどのような識別子で、どのように扱えばいいのでしょうか。

この質問は、OOPの基本に言及することができます。識別子と列挙子に関するものである。詳しくは、リファレンスやC++プログラミングの良書を参照してください。

これはMQL4ですでに実装されていますが、あまり目立ちません。

各識別子(MQL5で書かれたものであれ、ユーザーが作成したものであれ)は、独自の「数値表現」を持つことができます。

簡単に言うと(できる限り説明しています)・・・。

DLLなど外部環境との互換性のためと思われるかもしれませんが、(MQLとその識別子について全く知らない)別のものです。

したがって、MQL5プログラム内でピリオドを扱う必要がある場合、ENUM_TIMEFRAMES 列挙の識別子PERIOD_H 1を使用するのが妥当であろう。

しかし、外部環境(例えばDLL)にピリオドH1を使用していることを伝える必要がある場合、この識別子を数値で表現する方が簡単です(この場合、16385 です)。

 
ANG3110:

では、H1で_Periodをリクエストして、ENUM_TIMEFRAMES= 16385と出た場合、そこからどうやって分を取得すればいいのでしょうか?

もちろん、PeriodSeconds()/60を割っても何の意味もありませんが。しかし、これらの識別子は何であり、どのように扱えばよいのでしょうか。

このように

int minute = PeriodSeconds(_Period)/60;
 
Interesting:

11ヶ月前からマイグレーションライブラリでこの機能を使用しているが、今のところ問題ない

了解です。返信ありがとうございました
 
sergey1294:

このように

こちらこそ、ありがとうございました。
 

デベロッパー

1.ある条件下でOHLCストリングがウインクするようになった。シングルコアのコンピュータでEAをテスト したときに明らかになったこと(CPUはおそらくオーバーロード)...。

2.Delphiで行われているように、クラスとその機能のリスト(詰め物)をナビゲータに配置することは可能でしょうか(モジュールの手続きと機能のリストを扱うのはあまり便利ではないので)。

 
Ashes:

テスターレポートを Open XML 形式で保存しようとしました。Pentium 4、3.0GHz)、アプリケーションは応答せず、タスクマネージャのterminal.exeプロセスが暴れて(CPUの約50%)RAM(約250Mb)を食いつぶしていた、結果 - 何もなし。MT5は応答するだけで、相場は入ってきません(灰色の回転する円が付いた接続状況インジケータ)。2回目も同じです。ツール」ウィンドウには、「MemoryException 107878464 bytes not available」というジャーナルエントリーが2つあり、これはOpenXMLでレポートを受信しようとした時間に対応します。
ほぼ瞬時にHTMLファイルが生成されました(約12Mb)。開くのに時間がかかるが、MT5のせいではない...。

繰り返す。全て同じですが、ビルド358を使用しています。ただ、さらに時間がかかる。レポートサイズに依存する - 短いレポートは問題なく処理されます。
理由: