[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 60

 
TheXpert >> :

リメンバーズ!文字列の実装のクセ。配列のサイズを変更した後、ウォークスルーしてゼロにする必要があります。

間違っているかもしれませんが、参考になるはずです。

返信ありがとうございました。試してみましたが、残念ながら効果はありませんでした。ゼロにするのは、配列に対して何かをし始める前です。また、ゼロ化は文字列のVALUEを明示的に代入することで行われますが、私が指摘したケースでは、配列の要素に関数の結果(文字列型のVALUEを返すべき)が代入されていますが、実際にはメモリ上の文字列のアドレスへのREFERENCEを返しており、これは誤りだと考えています。そして、同じ値を持つ結果は、関数が連続して何度も呼び出され、呼び出されるたびに次の関数が実際に同じメモリを使用し、そこに新しいデータを置くからです。もし、呼び出しの間に何らかの操作(何らかのイオンの呼び出し、変数の宣言など)を行えば、結果はさらに悪くなる可能性が高いです。つまり、文字列配列要素の値は、メモリ上のゴミを指すことになります。


できれば、mql4の開発者の方にこの状況についてコメントいただき、文字列配列の正しい扱い方について説明していただきたいと思います。

 

履歴から最後に決済された注文が選択され、そのタイプが ORDtype 変数に代入された後、オープンのシグナルが生成されます。つまり、履歴が空でなければ、ORDtypeは当然ながら-1にはならない。ので、信号が現れる条件は満たされていない。

if ((ORDtype==-1)&&(...))

 
Everlost >> :

履歴から最後に決済された注文が選択され、その種類がORDtype変数に代入されてから、オープニングシグナルが生成されます。つまり、履歴が空でなければ、ORDtypeは当然ながら-1にはならない。ので、信号の発生条件は満たされていません。

if ((ORDtype==-1)&&(...))

そしてもう一つの問題は、履歴が空でもポジションがオープンされないことです((

 
Yug >> :

返信ありがとうございました。試してみましたが、残念ながら効果はありませんでした。ゼロ化は、配列に対して何かを始める前に行われます。また、ゼロ化は文字列のVALUEを明示的に代入することで行われますが、私が指摘したケースでは、配列の要素に関数の結果(文字列型のVALUEを返すべき)が代入されますが、実際にはメモリ上の文字列アドレスへのREFERENCEを返しており、これは誤りであると考えます。そして、同じ値を持つ結果は、関数が連続して何度も呼び出され、呼び出されるたびに次の関数が実際に同じメモリを使用し、そこに新しいデータを置くからです。もし、呼び出しの間に何らかの操作(任意のフォントの呼び出し、変数の宣言など)を行うと、結果はさらに悪くなる可能性が高いです。つまり、文字列配列要素の値は、メモリ内のゴミを指すことになります。


この状況について、可能であればmql4の開発者の方にコメントをいただき、文字列配列を正しく扱う方法を説明していただきたいと思います。

この方法で試してみてください。

string tmp = func();
array[0] = tmp;

もちろん家庭菜園ですが、うまくいくはずです・・・。

 

テスターで見るMT4の意味 -最適化、どこを刻めばいい?この機能は何ですか?EAを特定の設定(標準)にチューニングしているのか、それともどの期間(TF)でより良く機能するかを示しているのでしょうか?

 
rafex >> :

テスターで見るMT4の意味 -最適化、どこを刻めばいい?この機能は何ですか?EAを特定の設定(標準)にチューニングするのか、それともどの時間枠(TF)でより良く機能するかを示すのか?

このチェックボックスは、F1キーを押しながら「Autotrading」のセクションをよく読んでから触ることができます。

 
komposter >> :

この方法で試してみてください。

もちろん家庭菜園ですが、うまくいくはずです・・・。

一昨日、試してみました。結果は同じです。実際には、最初に参照がtemp strにコピーされ、次に同じ参照が配列要素にコピーされます :(

 
Yug >> :

一昨日、試してみました。結果は同じです。実際には、まず参照がtemp strにコピーされ、その後配列要素にコピーされます :(

関数内で戻り値の文字列をstaticとして宣言し、宣言後にのみ初期化を行う必要があります。

 
専門家の皆様、私の質問を無視しないでください。

ボラティリティを日足などで カウントするような指標はないのでしょうか。しかし、0.34のような不定な数字を出すものはダメだ。しかし、1日あたりのローソク足の数を計算し、それを与えられた期間(日数)で割ることで、インジケータが平均値を知ることができるようにする必要があります。例:始値100、終値200、2日目-始値200、終値250。この2日間の平均ボラティリティ=((200-100)+(250-200))/2日=(100+50)/2=75
ダウンロードできる場合は、ダウンロード先。
 
TheXpert >> :

関数内で戻り値の文字列をstaticと宣言して、宣言後に初期化する必要があります。

このバリエーションも試してみました。結果は同じです。つまり、値の代わりにメモリ参照が返されます。

理由: