仮想マシンでMT4? - ページ 5 12345 新しいコメント zzuegg 2012.03.05 18:18 #41 DayTrader:しかし、少なくとも私のブローカー(できればもっと多くのブローカー)がMT5を提供するまで、私は自分のコードをすべて書き直すことは考えません。その間、W7/64の4倍のスピードとティックスキップの10倍を合わせて、40倍のスピードが 出るようにします。 あなたのコードはティックをスキップしますが、重要な 情報が失われる可能性がある方法でそれを行います。 このようなコードを使ってください。 bool SkipTick(){ static datetime curr=0; static double askHi=0; static double askLo=0; static double bidHi=0; static double bidLo=0; if(curr!=Time[0]){ curr=Time[0]; askHi=Ask; askLo=Ask; bidHi=Bid; bidLo=Bid; return (false); }else{ if(Ask>askHi || Ask<askLo){ askHi=MathMax(Ask,askHi); askLo=MathMin(Ask,askLo); return(false); } if(Bid>bidHi || Bid<bidLo){ bidHi=MathMax(Bid,bidHi); bidLo=MathMin(Bid,bidLo); return(false); } } return(true); } のようにすると、重要な情報を失うことなくティックをスキップすることができます。 すべてのバーオープン、新高値、新安値はスキップされません。 Pilot65 2012.03.05 19:32 #42 グッドアイディア! Ubzen 2012.03.05 20:01 #43 zzuegg:あなたのコードはティックをスキップしますが、それは重要な情報が失われる可能性がある方法で行われます。このようなコードを使ってください。重要な情報を失うことなくティックをスキップするには、次のようなコードを使用します。すべてのバーオープン、新高値、新安値はスキップされません。 これが同等のものであるかどうかはわかりません。しかし、mt4にデータをインポート する際に、ボリューム 情報を削除することができます。 デフォルトでは、最小のO-H-L-Cまたは4-Ticksを使用し、これはバックテストのスピードアップに役立ちます。 その線で、誰かM1データのインポート中にVolume(s)を100と入力してみたことがありますか?私の推測では、これがうまくいけば、Tick-Dataに代わる有効な手段になるはずです。私はそれをテストすることを計画していたが、それまでには至らなかった:) William Roeder 2012.03.06 12:49 #44 zzuegg: すべてのバーオープン、新高値、新安値はスキップされません。 または、Strategy Testerの速度向上 - MQL4フォーラムを ご覧ください。 dabbler 2012.04.05 18:27 #45 私のブローカーはライブ口座でMT5を有効にしたので、学問的なことはできなくなりました。昨晩、最初のMQL5インジケータ(スプレッドを表示する)を書き、今晩、このスレッドの最初のページにあるスピードテストEAを変換してみた。これがそれです. // MQL5 code const int SECONDSPERHOUR=3600; input int stops = 250; double lots= 0.0; //+-------------------------------------------------------------------------------------------+ int OnInit(){ lots = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); return(0); } //+-------------------------------------------------------------------------------------------+ void OnDeinit(const int reason){ } //+-------------------------------------------------------------------------------------------+ void OnTick(){ static long lastHour=0; datetime now= TimeCurrent(); long hourNow = SECONDSPERHOUR *(((long)now) / SECONDSPERHOUR); if( lastHour== hourNow ) return; lastHour= hourNow; MqlTick lastTick; SymbolInfoTick(_Symbol,lastTick); MqlTradeResult result={0}; MqlTradeRequest requestA={0}; requestA.action=TRADE_ACTION_DEAL; requestA.symbol= Symbol(); requestA.type = ORDER_TYPE_BUY; requestA.volume= lots; requestA.sl= NormalizeDouble( lastTick.ask - stops*_Point, _Digits ); requestA.tp= NormalizeDouble( lastTick.ask + stops*_Point, _Digits ); OrderSend(requestA,result); if( result.retcode != TRADE_RETCODE_DONE ) Print("BUY order failed: " + IntegerToString(result.retcode)); SymbolInfoTick(_Symbol,lastTick); MqlTradeRequest requestB={0}; requestB.action=TRADE_ACTION_DEAL; requestB.symbol= Symbol(); requestB.type = ORDER_TYPE_SELL; requestB.volume= lots; requestB.sl= NormalizeDouble( lastTick.bid + stops*_Point, _Digits ); requestB.tp= NormalizeDouble( lastTick.bid - stops*_Point, _Digits ); OrderSend(requestB,result); if( result.retcode != TRADE_RETCODE_DONE ) Print("SELL order failed: " + IntegerToString(result.retcode)); return; } このアイデアは、ストラテジーテスターで 同じようなトレードをして速度を比較することでした。もちろん、MQL5で最も根本的に変わったことを忘れていました。ヘッジができないのです。実際、見たところ、1つのシンボルにつき1つのポジションしか開くことができません。つまり、MAGIC_NUMBERSで区切られたマルチストラテジーは不可能なようです。 私のテストEAは、1時間ごとにトレードを行い、その時間を見るだけなので、惨憺たる結果に終わりました。この方法で同種の比較をするのは不可能です :-( 12345 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
しかし、少なくとも私のブローカー(できればもっと多くのブローカー)がMT5を提供するまで、私は自分のコードをすべて書き直すことは考えません。
その間、W7/64の4倍のスピードとティックスキップの10倍を合わせて、40倍のスピードが 出るようにします。
あなたのコードはティックをスキップしますが、重要な 情報が失われる可能性がある方法でそれを行います。
このようなコードを使ってください。
のようにすると、重要な情報を失うことなくティックをスキップすることができます。
すべてのバーオープン、新高値、新安値はスキップされません。
あなたのコードはティックをスキップしますが、それは重要な情報が失われる可能性がある方法で行われます。
このようなコードを使ってください。
重要な情報を失うことなくティックをスキップするには、次のようなコードを使用します。
すべてのバーオープン、新高値、新安値はスキップされません。
これが同等のものであるかどうかはわかりません。しかし、mt4にデータをインポート する際に、ボリューム 情報を削除することができます。 デフォルトでは、最小のO-H-L-Cまたは4-Ticksを使用し、これはバックテストのスピードアップに役立ちます。
その線で、誰かM1データのインポート中にVolume(s)を100と入力してみたことがありますか?私の推測では、これがうまくいけば、Tick-Dataに代わる有効な手段になるはずです。私はそれをテストすることを計画していたが、それまでには至らなかった:)
すべてのバーオープン、新高値、新安値はスキップされません。
私のブローカーはライブ口座でMT5を有効にしたので、学問的なことはできなくなりました。昨晩、最初のMQL5インジケータ(スプレッドを表示する)を書き、今晩、このスレッドの最初のページにあるスピードテストEAを変換してみた。これがそれです.
このアイデアは、ストラテジーテスターで 同じようなトレードをして速度を比較することでした。もちろん、MQL5で最も根本的に変わったことを忘れていました。ヘッジができないのです。実際、見たところ、1つのシンボルにつき1つのポジションしか開くことができません。つまり、MAGIC_NUMBERSで区切られたマルチストラテジーは不可能なようです。
私のテストEAは、1時間ごとにトレードを行い、その時間を見るだけなので、惨憺たる結果に終わりました。この方法で同種の比較をするのは不可能です :-(