MetaTrader 5 Strategy Tester: バグ、不具合、改善のための提案 - ページ 42 1...353637383940414243444546474849...84 新しいコメント Sergey Chalyshev 2019.12.18 22:53 #411 fxsaber: どのキャラクターでも再生できるような説明書を用意しています。何か質問があれば、実行してみてください。 いや、むしろあなたが、なぜ始めたのか忘れてしまいそうです)) Siなどの株式先物でテストできますか?テスト用の株式口座は必要ですか? Dmitiry Ananiev 2019.12.18 23:28 #412 Sergey Chalyshev:いいえ、私はあなたが好きです、私があなたのコードを理解する頃には、私はそれを始めた理由を忘れてしまうでしょう))例えばSiのような取引所先物でテストできますか?テスト用の交換用アカウントは必要ですか? 取引所では、流動性の低さや注文の行列が問題となっています。したがって、モスクワ取引 所のテスターは正しくありません。FXでは小ロットの場合、そのような現象は実質的にありません。時々発生しますが。 fxsaber 2019.12.18 23:30 #413 Sergey Chalyshev: 試しに株券を渡してみましょうか? はい。しかし、すぐに指摘しなければならないのは、Testerでlast-priceで実行するとエラーになるということです。 fxsaber 2019.12.18 23:34 #414 テスターのコードが正しいかどうかチェックする。 #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) void CloseAll() { for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS)) { if (OrderType() <= OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); else OrderDelete(OrderTicket()); } } bool Check1() { bool Res = true; Res &= OrderSend(_Symbol, OP_BUY, 1, Ask, 0, Bid, 0) && !OrdersTotal(); CloseAll(); Res &= OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, Bid) && !OrdersTotal(); CloseAll(); Res &= OrderSend(_Symbol, OP_SELL, 1, Bid, 0, Ask, 0) && !OrdersTotal(); CloseAll(); Res &= OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, Ask) && !OrdersTotal(); CloseAll(); return(Res); } bool Check2() { bool Res = true; Res &= OrderModify(OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0), Ask, Bid, 0, 0) && !OrdersTotal(); CloseAll(); Res &= OrderModify(OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0), Ask, 0, Bid, 0) && !OrdersTotal(); CloseAll(); Res &= OrderModify(OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0), Bid, Ask, 0, 0) && !OrdersTotal(); CloseAll(); Res &= OrderModify(OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0), Bid, 0, Ask , 0) && !OrdersTotal(); CloseAll(); return(Res); } bool Check3() { bool Res = true; Res &= OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask, 0, 0, 0), SELECT_BY_TICKET) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderSelect(OrderSend(_Symbol, OP_SELLLIMIT, 1, Bid, 0, 0, 0), SELECT_BY_TICKET) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderSelect(OrderSend(_Symbol, OP_BUYSTOP, 1, Ask, 0, 0, 0), SELECT_BY_TICKET) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderSelect(OrderSend(_Symbol, OP_SELLSTOP, 1, Bid, 0, 0, 0), SELECT_BY_TICKET) && (OrderType() <= OP_SELL); CloseAll(); return(Res); } bool Check4() { bool Res = true; const double TickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); Res &= OrderModify(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - TickSize, 0, 0, 0), Ask, 0, 0, 0) && (OrdersTotal() == 1) && (OrderSelect(0, SELECT_BY_POS)) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderModify(OrderSend(_Symbol, OP_BUYSTOP, 1, Ask + TickSize, 0, 0, 0), Ask, 0, 0, 0) && (OrdersTotal() == 1) && (OrderSelect(0, SELECT_BY_POS)) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderModify(OrderSend(_Symbol, OP_SELLLIMIT, 1, Bid + TickSize, 0, 0, 0), Bid, 0, 0, 0) && (OrdersTotal() == 1) && (OrderSelect(0, SELECT_BY_POS)) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderModify(OrderSend(_Symbol, OP_SELLSTOP, 1, Bid - TickSize, 0, 0, 0), Bid, 0, 0, 0) && (OrdersTotal() == 1) && (OrderSelect(0, SELECT_BY_POS)) && (OrderType() <= OP_SELL); CloseAll(); return(Res); } bool Check5() { bool Res = true; const double TickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); Res &= OrderModify(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - TickSize, 0, 0, 0), Ask, Bid, 0, 0) && !OrdersTotal(); CloseAll(); Res &= OrderModify(OrderSend(_Symbol, OP_BUYSTOP, 1, Ask + TickSize, 0, 0, 0), Ask, Bid, 0, 0) && !OrdersTotal(); CloseAll(); Res &= OrderModify(OrderSend(_Symbol, OP_SELLLIMIT, 1, Bid + TickSize, 0, 0, 0), Bid, Ask, 0, 0) && !OrdersTotal(); CloseAll(); Res &= OrderModify(OrderSend(_Symbol, OP_SELLSTOP, 1, Bid - TickSize, 0, 0, 0), Bid, Ask, 0, 0) && !OrdersTotal(); CloseAll(); return(Res); } bool Check6() { bool Res = true; Res &= OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask, 0, Bid, 0) && !OrdersTotal(); CloseAll(); Res &= OrderSend(_Symbol, OP_BUYSTOP, 1, Ask, 0, Bid, 0) && !OrdersTotal(); CloseAll(); Res &= OrderSend(_Symbol, OP_SELLLIMIT, 1, Bid, 0, Ask, 0) && !OrdersTotal(); CloseAll(); Res &= OrderSend(_Symbol, OP_SELLSTOP, 1, Bid, 0, Ask, 0) && !OrdersTotal(); CloseAll(); return(Res); } #define TOSTRING(A) #A + " = " + (string)(A) + "\n" void OnTick() { Print(TOSTRING(Check1()) + TOSTRING(Check2()) + TOSTRING(Check3()) + TOSTRING(Check4()) + TOSTRING(Check5()) + TOSTRING(Check6())); ExpertRemove(); } 正常に動作している場合は、以下のようになります。 2019.12.19 00:27:59.263 2019.12.13 00:00:00 Check1() = true 2019.12.19 00:27:59.263 2019.12.13 00:00:00 Check2() = true 2019.12.19 00:27:59.263 2019.12.13 00:00:00 Check3() = true 2019.12.19 00:27:59.263 2019.12.13 00:00:00 Check4() = true 2019.12.19 00:27:59.263 2019.12.13 00:00:00 Check5() = true 2019.12.19 00:27:59.263 2019.12.13 00:00:00 Check6() = true Sergey Chalyshev 2019.12.18 23:51 #415 fxsaber: がんばってください。しかし、「テスター」でラストプライスで実行するのは間違いであることを、ここで指摘しておかなければならない。 直筆で書いたことがある。 当然、フリッパーによる実行は意味がない(ナンセンス)。 fxsaber 2019.12.19 00:34 #416 Sergey Chalyshev: 株式先物取引(Siなど)でテストできますか? より良くなりました。リアルティクで、しかしTPはフィンで実行される。 Sergey Chalyshev 2019.12.19 00:42 #417 fxsaber: よくないですね。 なーんだ、テスターがおかしいんだ。すべてのダニや本物のダニでのテストはどのように行うのですか? Siで試してみてください。 9時45分にはまだ市場は閉まっていて、その時間には何でもあり、10時1分以降に開けないといけない。 fxsaber 2019.12.19 01:07 #418 Sergey Chalyshev: 取引所シンボルとネッティングアカウントがある場合、その時だけ現在値での 指値が認められる。 残念ながら、すべてのマーキュリー(TPを含む)はフリッパーで実行されます。そのため、テスターではマーケットを使用しないほうがよいでしょう。 Alexey Kravchenko 2019.12.23 04:20 #419 テスターからすべてのロードバーへのアクセスはどうでしょうか?答えてください。あるいは、なぜこのような人為的な制限が必要なのかを説明してください。 Andrey Khatimlianskii 2019.12.23 04:32 #420 Alexey Kravchenko: では、テスターからすべてのロードバーへのアクセスはどうでしょうか。答えてください。あるいは、なぜこのような人為的な制限が必要なのかを説明してください。 99%のEAのテストを高速化するために。 残りの1%については、松葉杖を挿入することができます。 1...353637383940414243444546474849...84 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
どのキャラクターでも再生できるような説明書を用意しています。何か質問があれば、実行してみてください。
いや、むしろあなたが、なぜ始めたのか忘れてしまいそうです))
Siなどの株式先物でテストできますか?テスト用の株式口座は必要ですか?
いいえ、私はあなたが好きです、私があなたのコードを理解する頃には、私はそれを始めた理由を忘れてしまうでしょう))
例えばSiのような取引所先物でテストできますか?テスト用の交換用アカウントは必要ですか?
取引所では、流動性の低さや注文の行列が問題となっています。したがって、モスクワ取引 所のテスターは正しくありません。FXでは小ロットの場合、そのような現象は実質的にありません。時々発生しますが。
試しに株券を渡してみましょうか?
はい。しかし、すぐに指摘しなければならないのは、Testerでlast-priceで実行するとエラーになるということです。
正常に動作している場合は、以下のようになります。
がんばってください。しかし、「テスター」でラストプライスで実行するのは間違いであることを、ここで指摘しておかなければならない。
直筆で書いたことがある。
当然、フリッパーによる実行は意味がない(ナンセンス)。
株式先物取引(Siなど)でテストできますか?
より良くなりました。リアルティクで、しかしTPはフィンで実行される。
よくないですね。
なーんだ、テスターがおかしいんだ。すべてのダニや本物のダニでのテストはどのように行うのですか?
Siで試してみてください。
9時45分にはまだ市場は閉まっていて、その時間には何でもあり、10時1分以降に開けないといけない。取引所シンボルとネッティングアカウントがある場合、その時だけ現在値での 指値が認められる。
残念ながら、すべてのマーキュリー(TPを含む)はフリッパーで実行されます。そのため、テスターではマーケットを使用しないほうがよいでしょう。
では、テスターからすべてのロードバーへのアクセスはどうでしょうか。答えてください。あるいは、なぜこのような人為的な制限が必要なのかを説明してください。
99%のEAのテストを高速化するために。
残りの1%については、松葉杖を挿入することができます。