MQL5への願い - ページ 27

 
SK. писал (а):
集団的解決の時代は終わり、失敗したのです。第一線には常にごく少数の人がいて、自分のアイデアに触発されている。私たちの生存条件を決めているのは彼らなのです。

帽子を脱いだスマイリーフェイスがある/:-)

人類の歴史を追ってみても、集団的な意思決定が行われた記憶はまったくない。ここで、あなたは正しいです。だから、もし開発者が本当に興味があるなら......と書いたのです。それは、ユーザーの自尊心を保つための甘い薬ではなく、彼の関心を示しているようなものでしょう。

 

現在のバージョンに対する疑問と同時に、これからのバージョンに対する願い。
Testerで、「indicators from indicators」を使ってEAをテストする場合。
これらの指標を問うには、十分なモデル時間がありません。
例えば、こんな感じです。
インジケータ#1、#1.1がiMA()からデータを受信する。
指標2は、指標1および1.1のデータをもとに作成されています。
指標3は、指標2のデータをもとに四則演算を行う
Expert Advisor ポーリングインジケータ 3,
けど
テスト中、Expert Advisorはデータを受信しません(取引モードでは完全に動作します)。
テスト中、Expert Advisorは1~2回の取引を正しく行い、その後沈黙したままになります。
2147483647と表示されるからです。
-あるスタックがオーバーフローしていませんか?
-GetLastError()==0 のとき。
-バーの可視化やモデリングの速度に依存しない。
- インジケータをExpert Advisorに移動させると、Expert Advisorでの計算がある程度の時間制限までテストが可能になります。

1.Strategy Testerで、指標をポーリングする時間を追加するための設定はありますか?
2.GetLastError()で「インジケータが取得できませんでした」/「Expert Advisorが取得できませんでした」というエラーが検出されるかどうか。)?
つまり、このエラーは、2147483647を返すことによってDRAW_LINEを描画する指標でのみ検出することができるようになりました。

 
Korey:

アドバイザーは、インジケータ3をポーリングする。
けど
テストでは、Expert Advisorはデータを受信しません(トレードモードでは正常に動作します)。
このように、実行中にEAが1~2回正しくトレードを行うことがありますが、それ以降は無音になります。
というのは、インジケータがゼロ=2147483647のマシンを来るからです。
-あるスタックがオーバーフローしていませんか?
-GetLastError()==0 のとき。

...


インジケーターに明確な問題があるんですね。正しいバージョンのインジケータを入手すれば、計算のシンクロニシティに関するすべての疑問が解消されます。インジケーターのバグで、何かの計算が間に合わず、「インジケーターの計算待ち」になっているのではと思うのです。こんなのありかよ!?
 
Rosh:
コリー

アドバイザーは、インジケータ3をポーリングする。
けど
テストでは、Expert Advisorはデータを受信しません(トレードモードでは正常に動作します)。
このように、実行中にEAが1、2回正しくトレードを行うことがありますが、それ以降は無音です。
2147483647と表示されるからです。
-あるスタックがオーバーフローしていませんか?
-GetLastError()==0 のとき。

...


明らかに指標に問題がありますね。正しいバージョンのインジケータを入手すれば、計算のシンクロニシティに関するすべての疑問が解消されます。インジケーターのバグで、何かの計算が間に合わず、「インジケーターの計算待ち」になっているのではと思うのです。こんなのありかよ!?


コメントに対して、いつものズレを発見してしまいました。
インジケータのバーの計算数をmax=1000に制限していた(リソースを節約するのに慣れているため)
最大値を3000に上げるとうまくいきました。
すなわち、計算されたバーの数が1000本しかなかったというバグです。
1年以上品質テストなしでやってきたので、感謝、大感謝です!!!

しかし、なぜこの方法ではダメなのか、論理的に説明できるわけがない。-B テスターではインデックスバッファの動作が違うのでしょうか?
EAで0,1,2本のバーが必要な場合、なぜ1000本以上のインジケータバーを数える必要があるのですか?

 
テスターでは、すべてがオンラインと同じように動作しますが、これは意図的に設計されたものです。MetaTrader 4のテスター:知っておく必要があります。
 

プログラマーは、ネットワークに接続されていなくてもプログラムのテストができることが望ましい。

 
Rosh:
テスターでは、すべてがオンラインと同じように動作しますが、これは意図的に設計されたものです。MetaTrader 4のテスター:これは知っておく必要が あります。

インジケーターのロジックにおける違反は、「間違って」設定された計算深度<1024という1つのことだけに関連しています。
ですから。
1.BARSよりはるかに小さい数字で指標を計算することは、事前にはわからないし、明確でもない。
取引中とテスターの両方で、インジケーターラインが消えることがあります。
そのため、例えばドキュメントに追記するなどの工夫をする価値があります。
"インジケーターのバー数を......(1024?)未満で計算する場合、安定した動作は保証されません"。
...フォーラム内で1000本制限のインジケータを追加したところ、ふと気がつきました。
初めて呼ばれたときに、線を引くことを拒否されることがあること。深度制限を解除すると、すべて正常になります。

2.バッファインデックス値ではなく、インジケータからマシンゼロを返すことが可能であり、かつ明白である場合。
ここでも、何とかしてキャッチすることが望まれる。(isiのプログラミングについて))
a)配列の外側にあるのなら、なぜトレーサーはそれを捕捉しないのでしょうか?
b)インデックスバッファに割り当てたメモリを-(6666666)で強制的に初期化する、のどちらか。)
インデックスバッファのnullと計算がないことを区別するため。

 
MQL4を1ヶ月間使ってみて、MQL4は非常に真面目な言語であることが分かりました)そして、その専門性においては、おそらく最高のものだと思います。しかし、本格的なプログラミング言語のためのステップバイステップのデバッガが強く不足しているのです。ただし、このトピックの27ページすべてを読んだわけではないので、この要望がすでに投稿されていたら、失礼します。
 
ここで一考。引き出しや再計算の際、インジケータは「その」オブジェクトのみを選択的に削除する必要があります。つまり、それらを見つけるためには、その名前にインジケータ属性が含まれている必要があります。私は通常、オブジェクト名にインジケータ名を使用します。しかし、1つのチャートに同じ指標が複数ある場合はうまくいきません。端末内の各インジケータインスタンスは一意のIDを持っていると仮定してもよい。このIDにアクセスする関数があれば、Object_Name = ID+"内部オブジェクト名 "となり、問題は簡単に解決する。
 
皆さん、私たちはMQL5の未来を願って、せめてこれくらいはと、神頼みをしてきました。そろそろ自分自身に「やめろ」と言うべきかもしれませんね?この言語がどのようなものになるのか、開発者に聞いてみるのもいいかもしれませんね。もしかしたら、テスト用の何かをくれるかもしれません。例えば、デバッガーのテストに......MQL5実装の出発点として、いいんじゃないでしょうか。私が理解する限り、デバッガはMQL4のコードもサポートするはずですが...。そして、準備ができたのなら、なぜテストしないのか?
開発者の皆さんはどのように感じていますか?