// простой пример контроля истори, просто логика int ФЛАГпроверкиИСТОРИ =0; // 0-история не проверена или не загруженаvoid init()
{
ФЛАГпроверкиИСТОРИ =0; // ставим флаг
}
void start()
{
// читаем историю на предмет пропущеных баровif ( ФЛАГпроверкиИСТОРИ == 0)
{
// проверяем а вся ли нужна история есть и если нет то она загружается// загружаем
если загружена ФЛАГпроверкиИСТОРИ=1;
return;
}
}
誰にでも個人的な意見を持つ権利はありますが、他人を侮辱する権利はありません。
この場合、すべては完全に透明です - 2人のフォーラムメンバーがnenの 投稿に非常に否定的な見解を示し、その後に禁止が行われ、Renatは 禁止が何であるかを明確に説明しました。
....その後、禁止令が出たが、レナートは その理由を明確に説明した。
私は2つのことをお願いしただけです。
1) フォーラムメンバーのプロフィールの訪問者に、この同じフォーラムメンバーが禁止されていることを知らせるため。
2)禁止令を出すとき-理由を明示すること(わかりやすい説明の後ではなく、禁止令の発表の時に)。
これは単なる技術的なことで、道徳とか教育とか、何の関係もない。
私はまだユーザーを禁止する正しい方法を提案します:ユーザーはフォーラムから禁止されるべきではなく、新しいスレッドと投稿の作成だけが禁止されるべきです。そうすれば、禁止された人は少なくとも(直接)質問することができ、新しいニックネームでユーザーリストを散らかさないようにできます。
純粋にフォーラムのエンジンを改善するための技術的な要望/提案です。
私は2つのことをお願いしただけです。
1) フォーラムメンバーのプロフィールの訪問者に、この同じフォーラムメンバーが禁止されていることを知らせるため。
2)禁止令を出すとき-理由を明示すること(わかりやすい説明の後ではなく、禁止令の発表の時に)。
これは単なる技術的なことで、道徳とか教育とか、何の関係もない。
私はまた、ユーザーを禁止する正しい方法を提案するためにあえてします:ユーザーは、フォーラムから禁止されるべきではなく、新しいスレッドや投稿の作成のみです。
これは純粋にフォーラムのエンジンを改善するための技術的な要望/提案です。
なるほど、紹介されている記事を見てみますね。
負荷がかかっているデータについて...さて、時間が経ってしまったので、過去ログを引用することはできません。でも、こんな感じでしたね。
アメリカンブローカーのATCでは、EAがつけっぱなしで、ターミナルが閉鎖されていた。翌日、端末が開通し、自動ログインした後、引用符がない状態で間が空いた。Expert Advisorが追加でポジション開設のリクエストを送ったところ、履歴の入れ替えが始まり、本来ならクローズすべきところを前日の計算通りにポジションを開設したところ、反対方向に動いている相場に対して瞬時に負けが確定してしまった。このポジションは結局、深い損失で決済されました。いくら損失したか覚えていませんが、かなりの損失です。
もう一つのケース。ボリンジャーに似たチャンネル計算をアルゴリズムに持つExpert Advisorを残したが、適応アルゴリズムを持っているため多くのバーを必要とする。取引開始の瞬間は見ていませんが、20分後くらいに見ています。適応された平均値からのずれを考慮せず、平均値上に横たわるようにチャンネルが線状に割れてしまうことが判明したのです。私のExpert Advisorは次々とポジションを開いては閉じ、20分間で0.2-0.3ロットの差で約4,500ドルの損失となったのです。完全に勝ち組の市場で4,500ドル。これは、上に引用したデザインについて、データが非常に少ないか、何かが欠けている場合に起こり得ることです。
今では、取引後は必ずEAをオフにするようにしています。今は、初回起動後は必ずExpert Advisorを無効にして、データがポンピングされるのを待ち、それから初めて有効にします。
私から見て
EAでは、データ(通常は任意のデータ)が利用可能であることが必要です。
すべてのエラーは、コードのエラーとデータのエラーに分けられるからです
この問題は、データの利用可能性を分析することで解決される。 必要なデータの入手状況を分析することで問題を解決します
とその正しさを確認してから使いましょう
例:割り算をする前に、ゼロで割り切れるかどうかを確認するのは初歩的なことです。
を使えば、どんな状況でも正しい音になります。マジでありえない
をチェックすることで、分割時にプログラムがクラッシュしないことを100%保証します! ということで、データを確認しましょう
を、このようなことがないように
Expert Advisorは、必要なバーの数を正確に知っているはずです。
さらに、シンプルで効果的なアルゴリズム
あなたは、必要な時間枠または時間枠で現在動作しているキャンドルから開始する必要があります。
を正しい深さまで走らせること!そして、ミスバーがないかどうかを確認すること!それほど難しいことではありません。
コードは教えません ...こんなコードを簡単に書ける人がここにいるんだ!
次に、Expert Advisorは、ちょうどリッピングまたはクローズではなく、ブレイク!フルヒストリーがないことを確認します。
このことを考慮して、足りないバーを補うための措置を講じることです。
そして、その後に初めて取引を許可するのです!
--
問題は、このアルゴリズムにそのような制御がないことです。
4,500ドルを失うより簡単だからです。
--
そのようなコードを書けない人のために、100~200ドルでこちらで書いてくれます
4,500円以下です!
希望する時間枠の現在の作業ローソク足から。
正しい深さまで走らせ、ミスバーがないか確認する。
由良さん、ありがとうございます。
しかし、ターミナルを開いたばかりで、ゼロバーがまだ前日のものなど古い場合はどうすればいいのでしょう。もちろん、そこからミスバーを数えてある深さまで走ることはできますが、誤差が生じます。これが最後のバーかどうか、EAはどのように判断するのですか?先ほど、原理的にはTimeLocal()とTimeCurrent() の時間差を考慮し、小さなデルタを加えて比較することができると言いましたが、特にCADペアでは3~5分間クォートがないことがあり、おそらくエラーとみなすことができるからです。多分、数分間通信が途絶えた時など、開始時とその後の見逃したバーの修正時に行えば十分で、おそらく再計算に時間がかかりすぎるため、すべてのバーで再計算する必要はないのでしょう。私が損失について書いたExpert Advisorは、統計的な初期適応のために最大2万本の棒グラフを必要とします。このような数では、各バーでサイクルを探すのは骨が折れるので、おそらく必要ないでしょう。もちろん、これがベストな方法というわけではなく、さらにパソコンのクロックに依存します。もっといい方法があるのでは?しかし、最近見ていると、IsConected()関数がトリガーされると、たいていすぐにゼロバーが表示されます。
由良さん、ありがとうございます。
しかし、ターミナルを開いたばかりで、ゼロバーがまだ古い(例えば前日の)場合、どうすればいいのでしょうか?もちろん、外したバーを数えて、そこからある深さまで走ることはできますが、誤差が生じます。これが最後のバーかどうか、EAはどのように判断するのですか?先ほど、原理的にはTimeLocal()とTimeCurrent()の時間差を考慮し、小さなデルタを加えて比較することができると言いましたが、特にCADペアでは3~5分間クォートがないことがあり、おそらくエラーとみなすことができるからです。たぶん、数分間通信が途絶えたときなど、開始時とその後の見逃したバーの修正時に行えば十分で、おそらく再計算に時間がかかりすぎるため、すべてのバーで再計算する必要はないのでしょう。私が損失について書いたExpert Advisorは、統計的な初期適応のために最大2万本の棒グラフを必要とします。このような数では、各バーでサイクルを実行するのは苦痛であり、おそらく必要ないでしょう。もちろん、これがベストな方法というわけではなく、さらにパソコンのクロックに依存します。もっといい方法があるのでは?しかし、最近見ていると、IsConected()関数がトリガーされると、通常、ほとんどすぐにゼロバーが表示されるようになりました。
まあ、何事もシンプルに考えればいいのですが......。int start()プロシージャは新しいティックでのみ呼び出され、それは100%、関数TimeCurrent()(最後の既知のサーバー時間(最後の引用符到着の時間)を返す)は、バーの有無にかかわらず、すでに実際のものとなることを意味します...。
その後、すべてがクリアになると思うのですが...。
残念ながら、初期データ、テストパラメータ、ログが指定されていません。
さらに、多くのインストールを必要とするだけでなく、追加のライブラリがないために動作しないライブラリ(DLL)のことを指しています(これは、追加のDLLファイルのことを忘れたライブラリの作者に対してです)。
これらのライブラリの作者にお問い合わせください。
私が提供したリンクをたどると、1つの入力パラメータだけが値を持ち、それが記述されているように設定されていることがわかります: StopLoss=100...1 000 step 10; x=1...1 000 000 step 1. それに、私は以前のビルドではこのエラーが発生しなかったと言ったので、このエラーはあなたのものです。実際にすべてが機能します。このような奇妙なメッセージが出るだけです。ですから、私にとってはこのメッセージだけで、他の人にとってはこのエラーの影響でうまくいかないかもしれません。
由良さん、ありがとうございます。
しかし、ターミナルを開いたばかりで、ゼロバーがまだ古い(例えば前日の)場合、どうすればいいのでしょうか?もちろん、外したバーを数えて、そこからある深さまで走ることはできますが、誤差が生じます。これが最後のバーかどうか、EAはどのように判断するのですか?先ほど、原理的にはTimeLocal()とTimeCurrent()の時間差を考慮し、小さなデルタを加えて比較することができると言いましたが、特にCADペアでは3~5分間クォートがないことがあり、おそらくエラーとみなすことができるからです。多分、数分間通信が途絶えた場合など、開始時とその後の見逃したバーの修正時に行えば十分で、おそらく再計算に時間がかかりすぎるため、すべてのバーで再計算する必要はないでしょう。私が損失について書いたExpert Advisorは、統計的な初期適応のために最大2万本の棒グラフを必要とします。このような数では、各バーでサイクルを実行するのは苦痛であり、おそらく必要ないでしょう。もちろん、これがベストな方法というわけではなく、さらにパソコンのクロックに依存します。もっといい方法があるのでは?最近見ていると、IsConected()関数がトリガーした場合、通常はほぼ即座にゼロバーが表示されるのだが。
こんにちは。
これも論理的に確認できるのです
まず、いくつかのティックを取得し、TimeCurrent() の時間を計り、それがバーから遠い場合は、それをロードします - しかし、週末も考慮する必要があります。
月曜日には、あなたのブローカーで開始時刻を知る必要があり、金曜日には終了時刻(その時、小さなffは、いくつかのバーの小さなエラーを持っています。
(月曜の開始時刻と金曜の終了時刻は、より長い期間の平均法で自動的に計算される場合があります)
ろんりせきさん
私が提供したリンクをたどれば、説明文にあるように、1つの入力パラメータだけが値を持ち、設定されていることがわかるでしょう: StopLoss=100...1 000 step 10; x=1...1 000 000 step 1。実際にすべてが機能します。このような奇妙なメッセージが出るだけです。そのため、私にとってはこのメッセージだけで、他の人はこのエラーの影響で全く動作しないこともあり得ます。
私は熱心にすべてを整理し、それをすべて読み、論理を理解しましたが、まさに彼が言ったことに突き当たりました - ライブラリセットの作者がレイアウトしていないサードパーティのDLLライブラリが十分ではありません(インストーラさえ作りましたが)。
どうやら、些細な物忘れのようだ。しかし、インターネット上でいくつかのDLLファイルを探し回ることはできません。