エラー、バグ、質問 - ページ 479 1...472473474475476477478479480481482483484485486...3185 新しいコメント --- 2011.08.05 19:54 #4781 その後、servicedeskに書き込み、コードを同封してください。 Renat Fatkhullin 2011.08.05 23:13 #4782 sergeev: その後、サービスデスクに書き込み、コードを添付してください。はい、エキスパートコードを添付してサービスデスクに連絡するのがよいでしょう。テスト後はすべて消去するので、コードの心配は無用です。私たちの主な、そして唯一の仕事は、エラーを見つけること です。 Stanislav Korotky 2011.08.06 22:05 #4783 もうひとつ質問です。CopyTime関数を 使用しています。コールCopyTime("EURUSD", PERIOD_MN1, D'2011.06.30', D'2011.08.01', Array)は、なぜか値D'2011.08.01'を持つ1つの要素のみを返します。D'2011.07.01'はどこにあるんだ?そのコツとは?追伸:Array[]は動的配列です。 Mykola Demko 2011.08.06 22:47 #4784 marketeer:もうひとつ質問です。CopyTime関数を 使用しています。コールは、なぜか値D'2011.08.01'を持つ1つの要素のみを返します。D'2011.07.01'はどこにあるんだ?キャッチは?追伸:配列Array[]は動的です。はい、何らかの理由で最初の要素がスキップされます、servicedeskに書き込みます。datetime Array[]; CopyTime("EURUSD", PERIOD_MN1, D'2011.06.01', D'2011.08.01', Array); for(int i=0;i<ArraySize(Array);i++) { Print(i," ",Array[i]); }1 2011.08.01 00:00:000 2011.07.01 00:00:00 Alexey Da 2011.08.08 08:04 #4785 marketeer:もうひとつ質問です。CopyTime関数を 使用しています。同様のアプリケーションはすでにあります。把握すること。 Stanislav Korotky 2011.08.08 09:34 #4786 ここにも謎がある。バグが捕まらない......私のなのか端末のなのかわからない。Expert Advisor が出した注文の数をカウントする些細なコードがあります。カウンターは、グローバル変数に格納されます。こんな感じです。int Count; int OnInit() { Count = (int)GlobalVariableGet("Count"); return(0); } void OnTick() { // bla-bla-bla if(успешно отправлен ордер) { Count++; if(!MQL5InfoInteger(MQL5_TESTING)) { if(GlobalVariableSet("Count", Count) == 0) { Print("GlobalVariableSet error ", GetLastError()); } } } } このCountは、注文コメントで使用されます。その結果、次の注文数がすでにあるポジション数より(何個か)少なくなっていることに時々気づきます。ログにエラーはありません。何か心当たりはありますか?例えば、グローバル 変数の最後の値が、ある条件下で終了するときにターミナルに保存されないために、同じような「消失」に遭遇した人がいるかもしれません(まあ、接続が失われた場合かもしれませんが - 1つのバージョンです)? Документация по MQL5: Глобальные переменные терминала / GlobalVariableGet www.mql5.com Глобальные переменные терминала / GlobalVariableGet - Документация по MQL5 Anatoli Kazharski 2011.08.08 11:56 #4787 marketeer:ここで、もうひとつのパズルを紹介します。バグが捕まらない......私のなのか端末のなのかわからない。こんな感じにしてみてください。グローバルではあまりやっていないですね。でも、ちゃんとカウントされるんですよ。 int Amount_Orders = 0; for(count = 0; count < OrdersTotal(); count++) { if(OrderSelect(OrderGetTicket(count))) { int tp_ord = (ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE); if(tp_ord == ORDER_TYPE_BUY_STOP || tp_ord == ORDER_TYPE_SELL_STOP || tp_ord == ORDER_TYPE_BUY_LIMIT || tp_ord == ORDER_TYPE_SELL_LIMIT) Amount_Orders++; } } Stanislav Korotky 2011.08.08 13:38 #4788 tol64:こんな感じにしてみてください。グローバルではあまりやっていないですね。でも、ちゃんとカウントされるんですよ。 私が抱えている問題は、グローバル変数に 書き込まれた値が失われること、つまり、(毎月のタイムアウトによる削除のように)完全にではなく、古いものが残ってしまうことです。もちろん、注文を再計算することもできますが、私のやり方でもうまくいくはずです。 Валерий 2011.08.08 14:32 #4789 papaklass:開発者の皆様へ。 注文が有効期限 内に終了した場合、OnTrade では一切追跡されないということでしょうか? 追記:トレードイベントOnTradeのハンドラの目的が全く不明です。 ストップロスやテイクが捕まらない場合、保留中の注文がその有効期限までに閉じられた場合、捕まらないことになります。アルゴリズム実行中にすべてをダブルチェックする必要があるのです。この方法では、トレードイベントハンドラーに依存しながらも、それをダブルチェックしなければならないため、混乱が生じます。さらに、ダブルチェックの後、OnTrade()で処理されないイベントをキャッチします。 なぜ、それが必要なのでしょうか?しかし、今はテトリスで遊んだり、チャートにいろいろな無意味な絵を描いたりすることができます。開発者の皆さん、プラットフォームの取引部分を論理的に解決してください。保留中の注文については、まだ一緒に仕事をしていないので、何とも言えません。例えば、このような行をログに出力するのは、OnTrade ハンドラです。 2011.08.08 09:03:05 ChTestExp (EURUSD,H1) EURAUDによるロングポジションをストップロスで決済する。 2011.08.08:09:03:05 ChTestExp (EURUSD,H1) -----------------Deal #5263582 [sl 1.37819]です。 2011.08.08 09:03:05 ChTestExp (EURUSD,H1) oldDealsTotal=558 newDealsTotal=559 Валерий 2011.08.08 15:30 #4790 papaklass: OnTrade()関数にPrint(__FUNCTION__)関数を設置する。そして、それをログに残すと ストップロス発動 0.10 AUDUSD 0.89783 sl: 0.89544 tp: 0.90024 [#15 0.10 AUDUSD を 0.89544 で売る]。 取引 #7 売り 0.10 AUDUSD at 0.89544 完了 (注文 #15 に基づく) 取引成立 [#7 売り 0.10 AUDUSD at 0.89544]. 注文実行 0.10 at 0.89544 [#15 sell 0.10 AUDUSD at 0.89544]. OnTrade()が動作したかどうか確認してくれますか?すべての取引、その取引量、利益が計算され、それがすべて合計され、各シンボルごとにOnDeiniteに表示されるため、私はあなたが挿入しなくてもすべてが機能します。すべての合計パラメータ(取引数、利益)がテスターのレポートと正確に一致しているので、OnTrade()を疑う理由はない。OnTrade()で処理されないのは、テスト終了時のポジションクローズ('end of test'コメント付き)とテスターでのストップアウトによるクローズ('so ...'コメント)の取引だけで、テストモードでは、OnDeinitで追加処理しなければならない。テスターログからの抜粋です。 2011.08.09 00:06:43 Core 1 log file "E:\Program FilesMetaTrader 5 ╱TesterAgent-127.0.1-3000╱logs╱20110809.log" written 2011.08.09 00:06:43 Core 1 EURUSD,H1: 13962 ms以内に888296ティック(275バー)が発生(履歴の総バー数6479、総時間16177ms)。 2011.08.09 00:06:43 Core 1 テスト間隔の8%でストップアウトが発生しました。 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Deinit end 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 All Profit = -9072.04 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 総取引数:17 件..... 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 --------------------------------------------------------------- (注)1. 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 総利益 EURGBP = -4738.97 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 今週の利益 EURGBP = 319.68 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 GBPUSDの総利益 = -3775.86 2011.08.09 00:06:43 コア1 2011.01.18 10:11:00 今週の利益 GBPUSD = -1798.83 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 総利益 EURUSD = -557.21 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 今週の利益 EURUSD = 65.85 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Balance=927.96 Equite=927.96 Profit=0.00 MarginLevel=0.00。 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 ---------------- Report----------------------- 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Balance=10000.00 Equite=927.96 Profit=0.00 MarginLevel=0.00。 2011.08.09 00:06:43 2011.01.18 10:11:00 Core 1 オープニングエラー:1 クロージングエラー:0 修正エラー:0 リクエスト:1 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 実行時間: 0 分。14秒 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 ChTestExp Expert AdvisorがEURUSDチャート、H1期間での作業を終了しました。 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Deinit Execution 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 OnDeinit_UninitReason = 別の理由 2011.08.09 00:06:43 Core 1 OnTesterの結果 0 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 order buy 1.65 at 1.59804 [#69 buy 1.65 GBPUSD at 1.59804 ]です。 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 取引成立 [#68 1.65 GBPUSD at 1.59804] 買います。 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 取引 #68 1.65 GBPUSD を 1.59804 で購入済 (注文 #69 に基づく)。 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 1.59804でテスト終了のためポジションクローズ [sell 1.65 GBPUSD 1.57341182 tp: 1.57247]. 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 order buy 0.45 at 0.83931 [#68 buy 0.45 EURGBP at 0.83931]. 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 注文実行 [#67 buy 0.45 EURGBP at 0.83931]. 2011.08.09 00:06:43 2011.01.18 10:11:00 取引番号67の買い 0.45 EURGBP at 0.83931 完了(取引番号68に基づく)。 2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Position Stop triggered at 29.09% [sell 0.45 EURGBP 0.83930333 tp: 0.80463] ←クリックすると拡大します。 2011.08.09 00:06:43 Core 1 2011.01.17 14:39:39 EURUSDによるロングポジションはストップロスのクローズへ 2011.08.09 00:06:43 Core 1 2011.01.17 14:39:39 -----------------Deal #66 sl 1.329002011.08.09 00:06:43 Core 1 2011.01.17 14:39:39 oldDealsTotal=65 newDealsTotal=66テスターレポートより結果 ストーリーの質 100% バーです。 275 ティキ 888296 当期純利益。 -9 072.04 利益合計 1 652.29 全損です。 -10 724.33 収益性。 0.15 期待されるペイオフ -533.65 リカバリーファクター。 -0.92 シャープレシオ -0.35 バランスシートのドローダウン。 絶対的なバランスシートの縮小。 9 072.04 バランスシート上の最大ドローダウン。 10 392.34 (91.80%) バランスシート別の相対的なドローダウン。 91.80% (10 392.34) 資金の引き出し ファンドにおける絶対的なドローダウン。 9 072.04 資金の最大引き出し額 9 852.02 (91.39%) 資金の相対的なドローダウン。 91.39% (9 852.02) 総トレード数 17 ショートトレード(勝ち組の割合)。 10 (70.00%) ロングトレード(勝率)。 7 (85.71%) 総トレード数 67 利益が出ている取引(全取引のうち%)。 13 (76.47%) 損失取引(全体に占める割合)。 4 (23.53%) 最大の利益を上げた取引 263.25 最大の負けトレード -5 036.39 平均的な利益率の高い取引。 127.10 平均的な負けトレード。 -2 681.08 最大連続勝利数(利益)。 10 (1 320.30) 最大連続損失数(ロス)。 2 (-4 084.59) 最大継続利益数(勝利数)。 1 320.30 (10) 最大連続損失(損失数)。 -5 036.39 (1) 平均的な連続獲得賞金額。 4 平均連続損失額。 1 このように、独自に計算した値の合計が同じであることは、すべてが正しいことを意味します。ストップ高の例はわざと外したんです。 Errors, bugs, questions 通貨ペアのポートフォリオ取引 理論から実践へ 1...472473474475476477478479480481482483484485486...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
その後、サービスデスクに書き込み、コードを添付してください。
はい、エキスパートコードを添付してサービスデスクに連絡するのがよいでしょう。
テスト後はすべて消去するので、コードの心配は無用です。私たちの主な、そして唯一の仕事は、エラーを見つけること です。
もうひとつ質問です。CopyTime関数を 使用しています。コール
は、なぜか値D'2011.08.01'を持つ1つの要素のみを返します。D'2011.07.01'はどこにあるんだ?そのコツとは?
追伸:Array[]は動的配列です。
もうひとつ質問です。CopyTime関数を 使用しています。コール
は、なぜか値D'2011.08.01'を持つ1つの要素のみを返します。D'2011.07.01'はどこにあるんだ?キャッチは?
追伸:配列Array[]は動的です。
はい、何らかの理由で最初の要素がスキップされます、servicedeskに書き込みます。
1 2011.08.01 00:00:00
0 2011.07.01 00:00:00
もうひとつ質問です。CopyTime関数を 使用しています。
同様のアプリケーションはすでにあります。
把握すること。
ここにも謎がある。バグが捕まらない......私のなのか端末のなのかわからない。
Expert Advisor が出した注文の数をカウントする些細なコードがあります。カウンターは、グローバル変数に格納されます。こんな感じです。
このCountは、注文コメントで使用されます。その結果、次の注文数がすでにあるポジション数より(何個か)少なくなっていることに時々気づきます。ログにエラーはありません。
何か心当たりはありますか?例えば、グローバル 変数の最後の値が、ある条件下で終了するときにターミナルに保存されないために、同じような「消失」に遭遇した人がいるかもしれません(まあ、接続が失われた場合かもしれませんが - 1つのバージョンです)?
ここで、もうひとつのパズルを紹介します。バグが捕まらない......私のなのか端末のなのかわからない。
こんな感じにしてみてください。グローバルではあまりやっていないですね。でも、ちゃんとカウントされるんですよ。
こんな感じにしてみてください。グローバルではあまりやっていないですね。でも、ちゃんとカウントされるんですよ。
開発者の皆様へ。
注文が有効期限 内に終了した場合、OnTrade では一切追跡されないということでしょうか?
追記:トレードイベントOnTradeのハンドラの目的が全く不明です。 ストップロスやテイクが捕まらない場合、保留中の注文がその有効期限までに閉じられた場合、捕まらないことになります。アルゴリズム実行中にすべてをダブルチェックする必要があるのです。この方法では、トレードイベントハンドラーに依存しながらも、それをダブルチェックしなければならないため、混乱が生じます。さらに、ダブルチェックの後、OnTrade()で処理されないイベントをキャッチします。 なぜ、それが必要なのでしょうか?しかし、今はテトリスで遊んだり、チャートにいろいろな無意味な絵を描いたりすることができます。開発者の皆さん、プラットフォームの取引部分を論理的に解決してください。
保留中の注文については、まだ一緒に仕事をしていないので、何とも言えません。
例えば、このような行をログに出力するのは、OnTrade ハンドラです。
2011.08.08 09:03:05 ChTestExp (EURUSD,H1) EURAUDによるロングポジションをストップロスで決済する。2011.08.08:09:03:05 ChTestExp (EURUSD,H1) -----------------Deal #5263582 [sl 1.37819]です。
2011.08.08 09:03:05 ChTestExp (EURUSD,H1) oldDealsTotal=558 newDealsTotal=559
OnTrade()関数にPrint(__FUNCTION__)関数を設置する。そして、それをログに残すと
ストップロス発動 0.10 AUDUSD 0.89783 sl: 0.89544 tp: 0.90024 [#15 0.10 AUDUSD を 0.89544 で売る]。
取引 #7 売り 0.10 AUDUSD at 0.89544 完了 (注文 #15 に基づく)
取引成立 [#7 売り 0.10 AUDUSD at 0.89544].
注文実行 0.10 at 0.89544 [#15 sell 0.10 AUDUSD at 0.89544].
OnTrade()が動作したかどうか確認してくれますか?
すべての取引、その取引量、利益が計算され、それがすべて合計され、各シンボルごとにOnDeiniteに表示されるため、私はあなたが挿入しなくてもすべてが機能します。すべての合計パラメータ(取引数、利益)がテスターのレポートと正確に一致しているので、OnTrade()を疑う理由はない。
OnTrade()で処理されないのは、テスト終了時のポジションクローズ('end of test'コメント付き)とテスターでのストップアウトによるクローズ('so ...'コメント)の取引だけで、テストモードでは、OnDeinitで追加処理しなければならない。テスターログからの抜粋です。
2011.08.09 00:06:43 Core 1 log file "E:\Program FilesMetaTrader 5 ╱TesterAgent-127.0.1-3000╱logs╱20110809.log" written2011.08.09 00:06:43 Core 1 EURUSD,H1: 13962 ms以内に888296ティック(275バー)が発生(履歴の総バー数6479、総時間16177ms)。
2011.08.09 00:06:43 Core 1 テスト間隔の8%でストップアウトが発生しました。
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Deinit end
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 All Profit = -9072.04
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 総取引数:17 件
.....
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 --------------------------------------------------------------- (注)1.
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 総利益 EURGBP = -4738.97
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 今週の利益 EURGBP = 319.68
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 GBPUSDの総利益 = -3775.86
2011.08.09 00:06:43 コア1 2011.01.18 10:11:00 今週の利益 GBPUSD = -1798.83
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 総利益 EURUSD = -557.21
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 今週の利益 EURUSD = 65.85
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Balance=927.96 Equite=927.96 Profit=0.00 MarginLevel=0.00。
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 ---------------- Report-----------------------
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Balance=10000.00 Equite=927.96 Profit=0.00 MarginLevel=0.00。
2011.08.09 00:06:43 2011.01.18 10:11:00 Core 1 オープニングエラー:1 クロージングエラー:0 修正エラー:0 リクエスト:1
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 実行時間: 0 分。14秒
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 ChTestExp Expert AdvisorがEURUSDチャート、H1期間での作業を終了しました。
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Deinit Execution
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 OnDeinit_UninitReason = 別の理由
2011.08.09 00:06:43 Core 1 OnTesterの結果 0
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 order buy 1.65 at 1.59804 [#69 buy 1.65 GBPUSD at 1.59804 ]です。
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 取引成立 [#68 1.65 GBPUSD at 1.59804] 買います。
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 取引 #68 1.65 GBPUSD を 1.59804 で購入済 (注文 #69 に基づく)。
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 1.59804でテスト終了のためポジションクローズ [sell 1.65 GBPUSD 1.57341182 tp: 1.57247].
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 order buy 0.45 at 0.83931 [#68 buy 0.45 EURGBP at 0.83931].
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 注文実行 [#67 buy 0.45 EURGBP at 0.83931].
2011.08.09 00:06:43 2011.01.18 10:11:00 取引番号67の買い 0.45 EURGBP at 0.83931 完了(取引番号68に基づく)。
2011.08.09 00:06:43 Core 1 2011.01.18 10:11:00 Position Stop triggered at 29.09% [sell 0.45 EURGBP 0.83930333 tp: 0.80463] ←クリックすると拡大します。
2011.08.09 00:06:43 Core 1 2011.01.17 14:39:39 EURUSDによるロングポジションはストップロスのクローズへ
2011.08.09 00:06:43 Core 1 2011.01.17 14:39:39 -----------------Deal #66 sl 1.32900
2011.08.09 00:06:43 Core 1 2011.01.17 14:39:39 oldDealsTotal=65 newDealsTotal=66
テスターレポートより
このように、独自に計算した値の合計が同じであることは、すべてが正しいことを意味します。ストップ高の例はわざと外したんです。