Mt4 サポート終了。 - ページ 39

 
George Merts:

これが利点であることは論を待ちません。

誤って誰かがフラグを変更すると、TCの動作に影響を与えることになります。

まあ、事故と無縁でいられるわけはないんですけどね。ヒューマンファクターは止められない(笑)。
 
Реter Konow:

最初の課題:OOPを使わないで効果的な解決策を示すこと。


私のソリューションの本質は、 -すべてのシンボルと時間枠の新しいバーのイベントフラグのグローバル配列を1分ごとに生成する ことです。

メリット

1.アレイの自動充填、自動クリアー。

2.システム負荷がないこと。

3.任意の関数から配列に 直接アクセスし、配列がクリアされる前にイベントフラグを保存することができます。

やばい、やっと目が覚めた...。
どのシンボルのバーがいつ来てもおかしくないことを理解し、同じ瞬間に新しいバーが来たことをシステムに伝えるかのようなタスクです。1分間に1回ポーリングする場合、どのように想定しているのでしょうか?

 
Реter Konow:
まあ、事故に対して安心することはできませんが。ヒューマンファクターは止められない))。

これでよしとする。ですから、人為的なミスをできるだけ少なくするようにコードを書くべきだと考えています。まさに、ヒューマンファクターは不可逆的なものだからです。昨日、私のコードに間違いが見つかり、EAの統計が指定された日付(EAの作成日)ではなく、履歴の最初から収集されていることがわかりました。単に変数の初期化を忘れていて、ゼロのままになってしまったのです。

そこで、分析を行う日付を指定することで、Expert Advisorのパーツ工場が作成日だけを返し、それ以外は返さないように、分析器を設計し直しました。

Expert Advisorを作成した日以前の取引履歴を分析することができなくなりました。旧バージョンで取引していたとしても、統計には含まれません。

 
Nikolai Semko:
しまった、やっと目が覚めた...。
どのシンボルのバーがいつ来てもおかしくないことを理解し、同じ瞬間に新しいバーが来たことをシステムに伝えることが課題であることに気づく。1分間に1回ポーリングする場合、どのように想定しているのでしょうか?

なぜ「今この瞬間」なのか?

皆さんは、トレードのやり方が違うだけなのです。M1タイムフレームを使用している場合、新しいバーが到着したという情報を得る必要があります - 「同じ瞬間」ではなく、新しい分の到着時に。 S1タイムフレームを使用している場合(こんにちは、Volchansky) - この情報を新しい秒の到着時に得る必要があります。もし私たちがすべてのダニに取り組んでいるのであれば、新しいダニの到来とともに情報がもたらされるはずです。

そして、「イベントによって動作する」というオプションもありますが、その場合、IsNewBar()関数ではなく、OnNewBar()関数が必要で、これは実際にはOnTick()関数の「サブセット」であると言えます。

 
Nikolai Semko:
しまった、やっと目が覚めた...。
どのようなシンボルのバーがいつ来てもおかしくないということを理解し、その瞬間に新しいバーが来たことをシステムに伝えることが重要なのです。1分間に1回ポーリングした場合、どのようなことが起こるか想像できますか?

iBars()関数は、常に現在のバーの数を 返します。前回のコール以降に変更された場合は、新しいバーイベントを配列にコミットし、変更されていない場合はコミットしません。
 
Nikolai Semko:
やばい、やっと目が覚めた...。
シンボルバーはいつ来てもおかしくないので、その瞬間に新しいバーが来たことをシステムに伝えることが重要なのです。1分間に1回ポーリングする場合、どのように想定しているのでしょうか?

なるほど、iBarsが リクエストされたときにバーが到着するのではなく、リクエストからしばらくして到着することもあるわけですね。そうすると、システムとしては寂しいことになります。そこがポイントです。


では、継続的にアクセスできるようにするためには?- 明らかにベストな解決策ではありません。

 
Реter Konow:

なるほど、投票の瞬間にバーが来るのではなく、投票後しばらくしてからバーが来るということですね。そうすると、システムとしては寂しいことになります。そこがポイントです。

ピーター 2回目ですが、別のテーマを提案します。何も書かなくていい、理論だけでいい。

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

Mt4エンド対応。

アレクセイ・ビクトロフ さん 2017.09.11 13:08

OOPの 使い勝手の原始的な例を見つけたような気がします。ここでは、配列に指定された値を埋める関数を紹介します。アレイの種類によって8種類あります。

例えば、あるパラメータを渡す必要がある関数を書き、次に別のパラメータを渡し、さらに3番目のパラメータを渡す必要があるとします。アルゴリズムによるアプローチでは、N個の異なる関数名を得ることができます。ArrayInitializeInt()ArrayInitializeDouble() などの8つの関数を書いても問題ないように思えます。でも、配列の型を考えなくても、とにかく1つの関数を使えばいいし、どの配列を入れたかごちゃごちゃしても大丈夫なのはとてもいい ことだと思うのですが・・・。


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

ピーター 2回目ですが、別のテーマを提案します。何も書かなくていい、理論だけでいい。


しばらくお待ちください。このテーマを十分に理解し、2回目を丁寧に読んでいきたいと思います。
 
Реter Konow:
ちょっとお待ちください。このテーマを十分に理解した上で、2つ目のテーマをじっくりと見ていきたいと思います。

新しいバーの 話題は、OOPの長所を知るために持ち上がったのであって、決してプログラミングのオプションや、ましてや自分の能力を知るために持ち上がったのではないことは、皆さんも覚えているとおりです。しかし、あなたのコードやアルゴリズムに対する指摘は、議論を間違った方向へ導いてしまいました。だから、続ける必要はないと思っています。

 
Alexey Viktorov:

覚えているように、新しいバーの 話題は、OOPの長所を見つけるために持ち出されたのであって、プログラミングの選択肢や、ましてやあなたの能力を見つけるために持ち出されたのではないのです。しかし、あなたのコードやアルゴリズムに対する発言は、議論を間違った方向へ導いてしまいました。だから、続ける必要はないと思っています。

つまり、OOPの長所をゴミ箱に捨て続けてほしいということで、みんなに荒らされ続けたということですか(笑)。でも、基本的にはその通りです。議論が間違った方向に行ってしまった。
理由: