マルチカレンシーアドバイザーに関する質問 - ページ 6

 

まあそれは、ここでの文句ではない。

まるで初めてルールを見たかのような......。この問題はすでに議論されています - 第1回大会のスレッドで - ホームページをご覧ください。

 

Metaquotesの履歴でExpert Advisorをテストし最適化しています。 最初はビルド208(Alpari用のインストール)で作業していました - 私はカウンターポイントが必要ですが、209には何もありません。その後、Metaquotesからダウンロードしたビルド209(Metaquotesによるインストール)で、同じパラメータと同じ履歴でExpert Advisorをテストしました。結果は大きく異なる。また、同じ品質のテストであっても、履歴のバー数、シミュレーションのティック数が異なります。 ビルド208と209の動作アルゴリズムが異なる理由、またはシンボルの設定(スプレッド、スワップ、入金、ストップレベルなど)が原因であると思われますが、一方はアルパリ、もう一方はメタクボーツである理由を教えて下さい。それとも理由は他にあるのでしょうか?また、Metakvotesのデータで適切なテストと最適化を行うにはどうすればよいのでしょうか? - Alpariから208ビルドを持つ歴史?208ビルド(Metakvotesインストール)はどこでダウンロードできますか?

Renatさんのレシピ「Automated Trading Championship 2007: Common Errors in EAs」を使って履歴をダウンロードし、以前はすべての.hst-filesを削除していました。

ストラテジーテスターレポート
ワーカー
MetaQuotes-Demo (Build 208)


シンボルマーク EURUSD (ユーロ vs 米ドル)
期間 15分(M15) 1999.01.05 13:00〜2007.09.07 22:45
モデル 全ティック(各ティックのフラクタル補間で利用可能な最小の全期間をベースとする)
パラメータ
歴史に残るバー 215177 モデル化されたダニ 13375536 モデリング品質 89.96%
初回入金額 10000.00
当期純利益 3484.57 利益合計 14828.81 全損 -11344.24
収益性 1.31 勝利への期待 7.20
絶対値ドローダウン 896.44 最大ドローダウン 1255.96 (12.12%) 相対的ドローダウン 12.12% (1255.96)
総取引高 484 ショートポジション(勝率) 249 (47.79%) ロングポジション(勝率) 235 (52.77%)
利益を得た取引(全体の割合) 243 (50.21%) 損失取引(全体に占める割合) 241 (49.79%)
最大 儲け話 426.34 負け組み -99.96
平均値 得な話 61.02 負け組み -47.07
最大数 れんしょう 6 (466.42) 継続的損失(ロス) 7 (-275.39)
最大 継続的な利益(勝利数) 653.20 (4) 連続損失(損失数) -286.62 (3)
平均値 連勝 2 継続的な損失 2

ストラテジーテスターレポート
ワーカー
MetaQuotes-Demo (Build 209)


シンボルマーク EURUSD (ユーロ vs 米ドル)
期間 15分(M15) 1999.01.05 13:00 ~ 2007.09.07 22:45 (1970.01.01~2007.09.08まで)
モデル 全ティック(各ティックのフラクタル補間で利用可能な最小の全期間をベースとする)
パラメータ
歴史に残るバー 215437 モデル化されたダニ 15419309 モデリング品質 89.96%
初回入金額 10000.00
当期純利益 1882.77 利益合計 13653.61 全損 -11770.84
収益性 1.16 期待されるペイオフ 3.82
絶対値ドローダウン 896.21 最大ドローダウン 1331.85 (12.52%) 相対的ドローダウン 12.52% (1331.85)
総取引高 493 ショートポジション(勝率) 263 (48.67%) ロングポジション(勝率) 230 (51.30%)
利益を得た取引(全体の割合) 246 (49.90%) 損失取引(全体に占める割合) 247 (50.10%)
最大 儲け話 426.34 負け組み -99.96
平均値 得な話 55.50 負け組み -47.66
最大 れんしょう 6 (466.42) 継続的損失(ロス) 7 (-275.39)
最大 継続的な利益(勝利数) 522.72 (3) 連続損失(損失数) -318.74 (5)
平均値 連勝 2 継続損失 2

 

