マルチカレンシーアドバイザー。できれば、開発者の意見を聞きたい。

 
マルチカレンシーアドバイザーがある。一言で言えば、要はこういうことです。すべての計算は、あるシンボルに対して行われ、取引は別のシンボルに対して行われます。Expert Advisorは、新しいバーを 開くことを明示的に制御して動作します。そうすると、次の嫌なことが起こるんです。Expert Advisor が実際の口座で取引を開始(スキップ)していなくても、Strategy Tester で確認すると、この取引は存在していることがあります。あるいは、Expert Advisor が必要以上に遅いバーで実際の取引を開始しても、Strategy Tester で確認すると、取引は行われていることがあります。何に関連することができるのか?
 
LeoV:
マルチカレンシーEAがある。簡単に言うと、以下のような考え方です。あるシンボルに対してすべての計算を行い、別のシンボルに対して取引を行う。Expert Advisorは、新しいバーを開くという明示的な制御で動作します。そうすると、次の嫌なことが起こるんです。Expert Advisor が実際の口座で取引を開始(スキップ)していなくても、Strategy Tester で確認すると、この取引は存在していることがあります。あるいは、Expert Advisor が必要以上に遅いバーで実際の取引を開始しても、Strategy Tester で確認すると、取引は行われていることがあります。何に関連することができるのか?

新しい相場が来ても、古い相場で開くとポジションが開かないことがある...。

 
kharko:

新しい相場が来ても、古い相場で開くとポジションが開かないことがある...。

言いたいことはわかるが、この状況をEAが処理するのである。ログを見ただけでは、まったく信号がない。これは、EAが自らトリガーをかけていない(ポジションを開く要求を出していない)ことを意味します。あるいは、次のバーでのみ動作しました。そして、このようなことは常に起こるわけではありません。でも、時々でいいんです。そして、それに関連するものがまったくわからない......。テスターでは、すべて正常に開閉していますが

 
EAはどのチャートで分析、取引するのですか?iBarShift()関数は使用されていますか、どのようなフラグで使用されていますか、それとも全く使用されていないのでしょうか?
 
LeoV:
多通貨EAがあります。簡単に言うと、意味は以下の通りです。すべての計算は、あるシンボルに対して行われ、取引は別のシンボルに対して行われます。Expert Advisorは、新しいバーを開くという明示的な制御で動作します。そうすると、次の嫌なことが起こるんです。Expert Advisor が実際の口座で取引を開始(スキップ)していなくても、Strategy Tester で確認すると、この取引は存在していることがあります。あるいは、Expert Advisor が必要以上に遅いバーで実際の取引を開始しても、Strategy Tester で確認すると、取引は行われていることがあります。何に関連することができるのか?

プリントアウトしてみる...

プリント(.



信号前、信号後、開口時、開口後

印刷明示条件

のように



// Print( " MyOPEN == 1 " + MyOPEN を待ちます );


if ( MyOPEN == 1 )

{

Print( " entered by MyOPEN == 1 " );
.


...


}



---

それと、新しいBARのオープンについても !

スキップされたバーがあることに注意してくださいまた、テスターではミスバーが発生しない

酒場を探すより、新しい酒場を探せ

---

今この瞬間も

チャートEURUSD M5で一日の初めから140バーが形成されたが、CHF 137バー、すなわち3バー:-)を失った。

CHFでEURに対応するバーを単純に探すと、バーを見落とす可能性があります。

---


で、再入力



シグナルが出たら、そのシグナルを見逃さずに、コンディションでエントリー、エグジットしてください。

で、信号がFILLEDになっているかどうか確認してください。

されるまで - 実行するコードを実行する - ループに入らないように、カウンタを作る

カウンターを出てから→入る必要があるかどうか確認→出ていく

そして、入る必要がある場合は、もう一度実行します。



----

さらに、トレーディングコード

しかも、このコードが単純であるはずがないのです


(トロールのロスレス開閉、つまりシグナルを受け取った後のオーダーを処理するような、メカニックの仕事を担当するコードがあります )

 
LeoV:
マルチカレンシーエキスパートアドバイザーがあります。簡単に言うと、以下のような考え方です。すべての計算は、あるシンボルに対して行われ、取引は別のシンボルに対して行われます。Expert Advisorは、新しいバーを開くことを明示的に制御して動作します。そうすると、次の嫌なことが起こるんです。Expert Advisor が実際の口座で取引を開始(スキップ)していなくても、Strategy Tester で確認すると、この取引は存在していることがあります。あるいは、Expert Advisor が必要以上に遅いバーで実際の取引を開始しても、Strategy Tester で確認すると、取引は行われていることがあります。何に関連することができるのか?

これをリクオートと呼びます。テスターでは、トレードはリクオートではありません。したがって、オープンしたトレードのチケットがマイナスである場合、形成されたバーのフラグをリセットする必要があります。




static int prevtime = 0; // バーの開始時刻



...


int start() {


if (Time[0] == prevtime) return(0); // バーは同じなので終了。

prevtime = Time[0]; // 新しいバー、時間を維持する


...


int ticket = -1;


...


ticket = OrderSend(...); //ポジションオープンを 試みる

if (ticket < 0) { // 何らかの理由でポジションがオープンされませんでした。

Sleep(30000)です。

// 次のバーではなく、次のティックで操作を繰り返すために、形成されたバーのフラグをリセットします。

prevtime = Time[1];

}


}

 

