エラーに悩まされ、取引業務がない - ページ 21 1...1415161718192021 新しいコメント Andrey Kaunov 2020.12.10 14:16 #201 Arkadii Zagorulko:まさにMT5... MT4だけが問題だと言われる。 もしかしたら、MT5への乗り換えの妨害かも・・・。 Aleksandr Kononov 2021.11.07 19:46 #202 もし誰かの参考になるなら、私がバリデーションに合格した方法を紹介します。ストップや注文の修正なしで、すべてのタイムフレームで 使用できるEAです。 Validatorはエラー131(間違ったロット)を出し、取引は行われませんでした。初めてのEAなので、失敗ばかりだったでしょう。 まず、EAが取引しない場合、Print()にエラーを出力するように、取引機能をチェックするためのすべての英語のコメントを追加しました。 また、フリーマージンのチェックを追加し、ExpertRemove()を削除しましたが、効果はなく、エラーは依然として同じままです。 void buy() { if(AccountFreeMarginCheck(Symbol(),OP_BUY,Lots)>0) { if(OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,SLb,0,comment,Magic,0,Green)<1) Print(" Buy order error !"+ IntegerToString(_Period,0) +" Error code = " + IntegerToString(GetLastError(),0)); } else Print("Not enough money!" +" Error code = " + IntegerToString(GetLastError(),0)); /// ExpertRemove(); return; } 他にもいくつかの変更を一度に行ったのですが、どれが役に立ったのかわかりません。 Expert Advisorの最初と最後のエラーをリセットし、すべてのTFの相場をチェックしました。 int OnInit() { ResetLastError(); for(int cycle=1; cycle<=5; cycle++) { switch(cycle) { case 1: TF = PERIOD_D1; break; case 2: TF = PERIOD_H4; break; case 3: TF = PERIOD_H1; break; case 4: TF = PERIOD_M15; break; case 5: TF = PERIOD_M5; break; } if(iTime(_Symbol,TF,Limit)<1) Print("Missing quotes! " + IntegerToString(TF,0) + " Timeframe"+" Error = " + IntegerToString(GetLastError(),0)); } return(INIT_SUCCEEDED); } //**************************** void OnDeinit(const int reason) { Alert("Error = "+ IntegerToString(GetLastError(),0)); ResetLastError(); } で、ロット計算は、ステップが(0,1)、(0,01)、(0,001)であっても、すべてのケースで再計算されます。 double lotstep = MarketInfo(Symbol(),MODE_LOTSTEP); Lots = NormalizeDouble(AccountEquity()/10000*Lot_for_10K,3); if(lotstep>0.001) Lots = (MathRound(Lots/lotstep))*lotstep; Lots = MathMax(Lots,MarketInfo(Symbol(),MODE_MINLOT)); Lots = MathMin(Lots,MarketInfo(Symbol(),MODE_MAXLOT)); その結果、2日間と10回程度の試行錯誤で、すべての問題を解決することができました。 Nauris Zukas 2021.11.19 14:21 #203 取引操作がない」状態での実験を説明しますと、 1.Marketから古いEAを再コンパイルし、サイトにアップロードしようとしたところ、「取引操作がありません」というエラーが表示されました。 test on EURUSD,H1 there are no trading operations test on NZDUSD,H1 there are no trading operations test on GBPUSDcheck,M30 there are no trading operations test on XAUUSDcheck,Daily there are no trading operations 2.すべてのTFの引用の有無をチェックしてもエラーは出ませんでした(0による除算を使いました)。 3.その後、取引操作の量を確認し始めたのですが、ずっと「取引操作がありません」というエラーが出ていました。 4.その後、すべてのOrderSendのロット数をSYMBOL_VOLUME_MINに 変更 - 「取引操作はありません」 5.明らかにバリデーター・テスターに問題がある。また、OnInit()でポジションのオープンを追加しようとしたところ、 。 double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); int ticket1=OpenPosition(NULL,OP_SELL,min_volume,0,0,magic);と、こんな感じになりました(ちなみに、バリデータでここまで細かく見たのは初めてです)。 2019.07.23 01:00:00 Tester: not enough money for sell 0.20 NZDUSD at 0.67567 sl: 0.00000 tp: 0.00000 [2019.07.23 01:00] 2019.07.23 01:00:00 Tester: PrevBalance: 1.00, PrevPL: 0.00, PrevEquity 1.00, PrevMargin: 0.00, NewMargin: 135, FreeMargin: -134.14 2019.07.23 01:00:00 Horizon_of_Infinity__1 NZDUSD,H1: OrderSend error 134 2019.07.23 01:00:00 Tester: not enough money for sell 0.20 NZDUSD at 0.67567 sl: 0.00000 tp: 0.00000 [2019.07.23 01:00] 2019.07.23 01:00:00 Tester: PrevBalance: 1.00, PrevPL: 0.00, PrevEquity 1.00, PrevMargin: 0.00, NewMargin: 135, FreeMargin: -134.14 2019.07.23 01:00:00 Horizon_of_Infinity__1 NZDUSD,H1: OrderSend error 134 2019.07.23 01:00:00 Tester: not enough money for sell 0.20 NZDUSD at 0.67567 sl: 0.00000 tp: 0.00000 [2019.07.23 01:00] 2019.07.23 01:00:00 Tester: PrevBalance: 1.00, PrevPL: 0.00, PrevEquity 1.00, PrevMargin: 0.00, NewMargin: 135, FreeMargin: -134.14 2019.07.23 01:00:00 Horizon_of_Infinity__1 NZDUSD,H1: OrderSend error 134 2019.07.23 01:00:00 Tester: not enough money for sell 0.20 NZDUSD at 0.67567 sl: 0.00000 tp: 0.00000 [2019.07.23 01:00] 2019.07.23 01:00:00 Tester: PrevBalance: 1.00, PrevPL: 0.00, PrevEquity 1.00, PrevMargin: 0.00, NewMargin: 135, FreeMargin: -134.14 2019.07.23 01:00:00 Horizon_of_Infinity__1 NZDUSD,H1: OrderSend error 134 2019.07.23 01:00:00 Tester: not enough money for sell 0.20 NZDUSD at 0.67567 sl: 0.00000 tp: 0.00000 [2019.07.23 01:00] 2019.07.23 01:00:00 Tester: PrevBalance: 1.00, PrevPL: 0.00, PrevEquity 1.00, PrevMargin: 0.00, NewMargin: 135, FreeMargin: -134.14 2019.07.23 01:00:00 Horizon_of_Infinity__1 NZDUSD,H1: OrderSend error 134 取引業務がない」というエラーは、ここですでに明らかです。残高が1.00であれば、当然0.20(SYMBOL_VOLUME_MIN)で注文を出すことはできません。コードで残高をチェックすると、そのような注文はできず、ジャーナルに十分な残高がないというプリントが表示されます (バリデータのみ表示されません)。 バリデーターはどうすればOKなのか? バリデーターが修正されるまで待ちます。 Алексей Тарабанов 2021.11.19 21:28 #204 無料のマージンは、ホンジュラスにうんざりしているので、気にならない。 Ihor Herasko 2021.11.19 22:38 #205 Алексей Тарабанов #: 無料のマージンは気にしない、ホンジュラスにはうんざりしている。 難しいですか?表現の話です。 Алексей Тарабанов 2021.11.19 22:46 #206 そうです、テストパラメータについてです Алексей Тарабанов 2021.11.19 23:16 #207 あらゆる記憶をクリアにする。 Nauris Zukas 2021.11.22 18:30 #208 私は問題を発見しました。デフォルトでは、入力パラメータにポジションの最大ロットの制限を設けています。 input double MaxLots=0.1; ... lots = MathMin(lots, MaxLots); そのため、バリデータのSYMBOL_VOLUME_MINが 0.20の場合、ポジションを開くことが出来ませんでした。バリデータのデフォルトでは、ポジションの最大ロットにそのような小さな制限を 設定することはできません。 1...1415161718192021 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
まさにMT5...
MT4だけが問題だと言われる。
もしかしたら、MT5への乗り換えの妨害かも・・・。
もし誰かの参考になるなら、私がバリデーションに合格した方法を紹介します。ストップや注文の修正なしで、すべてのタイムフレームで 使用できるEAです。
Validatorはエラー131(間違ったロット)を出し、取引は行われませんでした。初めてのEAなので、失敗ばかりだったでしょう。
まず、EAが取引しない場合、Print()にエラーを出力するように、取引機能をチェックするためのすべての英語のコメントを追加しました。
また、フリーマージンのチェックを追加し、ExpertRemove()を削除しましたが、効果はなく、エラーは依然として同じままです。
他にもいくつかの変更を一度に行ったのですが、どれが役に立ったのかわかりません。
Expert Advisorの最初と最後のエラーをリセットし、すべてのTFの相場をチェックしました。
で、ロット計算は、ステップが(0,1)、(0,01)、(0,001)であっても、すべてのケースで再計算されます。
その結果、2日間と10回程度の試行錯誤で、すべての問題を解決することができました。
1.Marketから古いEAを再コンパイルし、サイトにアップロードしようとしたところ、「取引操作がありません」というエラーが表示されました。
2.すべてのTFの引用の有無をチェックしてもエラーは出ませんでした(0による除算を使いました)。
3.その後、取引操作の量を確認し始めたのですが、ずっと「取引操作がありません」というエラーが出ていました。
4.その後、すべてのOrderSendのロット数をSYMBOL_VOLUME_MINに 変更 - 「取引操作はありません」
5.明らかにバリデーター・テスターに問題がある。また、OnInit()でポジションのオープンを追加しようとしたところ、
。
と、こんな感じになりました(ちなみに、バリデータでここまで細かく見たのは初めてです)。
取引業務がない」というエラーは、ここですでに明らかです。残高が1.00であれば、当然0.20(SYMBOL_VOLUME_MIN)で注文を出すことはできません。コードで残高をチェックすると、そのような注文はできず、ジャーナルに十分な残高がないというプリントが表示されます (バリデータのみ表示されません)。
バリデーターはどうすればOKなのか?
バリデーターが修正されるまで待ちます。
無料のマージンは気にしない、ホンジュラスにはうんざりしている。
難しいですか?表現の話です。
私は問題を発見しました。デフォルトでは、入力パラメータにポジションの最大ロットの制限を設けています。
そのため、バリデータのSYMBOL_VOLUME_MINが 0.20の場合、ポジションを開くことが出来ませんでした。バリデータのデフォルトでは、ポジションの最大ロットにそのような小さな制限を 設定することはできません。