どうやら、引用フィードそのものに問題があるようです。例えば、異なるヒストリカルバージョンのオープン/クローズ価格は わずかに異なるため、バー内の値動きはわずかに異なるようにモデル化されますまた、ストップ数=40/50の場合、これはすでに影響を及ぼしています。

また、よくわからないのですが、テストは2回ともmt4アルパリで行ったのですか?(引用元が異なる)。

それともmt4 MQを使った2回目?もしかしたら、そこはスプレッドが違うのかもしれませんね。そして500回の取引では、すでに1pipが「-500」になっています。

スワップも同じだし...。

 
rid:

どうやら、プライスフィードそのものらしい。例えば、異なる履歴バージョンの開始/終了価格はわずかに異なり、したがってバー内の値動きはわずかに異なってモデル化されます!そして、ストップ=40/50では、これはすでに影響を及ぼします。

また、よくわからないのですが、テストは2回ともmt4アルパリで行ったのですか?(引用元が異なる)。

それともmt4 MQを使った2回目?もしかしたら、そこはスプレッドが違うのかもしれませんね。そして500回の取引では、すでに1pipが「-500」になっています。

スワップもそうだし...。


ここでのピッチは?引用文は、メタボテックのヒストリーセンターから両端末にアップロードされます。最初の端末はAlpariのインストール(ビルド208)から、2番目の端末はMetakvotesのインストール(ビルド209)から作成されたものです。Metakvotesが発行したテストアカウントにログインし、Renatのレシピにしたがって引用文をアップロードしました。最初の300件ほどの取引はほぼ1対1で進み(これは相場、スプレッド、スワップ...の同一性を確認するもの)、その後異なる(ステートメントを参照)。同じクオリティのモデリングに驚かされる :(

そしてもう一つ驚くべきことは、Expert Advisorは複雑ではなく、たった一つの組み込みインディケータを使用し、Metakvotes History CenterのデータよりもAlpariのデータの方が2-3倍良い結果を示しています。 そしてどんな最適化によってもAlpariの結果に近づくことはできません。これは、一定の0.1ロットMOL約35、PF = 2.5と取引するとき、取引は数日間、すなわちTS明らかにないスキャルパー/スキャルパーを時々続くという事実にもかかわらず。

ファイル:
test.zip  278 kb
 

もうひとつ、こんなことも推測されます。

私も1台のMT4端末を異なるDCにログインさせた場合、履歴に問題が発生したことがあります。最初は何も問題がないように思えた。そして、どこかでクリックしたのでしょう、ある証券会社の歴史の断片が(同じ一組の)別の証券会社の歴史に忍び込み始めました。あるいは、塊が完全に落ちてしまうようになった。最終的には、1つの端末で異なる証券会社の口座を開くことを拒否するほど、すべてがめちゃくちゃになってしまったのです。

今、私のcopmには、異なる証券会社のMt4口座が4つありますが、この混乱で問題を解決しましたよ。同じようにやってみてください。

P.S 私も気づきました。そこに証券会社のMasterforex(それは広告を考慮しないでください - ちょうど言って...) 。だからその引用で、私のEAはなぜか履歴に優れた結果を示すのです。しかし、LiteやAlpariでは、同じパラメータと品質で、やや悪化しています。

 
rid:

もうひとつ、こんなことも推測されます。

私も1台のMT4端末を異なるDCにログインさせた場合、履歴に問題が発生したことがあります。最初は何も問題がないように思えた。そして、どこかでクリックしたのでしょう、ある証券会社の歴史の断片が(同じ一組の)別の証券会社の歴史に忍び込み始めました。あるいは、塊が完全に落ちてしまうようになった。最終的には、1つの端末で異なる証券会社の口座を開くことを拒否するほど、すべてがめちゃくちゃになってしまったのです。

今、私のcopmには、異なる証券会社のMt4口座が4つありますが、この混乱で問題を解決しましたよ。を心がけてください。


ありがとうございます。しかし、この問題は認識しています。上に書いたように、クリーンインストールし、インストールし、すべての.hstファイルを削除し、Metacvotesが発行した1つのアカウントに2つの端末をそれぞれログオンし、 configフォルダから他の端末をすべて削除したので、混乱はなく、外国の歴史の断片はどこから来ることもないだろうと思います。そして純粋にテスター端末のアルパリでは、先ほど2~3倍の結果が出たのですが、どの証券会社や口座にも全くログインしていませんでした。Alpariの.hstファイルを読み込んでいます。
 
なぜ、バーや ティックの数が変わっても、同じシミュレーション品質が得られるのかという疑問が残ります。また、ダウンロードフォルダが、より大容量の履歴を漏れなく収録しているという保証はどこにあるのでしょうか。判明したのです。 テスターのシミュレーション品質に対する定量的な評価は信用できないのでは?
 

誰も信用できない!

テスターはバーの本数には反応しないと思うのですが。

そして、品質評価については、量的な評価として、以下の基準で評価されていることがわかる:- テストした時間枠が、どれだけ完全にその中の分相場で埋め尽くされているか。満杯の場合は、=90%。完全に充填されていない場合は、品質が低下します。

しかし、FuyとKiwiの全てのTFの相場が(ロード時)2006年9月から10月・11月まで不可解な落ち込みを見せました。しかし、テスターはそれに気づかず、どの時間枠の他のバーも完全に分で埋め尽くされているため、=90%と表示します。

そして、バーが欠けているという事実が、テスターには見えていない。

もしかしたら、どこかで1週間や2週間の歴史が抜けているかもしれません。それゆえ、違いがあるのです。

Z

 

多通貨のExpert Advisorの問題がまた出てきましたね。どちらかのペアをオープンプライスで動作させる必要があります。そんなデザインの例を記事で見つけました。最初にシングル版に貼り付けました。すべてがうまくいきました。

int start()
//ждем открытия нового бара. Если появл. новый бар - проверяем возможность сделки
 {if(Time[0] == prevtime) 
       return(0);
   prevtime = Time[0];

そして、同じように多通貨のExpert Advisorに挿入してみました。そして、すべてのペアが始値で 動いた。しかし、そのすべてが必要なわけではありません。1つだけ必要なのは、2足目です。こんな感じでやっています。

グローバルでstatic int prevtime = 0と宣言しています。

ЗАДАЕМ ВНЕШНИЕ ПАРАМЕТРЫ ПО КАЖДОЙ ПАРЕ
 static int prevtime = 0;
int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }
 
int start()
  {  
 int Orders=OrdersTotal ();     //получаем кол-во открытых ордеров
if (Orders<3)                 //если  открытых ордеров <3
  { 
if (выключатель 1 вкл) {РАСЧЕТ ИНДЮКОВ И ОТКРЫВАЕМ ПЕРВУЮ ПАРУ } 
if (выключатель 2 вкл) 
{
if(Time[0] == prevtime) 
       return(0);
   prevtime = Time[0]; 
 
РАСЧЕТ ИНДЮКОВ И ОТКРЫВАЕМ ВТОРУЮ ПАРУ } 
  }
//========================================================================
for (int x=0; x<OrdersTotal(); x++)                                             {
    if (OrderSelect(x, SELECT_BY_POS, MODE_TRADES)) 
{       
if (UseTrailing 1) - ТРЕЙЛИНГ ПЕРВОЙ ПАРЫ
... ... ...
if (UseTrailing 2) - Трейлинг второй пары
}
//======================================================================
   return(0);
  }

また、2組目の各チケットの後に、:

ticket=OrderSend("EURUSD", OP_BUY,Lots,_ask ,3,_bid-SL_long*_point,
                       _ask +TP_long*_point,"M_4",MagicEURUSD,0,CLR_NONE);
 
                        Sleep(30000);
                       if(ticket < 0)   {
                           prevtime = Time[1];
                         }

何も動かない!?EAはすべてのティックを通して2番目のペアで動作し続けます!

別の構造を試してみました。もう1つ試してみました。

bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }
//-------------------------------------------------------
 
if (isNewBar) {

あらかじめ変数を設定しておくのです。

int         ExpertBars;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
ExpertBars = Bars;
//----------------
   return(0);

しかし ......同じ話です。最初に入れたとき - すべてのペアは始値で動作します。しかし、一組に適用しようとすると、うまくいかないのです。3日目にして奮闘中です。

何かアドバイスやおすすめがあれば嬉しいのですが...。

 
rid:
MEで赤色表示されている名称は、EAが装着されている楽器を表しています。Time[]の代わりにiTime()を使ってみてください。