エラー、バグ、質問 - ページ 214 1...207208209210211212213214215216217218219220221...3185 新しいコメント MQ Alexander 2010.11.30 11:09 #2131 Ashes:この結果は、単純なExpert Advisorで得られたものであり、実質的に分析に時間をかけず、指標も使用していません。 EAのコードを掲載してください。 Rashid Umarov 2010.11.30 11:24 #2132 Ashes:この結果は、実質的に分析に時間をかけず、インジケータも使用しない、単純なExpert Advisorで得られたものであることをお忘れなく。 比較のため。 Windows 7マシン、Intel Pentium Dual-Core E5400 @ 2.70 GHz、2038 MB(PR111)で10000トレードでこのテストを実行したところ472866msかかりました。 以上のことから、「チャンピオンシップ2010」の候補者の中には、15分の壁やテスターの特殊性(案件が多かった場合)により、不当に落選した可能性があると思われます。 ** - テスターの終了時にトレードが表示されたシンボルチャートが表示されないことが数回ありました。 このような結果を示す「シンプルなEA」を書くことはできませんでした。以下は私のコードです。//+------------------------------------------------------------------+ //| TimeOnDeals.mq5 | //| Copyright 2010, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2010, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //--- input parameters input int deals=1000; input double lot=0.01; uint start; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- start=GetTickCount(); //--- return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- PrintFormat("deals=%d time=%d",deals,(GetTickCount()-start)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double OnTester() { return(GetTickCount()-start); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { static int done_deals=0; //--- if(done_deals<deals) { if(Buy(lot)) done_deals++; else Print("Не удалось выполнить Buy, ошибка ",GetLastError()); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool Buy(double v) { double price=SymbolInfoDouble(_Symbol,SYMBOL_ASK); MqlTradeRequest m_request; // request data MqlTradeResult m_result; // result data m_request.action=TRADE_ACTION_DEAL; m_request.symbol =_Symbol; m_request.magic =555; m_request.volume =v; m_request.type =ORDER_TYPE_BUY; m_request.price =price; m_request.sl =0; m_request.tp =0; m_request.deviation =10; return(OrderSend(m_request,m_result)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ bool Sell(double v) { double price=SymbolInfoDouble(_Symbol,SYMBOL_BID); MqlTradeRequest m_request; // request data MqlTradeResult m_result; // result data m_request.action=TRADE_ACTION_DEAL; m_request.symbol =_Symbol; m_request.magic =555; m_request.volume =v; m_request.type =ORDER_TYPE_SELL; m_request.price =price; m_request.sl =0; m_request.tp =0; m_request.deviation =10; return(OrderSend(m_request,m_result)); } //+------------------------------------------------------------------+ 以下は最適化の結果で、Result欄には実行時間がミリ秒単位で表示されています。 Andrey Sharov 2010.11.30 12:18 #2133 Rosh: このような結果を示す「シンプルなEA」を書くことはできていません。以下は私のコードです。 以下は最適化の結果で、Result欄には実行時間がミリ秒単位で表示されています。 面白い... アレクサンダー EAコードを掲載してください。 Expert Advisorは、自動売買チャンピオン2010のExpert Advisorを素早く書く 方法の記事にあるテンプレートをベースにしています。 CExpertAdvisorクラスは、そのまま使用します。もしかしたら、これはクラスを使っている副作用かもしれませんね。テスト結果からは、ある閾値を超えると減速が始まるような印象を受けます。もしかしたら、限られたサイズのトランザクションテーブルで、それを過ぎるとメモリの再割り当て/ゴミ収集が始まるのでは? PS.エキスパートアドバイザーはアルパリデモ口座の機能(ゼロマージン)を使用しており、そうでない場合は取引回数が変更される可能性があることを再度お断りしておきます。 ファイル: expertadvisor.mqh 19 kb x_spec2.mq5 5 kb Andrey Sharov 2010.11.30 12:35 #2134 Rosh: このような結果を示す「シンプルなEA」を書くことはできていません。以下は私のコードです。 以下は最適化の結果で、Result欄には実行時間がミリ秒単位で表示されています。 XLSXへの出力も問題ないですか? Andrey Sharov 2010.11.30 13:06 #2135 Rosh: このような結果を示す「シンプルなEA」を書くことはできていません。以下は私のコードです。 以下は最適化の結果で、Result欄には実行時間がミリ秒単位で表示されています。 表 - オプティマイザーの結果:ログオフ?ログの副作用? Rashid Umarov 2010.11.30 14:11 #2136 Ashes: 自動売買王決定戦2010のクイックEAの書き方という 記事のテンプレートを元に作成したEAです。 CExpertAdvisorクラスは、そのまま使用します。もしかしたら、これはクラスを使っている副作用かもしれませんね。テスト結果からは、ある閾値を超えると減速が始まるような印象を受けます。もしかしたら、限られたサイズのトランザクションテーブルで、それを過ぎるとメモリの再割り当て/ゴミ収集が始まるのでは? PS.エキスパートアドバイザーはアルパリデモ口座の機能(ゼロマージン)を使用しており、そうでない場合は取引回数が変更される可能性があることを再度お断りしておきます。このクラスは GetDealByOrder(ulong order) メソッドを含んでいます。ulong CExpertAdvisor::GetDealByOrder(ulong order) // получение тикета сделки по тикету ордера { PositionSelect(m_smb); HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)); uint total=HistoryDealsTotal(); for(uint i=0; i<total; i++) { ulong deal=HistoryDealGetTicket(i); if(order==HistoryDealGetInteger(deal,DEAL_ORDER)) return(deal); // запомнили тикет сделки } return(0); }は、取引のたびに呼び出されます。そのため、毎回取引の全履歴を確認し、取引回数の2乗に比例してテスト時間が遅くなる。このようなものは、最適化やテストが必要なExpert Advisorでは、時間のロスが避けられないため、使用しない方がよいでしょう。このような場合は、アルゴリズムでこれらの呼び出しを置き換えるのがよいでしょう。 Andrey Sharov 2010.11.30 14:23 #2137 Rosh: このクラスは GetDealByOrder(ulong order) メソッドを含んでいます。 これは、各トランザクションで呼び出されます。その結果、毎回取引の全履歴を検索することになり、取引数の二乗に比例してテスト時間が遅くなる。 最適化やテストが必要なExpert Advisorでは、どうしても時間をロスしてしまうので、そのようなものは使わない方がよいでしょう。このような場合は、アルゴリズムでこれらの呼び出しを置き換えるのがよいでしょう。 つまり、Expert Advisorのテンプレートを使用した全員が「影響を受ける」のです...。 XLSXはどうですか?Expert Advisorのコードとは関係ないんですよね? Konstantin Chernov 2010.11.30 14:42 #2138 Rosh:このクラスは GetDealByOrder(ulong order) メソッドを含んでいます。 ulong CExpertAdvisor::GetDealByOrder(ulong order) // получение тикета сделки по тикету ордера { PositionSelect(m_smb); HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)); uint total=HistoryDealsTotal(); for(uint i=0; i<total; i++) { ulong deal=HistoryDealGetTicket(i); if(order==HistoryDealGetInteger(deal,DEAL_ORDER)) return(deal); // запомнили тикет сделки } return(0); } は、各トランザクションで呼び出されます。したがって、この 特定 条件のエキスパートアドバイザーでは、毎回、全取引履歴を検索し、取引件数の2乗に比例するテスト時間が遅くなっています。このようなものは、最適化やテストが必要なExpert Advisorでは、時間のロスが避けられないため、使用しない方がよいでしょう。このような場合は、アルゴリズムでこれらの呼び出しを置き換えるのがよいでしょう。HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));この方法は、履歴全体を検索するのですか、それとも、オープンポジションに 関連する履歴の一部だけを検索するのですか?オープンポジションでつながっている案件が5件以下なら、履歴全体を見るよりHistorySelectByPositionを 使った方がいいと思う。 HistorySelect(0,TimeCurrent())。P.S. CExpertAdvisorは見ませんでした。 Rashid Umarov 2010.11.30 15:01 #2139 Konstantin83: HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)); この方法は、歴史全体を検索するのでしょうか。 また、オープンポジションに関連する歴史の一部だけを検索するのでしょうか。オープンポジションでつながっている案件が5件以下なら、履歴全体を見るよりHistorySelectByPositionを 使った方がいいと思う。 HistorySelect(0,TimeCurrent())。 P.S. CExpertAdvisorは見ませんでした。この 場合、1つのポジションに数千の案件があり、それらはすべて同じPOSITION_IDENTIFIER ポジション識別子を持っています。したがって、 この場合の HistorySelectByPosition の呼び出しはHistorySelect(0,TimeCurrent()) の呼び出しと同等 であり、これらの案件の列挙は履歴からすべての案件を検索 することにつながる。仮に 、記事のパターンを使った残念な例ができたとしましょう。シベリアの男と日本のチェーンソーの話と同じです。 Rashid Umarov 2010.11.30 15:03 #2140 Ashes: XLSXはどうですか?EAコードは関係あるのでしょうか? ここは必ず直る。開発者は承知しています、ありがとうございます。 1...207208209210211212213214215216217218219220221...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
この結果は、単純なExpert Advisorで得られたものであり、実質的に分析に時間をかけず、指標も使用していません。
この結果は、実質的に分析に時間をかけず、インジケータも使用しない、単純なExpert Advisorで得られたものであることをお忘れなく。
比較のため。
Windows 7マシン、Intel Pentium Dual-Core E5400 @ 2.70 GHz、2038 MB(PR111)で10000トレードでこのテストを実行したところ472866msかかりました。
以上のことから、「チャンピオンシップ2010」の候補者の中には、15分の壁やテスターの特殊性(案件が多かった場合)により、不当に落選した可能性があると思われます。
** - テスターの終了時にトレードが表示されたシンボルチャートが表示されないことが数回ありました。
このような結果を示す「シンプルなEA」を書くことはできませんでした。以下は私のコードです。
以下は最適化の結果で、Result欄には実行時間がミリ秒単位で表示されています。
このような結果を示す「シンプルなEA」を書くことはできていません。以下は私のコードです。
以下は最適化の結果で、Result欄には実行時間がミリ秒単位で表示されています。
面白い...
EAコードを掲載してください。
Expert Advisorは、自動売買チャンピオン2010のExpert Advisorを素早く書く 方法の記事にあるテンプレートをベースにしています。
CExpertAdvisorクラスは、そのまま使用します。もしかしたら、これはクラスを使っている副作用かもしれませんね。テスト結果からは、ある閾値を超えると減速が始まるような印象を受けます。もしかしたら、限られたサイズのトランザクションテーブルで、それを過ぎるとメモリの再割り当て/ゴミ収集が始まるのでは?
PS.エキスパートアドバイザーはアルパリデモ口座の機能(ゼロマージン)を使用しており、そうでない場合は取引回数が変更される可能性があることを再度お断りしておきます。
このような結果を示す「シンプルなEA」を書くことはできていません。以下は私のコードです。
以下は最適化の結果で、Result欄には実行時間がミリ秒単位で表示されています。
XLSXへの出力も問題ないですか?
このような結果を示す「シンプルなEA」を書くことはできていません。以下は私のコードです。
以下は最適化の結果で、Result欄には実行時間がミリ秒単位で表示されています。
表 - オプティマイザーの結果:ログオフ?ログの副作用?
自動売買王決定戦2010のクイックEAの書き方という 記事のテンプレートを元に作成したEAです。
CExpertAdvisorクラスは、そのまま使用します。もしかしたら、これはクラスを使っている副作用かもしれませんね。テスト結果からは、ある閾値を超えると減速が始まるような印象を受けます。もしかしたら、限られたサイズのトランザクションテーブルで、それを過ぎるとメモリの再割り当て/ゴミ収集が始まるのでは?
PS.エキスパートアドバイザーはアルパリデモ口座の機能(ゼロマージン)を使用しており、そうでない場合は取引回数が変更される可能性があることを再度お断りしておきます。
このクラスは GetDealByOrder(ulong order) メソッドを含んでいます。
は、取引のたびに呼び出されます。そのため、毎回取引の全履歴を確認し、取引回数の2乗に比例してテスト時間が遅くなる。
このようなものは、最適化やテストが必要なExpert Advisorでは、時間のロスが避けられないため、使用しない方がよいでしょう。このような場合は、アルゴリズムでこれらの呼び出しを置き換えるのがよいでしょう。
このクラスは GetDealByOrder(ulong order) メソッドを含んでいます。
これは、各トランザクションで呼び出されます。その結果、毎回取引の全履歴を検索することになり、取引数の二乗に比例してテスト時間が遅くなる。
最適化やテストが必要なExpert Advisorでは、どうしても時間をロスしてしまうので、そのようなものは使わない方がよいでしょう。このような場合は、アルゴリズムでこれらの呼び出しを置き換えるのがよいでしょう。
つまり、Expert Advisorのテンプレートを使用した全員が「影響を受ける」のです...。
XLSXはどうですか?Expert Advisorのコードとは関係ないんですよね?
このクラスは GetDealByOrder(ulong order) メソッドを含んでいます。
ulong CExpertAdvisor::GetDealByOrder(ulong order) // получение тикета сделки по тикету ордера
{
PositionSelect(m_smb);
HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));
uint total=HistoryDealsTotal();
for(uint i=0; i<total; i++)
{
ulong deal=HistoryDealGetTicket(i);
if(order==HistoryDealGetInteger(deal,DEAL_ORDER))
return(deal); // запомнили тикет сделки
}
return(0);
}
は、各トランザクションで呼び出されます。したがって、この 特定 条件のエキスパートアドバイザーでは、毎回、全取引履歴を検索し、取引件数の2乗に比例するテスト時間が遅くなっています。
このようなものは、最適化やテストが必要なExpert Advisorでは、時間のロスが避けられないため、使用しない方がよいでしょう。このような場合は、アルゴリズムでこれらの呼び出しを置き換えるのがよいでしょう。
HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));
この方法は、履歴全体を検索するのですか、それとも、オープンポジションに 関連する履歴の一部だけを検索するのですか?オープンポジションでつながっている案件が5件以下なら、履歴全体を見るよりHistorySelectByPositionを 使った方がいいと思う。 HistorySelect(0,TimeCurrent())。
P.S. CExpertAdvisorは見ませんでした。
HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));
この方法は、歴史全体を検索するのでしょうか。 また、オープンポジションに関連する歴史の一部だけを検索するのでしょうか。オープンポジションでつながっている案件が5件以下なら、履歴全体を見るよりHistorySelectByPositionを 使った方がいいと思う。 HistorySelect(0,TimeCurrent())。
P.S. CExpertAdvisorは見ませんでした。
この 場合、1つのポジションに数千の案件があり、それらはすべて同じPOSITION_IDENTIFIER ポジション識別子を持っています。したがって、 この場合の HistorySelectByPosition の呼び出しはHistorySelect(0,TimeCurrent()) の呼び出しと同等 であり、これらの案件の列挙は履歴からすべての案件を検索 することにつながる。
仮に 、記事のパターンを使った残念な例ができたとしましょう。シベリアの男と日本のチェーンソーの話と同じです。
XLSXはどうですか?EAコードは関係あるのでしょうか?