voidOnTick()
{
// Объявление массивов переменных для торговых сигналовstaticdatetimeNew_Bar[2];
staticbool UpSignal[2], DnSignal[2];
// Получение торговых сигналов
TradeSignalCounter(0, остальные параметры);
TradeSignalCounter(1, остальные параметры);
// Совершение торговых операций
TradePerformer(0, остальные параметры);
TradePerformer(1, остальные параметры);
}
bool isNewBar(int Number,string Symbol_,ENUM_TIMEFRAMES Timeframe,datetime &New_Bar[])
{
// Текущее времяdatetime lastbar_time = (ENUM_SERIES_INFO_INTEGER)SeriesInfoInteger(Symbol_,Timeframe,SERIES_LASTBAR_DATE);
// Если это первый вызов функцииif(New_Bar[Number] == 0)
{
// Установим время и выйдем
New_Bar[Number] = lastbar_time;
return(false);
}
// Если время отличаетсяif(New_Bar[Number] != lastbar_time)
{
// Запомним время и вернем true
New_Bar[Number] = lastbar_time;
return(true);
}
// Дошли до этого места - значит бар не новый, вернем falsereturn(false);
}
エキスパートという ニックネームの人の間違いを正す? それはユーモアスレッドに行くべきでしょう。
あなたの投稿を見る限り、10段階評価で荒らしに関係するのでしょうか?=)
最初、そんな質問をしているのはアンドレイだと思ったのですが、彼のニックネームがTheXpertで、それに対応していることを思い出しました。
せっかく近づいたのだから、2倍の需要があることを覚悟してください。
変えた方がいい、3回投稿しても遅くはない、掲示板に専門家が十分いる。
多通貨EAにおいて、提示されたスキームで新しいバーチェックを正しく実装する方法を教えてください。
各シンボルの新しいバーを開く時間を格納するための静的 配列を追加しました。
関数isNewBar(string Symbol_, ENUM_TIMEFRAMES Timeframe); 配列New_Bar[] で動作するように変更しました。
最初、そんな質問をしているのはアンドレイだと思ったのですが、彼のニックネームがTheXpertで、それに対応していることを思い出しました。
近いので、二重の意味で需要があることを覚悟してください。
3投稿でも遅くはない、フォーラム1専門家で十分です、それを変更することをお勧めします。
初めに私はアンドリューがそのような質問をしていると思った(文脈で愚かな理解)尋ねるが、その後、私は彼が(おっと、隠された侮辱TheXpert)と一致するTheXpertを、愛称を覚えていた =)。
追伸:新しいニックネームを考えるために腰を据えています。
OnTick() 関数は、Expert Advisor が動作するチャート上で、シンボルの新しいティックが来たときにトリガーされるため、結果は異なるでしょう。異なるシンボルのティックが同時に来ることはない。そのため、最終的な結果に乖離が生じます。もし、EAが最も流動性の高い通貨で、その日のティックが最も高い通貨(eurusd)で動作するように設定した場合は、気にする必要はありません。
なぜ結果が違うのか、その理由ははっきりしています。すでにいくつかのスレッドで何度も議論されていることです。蒸れないというのは、私の場合、選択肢にありません(笑)。正しい検査 結果を得るためには、解決しなければならない問題があります。ニコラス・コシチンが提案したスキームが、今のところ最も理解しやすく、適切だと思います。しかし、今、私は上に述べた問題を決めかねています。
Konstantin Gruzdev氏は、論文の中で「スパイ」と「エージェント」を使った興味深い方法を提案しています。))しかし、彼の「エージェント」exSpyコントロールパネルMCMは 私のために動作しないようです。
Konstantin Gruzdevの「エージェント」の力を借りて、上記の問題を解決しようとした人はいるのでしょうか?
Konstantin Gruzdev氏の「エージェント」を使って上記の問題を解決しようとした方はいらっしゃいますか?
テスターではこの手法は使えないと思います。
// タイマーによる作業。何が気に入らないのか?
この技術はテスターでは使えないと思います。
コンスタンチン自身は、この記事の議論スレッドでこんなふうにコメントして いる。
OnChartEvent() は、テスターではまだ動作していません。開発者はそれを約束したのです。テスターのExpert Advisorから直接「スパイ」を呼び出して、グローバル変数によるイベントの転送を置き換える方法をテストしました(テストと呼べるかどうか)。
それは、試してみることです。
さらにいくつかのバリエーションが頭の中にあるのですが、私にはかなり複雑に感じられます。いずれにせよ、私はこの問題を解決しなければならないだろう。結果を間違えるのは、もうこりごりです。MQL5の勉強を始めたのは、もっぱら多通貨取引システムのテストができるようになったからです。それまでは、テスト結果をExcelにアップロードして、そこで計算をしていました。しかし、ストラテジーテスターで直接結果を確認する必要があります。
ウラジミールさん、この問題をどう解決されましたか?
// タイマーによる作業。何が気に入らないのか?
あ、すでに回答済み))。そうですね、このオプションもすでにいくつかのフォーラムの「サメ」が提案していますが、どのように実装できるかはまだわかりません。今は集中して、やっとこの必要な機能を作ることができそうです。もし、すぐに解決できる方法があれば、簡単な例だけでも教えていただければ、深く感謝いたします)) 。
// タイマーで作業する。何が気に入らないのか?
タイマーでテストしてみました。しかし、OnTick() 関数のコードをOnTimer() に変換するだけでよいことがわかりました。結果は同じです。正確に行うには、例えば10秒ごとにタイマーをセット する必要があります。確かに、テストは時間がかかる。唯一、一見すると不愉快かもしれない。
タイマーの周期によります。1 0日間(60*60*24*10)やれば早くなりますよ。:))
また、微妙なニュアンスもあります。例えば、土日に刻む必要はない。;)
しかし、それをテストするにはもっと時間がかかる
新しいバーをキャッチするためだけに「ティッキング」が必要な場合は、バー出現時間(H1は00分00秒)にタイマーをセットし、必要なすべてのTFにバーが出現するまで数分間1秒ごとにティッキングすれば十分である。より正確で経済的なものになります。
しかし、カスタムイベントを 用いたソリューションは、もちろん、よりエレガントです。