このEAは1時間足のバーで動作します。EAはこれを監視し、必要であれば新しいリクエストを送信します。EAが少なくとも注文を開始しようとするために、トリガーさえもしないことについて書きました。つまり、2-3人の注文で、しっかり開き(当たり前ですが)、4人目(3人目)は開き始めもしないか、1時間後に開くこともあります。テスターでこの瞬間を確認すれば、このオーダーは正しい位置にあることになりますが。

問題は、私が理解しているように、楽器のティックが均等に来ないことです。また、計算が行われるシンボルの新しいバーを 開くためのティックは、私たちが取引するシンボルよりもずっと後に来るかもしれません。あるいはその逆もしかり。そして、ここで矛盾が生じることがあります。しかし、どうすればこれを回避できるのでしょうか。

 
Expert Advisorは、異なる商品の1時間ごとのローソクが同期して開くことを前提としています。つまり、EURUSDに新しい時間足のローソク足が表示されると、エキスパートアドバイザーが起動し、GBPUSDの時間足の値をチェックするのです。しかし、その瞬間にポンドの新時給が始まっていなければ、すべてがボロボロになってしまう。一般的には、EAのロジックを少し整理する必要があります。
 
Rosh:
Expert Advisorは、異なるシンボルの1時間足のローソクが同期して開くことを意味します。つまり、EURUSDに新しい1時間足のローソク足が表示されると、Expert AdvisorはGBPUSDの1時間足のタイムフレームで値をチェックすることを開始するのです。しかし、その瞬間にポンドの新時給が始まっていなければ、すべてがボロボロになってしまう。一般的には、EAのロジックを少し整理する必要があります。

返信ありがとうございます、そういう理由かと思いました。どうか、方法を教えてください。なぜなら、これは大きな問題だからです。スクリーンショットはこちら、実物のものです。ストラテジーテスターではポーズが15.00にオープンされ、実際の口座では16.00にのみオープンされたことがわかります。Strategy Testerとリアル口座で同じパラメータを使用していますが。

 
LeoV:

このEAは1時間足のバーで動作します。EAはこれを監視し、必要であれば新しいリクエストを送信します。EAが少なくとも注文を開始しようとするために、トリガーさえもしないことについて書きました。つまり、2-3人の注文で、しっかり開き(当たり前ですが)、4人目(3人目)は開き始めもしないか、1時間後に開くこともあります。テスターでこの瞬間を確認すれば、このオーダーは正しい位置にあることになりますが。

問題は、私が理解しているように、楽器のティックが均等に来ないことです。また、計算が行われるシンボルの新しいバーを開くためのティックは、私たちが取引するシンボルよりもずっと後になることがあります。あるいはその逆もしかり。そして、ここで矛盾が生じることがあります。しかし、どうすればそれを回避できるのか。

どの時間足でも(どの商品でも)新しいティックが1時間の始まりであることを考慮する。

---

ろんを正す

時間バーが開いたらすぐに

新しいバーが 形成されていないにもかかわらず、バーが既に終了していると仮定して、他の計器を再計算する。

というのも、数秒から数十秒の間に、そこに表示されるからです。


---

2つ、3つの楽器を数えたとします。

少なくとも20の金融商品で、1時間の始まりを捉えることができる - 円の金融商品は非常に速いので望ましい



 
// ---  практически гарантия ловли начала часа двумя БОДРЫМИ парами
   if ( TimeSaveBehchH1 == iTime("GBJJPY",PERIOD_H1,0) )
   {
       TimeSaveBehchH1 = iTime("GBJJPY",PERIOD_H1,0); // новый бар  
   }
   if ( TimeSaveBehchH1 == iTime("USDJPY",PERIOD_H1,0) )
   {
       TimeSaveBehchH1 = iTime("USDJPY",PERIOD_H1,0); // новый бар  
   }
//---
   if ( TimeSaveBehchH1 == iTime("EURUSD",PERIOD_H1,0) ) // в довершении ловим на своей рабоче паре
   {
       TimeSaveBehchH1 = iTime("EURUSD",PERIOD_H1,0); // новый бар  
   }
   if ( TimeSaveBehchH1 == iTime("USDCHF",PERIOD_H1,0) ) // ловим на второй паре 
   {
       TimeSaveBehchH1 = iTime("USDCHF",PERIOD_H1,0); // новый бар 
   }


というのは、正直なところ、あまりいいことではありません. ダニはこのペアには来なかったので、また飛んでくるでしょう。

入力を生成するコードの一部を見せれば、ロジックの誤りをより早く発見できるかもしれません。

 
LeoV:
ロッシュ
Expert Advisorは、異なるシンボルの1時間足のローソク足が同期して開くと仮定しています。つまり、EURUSDに新しい1時間足のローソク足が表示されると、エキスパートアドバイザーはGBPUSDの1時間足のタイムフレームで値をチェックすることを開始するのです。しかし、その瞬間にポンドの新時給が始まっていなければ、すべてがボロボロになってしまう。一般的には、EAのロジックを少し整理する必要があります。

返信ありがとうございます、そういう理由かと思いました。どうか、方法を教えてください。なぜなら、これは大きな問題だからです。スクリーンショットはこちら、実物のものです。ストラテジーテスターではポーズが15.00にオープンされ、実際の口座では16.00にのみオープンされたことがわかります。テスター上と実機のパラメータは同じですが。

...

取引されたシンボルでは、新しいバーの ティックが早く来て、分析されたシンボルの古いバーが分析に参加した理由である、開始はオフに動作し、次の時間を待っています。コードの断片を見ずに推測するのは楽しいものです。

理由: