エラーに悩まされ、取引業務がない - ページ 14 1...789101112131415161718192021 新しいコメント Maxim Kuznetsov 2020.07.26 13:14 #131 Maxim Kuznetsov:Stop Outで何が起こるかを考える。(マージンコールはすでに持っている、ステップの方が近い)。の場合、取引は強制的に終了しますが、そのようなオプションを無視し、毎ティック(履歴では長い)探し、不正な注文を送ることになります。 "10年以上のMQLプログラミング "をしている人のために補足しておくと 起こる可能性のあることは、必ず起こります。 ストップアウトやマージンコールはそれほど普通ではありませんが、当然のことであり、EAはそれらに対応できるようにしておく必要があります。 取引条件は変更される可能性があり、不変ではありません。StopLevelは時々ジャンプし、レバレッジも変化します。 ユーザーは、意図せずとも簡単にストップ/テイクを設定/変更したり、ポジションを閉じることができます - Expert Advisorはこれに反応する必要があります。 ユーザーがMagicで注文をオープン/クローズする(または誤ってMagic=0に設定して手で取引する)ことができますが、ロボットは何をするのでしょうか? EAを再起動せずに残高を入金/出金する - これができるロボットは非常に重要(最近トピックがありました - 男性がお金を失っただけ)。 端末が再起動し、アップデートに時間がかかったり、かなりの時間接続が切れたりすることがある。これらすべてとオフラインで起こったことを考慮する必要がある Validatorは「最低限必要なもの」の1-2%しかチェックしないのに、まだ文句を言う人がいるのか...。 Andrey Kaunov 2020.07.26 14:44 #132 Renat Akhtyamov:は、質問と回答の順で書かれているようです。スレッドの全ページにアクセスできます。 レナト ワラントをカウントしているとのことですが。なぜなんでしょう? マキシム・クズネツォフ: ただ、「MQLプログラミング歴10年以上」の皆さんのために補足しておきます。起こる可能性のあることは、必ず起こります。 ストップアウトとマージンコールはそれほど普通ではないが、当然のことであり、EAはそれらに対応できるようにしなければならない。 取引条件は変更される可能性があり、一定ではありません。StopLevelは時々ジャンプし、レバレッジも変化します。 ユーザーは、意図せずとも簡単にストップ/テイクを設定/変更したり、ポジションを閉じることができます - Expert Advisorはこれに反応する必要があります。 ユーザーがMagicで注文をオープン/クローズする(または誤ってMagic=0に設定して手で取引する)ことができますが、ロボットは何をするのでしょうか? EAを再起動せずに残高を入金/出金する - これができるロボットは非常に重要(最近トピックがありました - 男性がお金を失っただけ)。 端末が再起動し、アップデートに時間がかかったり、かなりの時間接続が切れたりすることがある。これらすべてとオフラインで起こったことを考慮する必要がある Validatorは「最低候補」の1〜2%しかチェックされないのに、まだ文句を言う人がいるのか...。 マキシム、何を言ってるんだ!ストップ安になった時の対処法を相談したもの。フォーラムを6ページ目から読んでみてください、私の考えでは、私の疑問を詳細に述べています。 Renat Akhtyamov 2020.07.26 14:52 #133 Andrey Kaunov:レナト ワラントをカウントしているとのことですが。なぜなんでしょう?マキシム、何を言ってるんだ!ストップ・アウトをどうするかというアドバイスを求めたのだろうか。6ページのフォーラムを読むと、私の疑問が詳細に述べられているように思います。 リアルでのチケットは0,,,,Nではないので Andrey Kaunov 2020.07.26 14:55 #134 ああ、私の小さなコードのことですね。だから、チケットの種類は関係ないんです。そこに2次元配列のRenatがある。セル[0]にはチケットを書き、セル[1]にはオーダーをカウントする。違う変数でやってもいいのですが、その方法でやってみようと思いました。 Maxim Kuznetsov 2020.07.26 15:30 #135 Andrey Kaunov:レナト ワラントをカウントしているとのことですが。なぜなんでしょう?マキシム、何を言ってるんだ!ストップ・アウトをどうするかというアドバイスを求めたのだろうか。フォーラムを6ページ目から読んでください。私の意見では、私の質問を詳細に述べています。 あなたの10年の経験から、私は何をアドバイスしたらいいのでしょうか?) 私のアドバイスを無視して、EAにバリデーターを要求していますね。 --- NZDUSDでストップアウトして、注文がクローズされた場合、EAのロジックは関係なく、それを選択してOrderCloseを送信すると、falseが表示されます。この驚くべき動作が1 目盛りごとに繰り返され、全体がスローになり、チェックがキャンセルされるのです。しかも、これは最もシンプルなケースでの話です。 トレードコンディションチェックについて - 前14ページ参照 Artyom Trishkin 2020.07.26 15:58 #136 Andrey Kaunov: あなたのこの投稿に注目してください。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム 取引操作のないエラーに疲れる アンドレイ・カウノフ さん 2020.07.25 11:42 レナットさん、試してみますね。 ウラジミール、質問を建設的に理解することができるか?マージンなどのロットは確認しないのですか?どんなチェックを通さなければならないか...」という記事は、もう私にとってバイブルのような ものです。上にコードスニペットを掲載しました。完全準拠のため、記事中の推奨事項に従ってコードを変更しました。 //+------------------------------------------------------------------+ //| Функция нормализации лота | //+------------------------------------------------------------------+ double NormalizeLots(string symbol, double lot, int direction, bool is_margin=true) { if(lot<=0) return(0.0); RefreshRates(); double min=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN); double max=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX); double step=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); //double free = AccountFreeMargin()*0.95; //double margin = MarketInfo(symbol,MODE_MARGINREQUIRED); double _lot=lot<min?min:(lot>max?max:lot); _lot=MathRound(_lot/step)*step; //if(is_margin && _lot*margin>free) _lot=0.0; ResetLastError(); if(is_margin && (AccountFreeMarginCheck(Symbol(),direction,_lot)<=0 || GetLastError()==134)) _lot=0.0; return(_lot); } でも、まだ「ノートレード」と表示されるんです。 もし、この関数が常に0.0ロットを送信して、取引を開始できないのであれば、最小ロットを送信するように変更します。 //+------------------------------------------------------------------+ //| Функция нормализации лота | //+------------------------------------------------------------------+ double NormalizeLots(string symbol, double lot, int direction, bool is_margin=true) { if(lot<=0) return(0.0); RefreshRates(); double min=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN); double max=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX); double step=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); //double free = AccountFreeMargin()*0.95; //double margin = MarketInfo(symbol,MODE_MARGINREQUIRED); double _lot=lot<min?min:(lot>max?max:lot); _lot=MathRound(_lot/step)*step; //if(is_margin && _lot*margin>free) _lot=0.0; ResetLastError(); if(is_margin && (AccountFreeMarginCheck(Symbol(),direction,_lot)<=0 || GetLastError()==134)) _lot=min; return(_lot); } そして、トレードが発生した履歴が表示されます(以下のスクリーンショットを参照)。しかし、最低限のロットはもちろん、とても不思議なことにやってくるのですが、それはそれとして。でも、お買い得品はありますよ それは、このような状況では、非常に奇妙なことは、$ 1の預金のための最小ロット0.2を作る、バリデータです。 当然、お買い得感は皆無でしょうし かも、これは完全に適切なコードで。ちなみに、テストのためにインジケータなどの条件はすべて外しています。Expert Advisor を起動すると同時に、取引が開始されます。 では、バリデーターは何をするのでしょうか?今のところ、プログラマーの心を揺さぶるだけだと思います バリデータの何かを変えろとは言っていないことに注意してください。単純にテストログを見ればいいんです。そうすれば、どのようなパラメータでテストが行われているのか、またどのような堆積物があるのかを理解することができます。結局のところ、少なくともプリントを使って、コードのどこにエラーがあるのかを確認し、できるだけ早く修正することができるかもしれません。私たちは、1週間ずっと空に向かって指を指して、エラーを特定することだけを試みているわけではありません。私たちは互いに敵対しているわけではないのですね。わかるよ、一緒に何かを稼ごうとしているんだから。 最初のスクリーンショットです。NZDUSDの取引はありませんというメッセージにくっついたんですね。そして、あなたは14ページにわたって、この工場と戦ってきたのです。 しかし、最初のスクリーンショットの主なエラーは、そのようなものではありません。GBPUSDのテストが長すぎることを知らせているものです。テストが長すぎたため、バリデータはテストをタイムアウトさせた。 GBPUSD, M30でコードプロファイラを実行し、3時間取引させる。そして、ボトルネックに目を向け、それを解決する。 Andrey Kaunov 2020.07.26 16:16 #137 Maxim Kuznetsov:---NZDUSDにストップアウトがあり、注文をクローズした場合、Expert Advisorのロジックはそれを気にせず、まだそれを選択してOrderCloseを送信すると、falseが返されます。こ の驚くべき動作が1 目盛りごとに繰り返され、全体がスローになり、チェックがキャンセルされるのです。しかも、これは最もシンプルなケースでの話です。 取引条件の確認について - 前14ページをご参照ください。 マキシム、あなたはコードを非常に不注意に読んでいます。 //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { gl_lots=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN); gl_ask=NormalizeDouble(Ask,_Digits); gl_bid=NormalizeDouble(Bid,_Digits); gl_comm="test"; //--- if(AccountFreeMarginCheck(_Symbol,OP_BUY,gl_lots)<=0 || GetLastError()==134) { printf("Not enough money for the minimum lot: %.4f",gl_lots); return; } if(test_ticket[1]<8 && test_ticket[0]==0) { test_ticket[0]=OrderSend((StringCompare(_Symbol,"NZDUSD")==0?"NZDUSD":_Symbol),OP_BUY,gl_lots,gl_ask,30,0.0,0.0,gl_comm,33333,0,clrNONE); if(test_ticket[0]>0) test_ticket[1]++; else if(Fun_Error(GetLastError())==1) return; } if(test_ticket[0]>0) if(OrderSelect(test_ticket[0],SELECT_BY_TICKET)) { if(OrderCloseTime()==0 && OrderOpenTime()+300<TimeCurrent()) if(OrderClose(test_ticket[0],OrderLots(),gl_bid,30,clrNONE)) { printf("Test order closed, ticket #%d",test_ticket[0]); test_ticket[0]=0; } else if(Fun_Error(GetLastError())==1) return; } else if(Fun_Error(GetLastError())==1) return; } マーカーに書いてある条件は、注文がクローズされるとOrderClose()関数が逃げない、これが第一です。そして第二に、NZDUSDに少なくとも1つの注文が開いていれば、バリデータは「取引なし」を返さないでしょう。 アルチョム・トリシキン: ... GBPUSD, M30でコードプロファイラを実行し、3時間取引させる。そして、ボトルネックに目を向け、それを解決する。 よし、アルチョム。試してみます。 Maxim Kuznetsov 2020.07.26 16:21 #138 Andrey Kaunov:マキシム、あなたは非常に不注意にコードを読んでいます。マーカーで指定した条件では、OrderClose()関数を逃がさない、これが第一条件です。そして第二に、NZDUSDで少なくとも1つの注文が開かれていれば、バリデータは「取引なし」を返さないでしょう。 正直なところ、曲がったコードのデバッガーを演じ、作者の自信と戦うのはもうこりごりです。指定されたエラーは、自分で見てください を徭蛍で恬ることは、徭蛍を徭蛍で恬ることであり、徭蛍を徭蛍で恬ることは、徭蛍を徭蛍で恬ることである。Validatorは関係ありません Andrey Kaunov 2020.07.26 16:30 #139 マキシムさん個人にデバッグをお願いしているわけではないんです。コードが曲がっているのは結構だが、バリデーションをパスして いる。問題はまったく違う。 Andrey Kaunov 2020.07.29 14:40 #140 Artyom Trishkin:... GBPUSD, M30でコードプロファイラを実行し、3時間取引させる。そして、ボトルネックに目を向け、それを解決する。 Artyomさん、コードプロファイラでは ボトルネックは出ていませんね。病的に長い処理もなく、コード全体がスムーズに動きます。 この一連の話の底流にあるのは、こういうことだ。なんやかんやで、ようやくバリデーションに合格しました。コードには全く依存しません(この記事で紹介したように、明らかなエラーがなく正しい場合)。バリデーターがどのように機能するかは、当然ながら制作者しか知らない。2回目でコードを確認し、3回目で確認する。何回か続けて通過することもあれば、まったく通過しないこともある。しかも、入力パラメータを変更したり(大したことない)、並べ替えても何も変わらない行をずらしたり、さらにはコメント(作業ファイルには何ら影響しないはず)を削除したり追加したりするだけです。 一般に、検証の合否は「気分」(ネットワーク内の電圧、ある種のパワーフローなど)にのみ依存します。このように、通常のテスターでは、通常のパラメータでコードがハングアップすることはなく、どのようなペアやTFでも 失敗することはなかったのです。 1...789101112131415161718192021 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Stop Outで何が起こるかを考える。(マージンコールはすでに持っている、ステップの方が近い)。
の場合、取引は強制的に終了しますが、そのようなオプションを無視し、毎ティック(履歴では長い)探し、不正な注文を送ることになります。
"10年以上のMQLプログラミング "をしている人のために補足しておくと
起こる可能性のあることは、必ず起こります。
ストップアウトやマージンコールはそれほど普通ではありませんが、当然のことであり、EAはそれらに対応できるようにしておく必要があります。
取引条件は変更される可能性があり、不変ではありません。StopLevelは時々ジャンプし、レバレッジも変化します。
ユーザーは、意図せずとも簡単にストップ/テイクを設定/変更したり、ポジションを閉じることができます - Expert Advisorはこれに反応する必要があります。
ユーザーがMagicで注文をオープン/クローズする(または誤ってMagic=0に設定して手で取引する)ことができますが、ロボットは何をするのでしょうか?
EAを再起動せずに残高を入金/出金する - これができるロボットは非常に重要(最近トピックがありました - 男性がお金を失っただけ)。
端末が再起動し、アップデートに時間がかかったり、かなりの時間接続が切れたりすることがある。これらすべてとオフラインで起こったことを考慮する必要がある
Validatorは「最低限必要なもの」の1-2%しかチェックしないのに、まだ文句を言う人がいるのか...。
は、質問と回答の順で書かれているようです。
スレッドの全ページにアクセスできます。
レナト ワラントをカウントしているとのことですが。なぜなんでしょう?
ただ、「MQLプログラミング歴10年以上」の皆さんのために補足しておきます。
起こる可能性のあることは、必ず起こります。
ストップアウトとマージンコールはそれほど普通ではないが、当然のことであり、EAはそれらに対応できるようにしなければならない。
取引条件は変更される可能性があり、一定ではありません。StopLevelは時々ジャンプし、レバレッジも変化します。
ユーザーは、意図せずとも簡単にストップ/テイクを設定/変更したり、ポジションを閉じることができます - Expert Advisorはこれに反応する必要があります。
ユーザーがMagicで注文をオープン/クローズする(または誤ってMagic=0に設定して手で取引する)ことができますが、ロボットは何をするのでしょうか?
EAを再起動せずに残高を入金/出金する - これができるロボットは非常に重要(最近トピックがありました - 男性がお金を失っただけ)。
端末が再起動し、アップデートに時間がかかったり、かなりの時間接続が切れたりすることがある。これらすべてとオフラインで起こったことを考慮する必要がある
Validatorは「最低候補」の1〜2%しかチェックされないのに、まだ文句を言う人がいるのか...。
マキシム、何を言ってるんだ!ストップ安になった時の対処法を相談したもの。フォーラムを6ページ目から読んでみてください、私の考えでは、私の疑問を詳細に述べています。
レナト ワラントをカウントしているとのことですが。なぜなんでしょう?
マキシム、何を言ってるんだ!ストップ・アウトをどうするかというアドバイスを求めたのだろうか。6ページのフォーラムを読むと、私の疑問が詳細に述べられているように思います。
リアルでのチケットは0,,,,Nではないので
レナト ワラントをカウントしているとのことですが。なぜなんでしょう?
マキシム、何を言ってるんだ!ストップ・アウトをどうするかというアドバイスを求めたのだろうか。フォーラムを6ページ目から読んでください。私の意見では、私の質問を詳細に述べています。
あなたの10年の経験から、私は何をアドバイスしたらいいのでしょうか?)
私のアドバイスを無視して、EAにバリデーターを要求していますね。
---
NZDUSDでストップアウトして、注文がクローズされた場合、EAのロジックは関係なく、それを選択してOrderCloseを送信すると、falseが表示されます。この驚くべき動作が1 目盛りごとに繰り返され、全体がスローになり、チェックがキャンセルされるのです。しかも、これは最もシンプルなケースでの話です。
トレードコンディションチェックについて - 前14ページ参照
あなたのこの投稿に注目してください。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
取引操作のないエラーに疲れる
アンドレイ・カウノフ さん 2020.07.25 11:42
レナットさん、試してみますね。
ウラジミール、質問を建設的に理解することができるか?マージンなどのロットは確認しないのですか?どんなチェックを通さなければならないか...」という記事は、もう私にとってバイブルのような ものです。上にコードスニペットを掲載しました。完全準拠のため、記事中の推奨事項に従ってコードを変更しました。
でも、まだ「ノートレード」と表示されるんです。
もし、この関数が常に0.0ロットを送信して、取引を開始できないのであれば、最小ロットを送信するように変更します。
そして、トレードが発生した履歴が表示されます(以下のスクリーンショットを参照)。しかし、最低限のロットはもちろん、とても不思議なことにやってくるのですが、それはそれとして。でも、お買い得品はありますよ
それは、このような状況では、非常に奇妙なことは、$ 1の預金のための最小ロット0.2を作る、バリデータです。
当然、お買い得感は皆無でしょうし かも、これは完全に適切なコードで。ちなみに、テストのためにインジケータなどの条件はすべて外しています。Expert Advisor を起動すると同時に、取引が開始されます。
では、バリデーターは何をするのでしょうか?今のところ、プログラマーの心を揺さぶるだけだと思います
バリデータの何かを変えろとは言っていないことに注意してください。単純にテストログを見ればいいんです。そうすれば、どのようなパラメータでテストが行われているのか、またどのような堆積物があるのかを理解することができます。結局のところ、少なくともプリントを使って、コードのどこにエラーがあるのかを確認し、できるだけ早く修正することができるかもしれません。私たちは、1週間ずっと空に向かって指を指して、エラーを特定することだけを試みているわけではありません。私たちは互いに敵対しているわけではないのですね。わかるよ、一緒に何かを稼ごうとしているんだから。
最初のスクリーンショットです。NZDUSDの取引はありませんというメッセージにくっついたんですね。そして、あなたは14ページにわたって、この工場と戦ってきたのです。
しかし、最初のスクリーンショットの主なエラーは、そのようなものではありません。GBPUSDのテストが長すぎることを知らせているものです。テストが長すぎたため、バリデータはテストをタイムアウトさせた。
GBPUSD, M30でコードプロファイラを実行し、3時間取引させる。そして、ボトルネックに目を向け、それを解決する。
---
NZDUSDにストップアウトがあり、注文をクローズした場合、Expert Advisorのロジックはそれを気にせず、まだそれを選択してOrderCloseを送信すると、falseが返されます。こ の驚くべき動作が1 目盛りごとに繰り返され、全体がスローになり、チェックがキャンセルされるのです。しかも、これは最もシンプルなケースでの話です。
取引条件の確認について - 前14ページをご参照ください。
マキシム、あなたはコードを非常に不注意に読んでいます。
マーカーに書いてある条件は、注文がクローズされるとOrderClose()関数が逃げない、これが第一です。そして第二に、NZDUSDに少なくとも1つの注文が開いていれば、バリデータは「取引なし」を返さないでしょう。
...
GBPUSD, M30でコードプロファイラを実行し、3時間取引させる。そして、ボトルネックに目を向け、それを解決する。
よし、アルチョム。試してみます。
マキシム、あなたは非常に不注意にコードを読んでいます。
マーカーで指定した条件では、OrderClose()関数を逃がさない、これが第一条件です。そして第二に、NZDUSDで少なくとも1つの注文が開かれていれば、バリデータは「取引なし」を返さないでしょう。
正直なところ、曲がったコードのデバッガーを演じ、作者の自信と戦うのはもうこりごりです。指定されたエラーは、自分で見てください
を徭蛍で恬ることは、徭蛍を徭蛍で恬ることであり、徭蛍を徭蛍で恬ることは、徭蛍を徭蛍で恬ることである。Validatorは関係ありません
...
GBPUSD, M30でコードプロファイラを実行し、3時間取引させる。そして、ボトルネックに目を向け、それを解決する。
Artyomさん、コードプロファイラでは ボトルネックは出ていませんね。病的に長い処理もなく、コード全体がスムーズに動きます。
この一連の話の底流にあるのは、こういうことだ。なんやかんやで、ようやくバリデーションに合格しました。コードには全く依存しません(この記事で紹介したように、明らかなエラーがなく正しい場合)。バリデーターがどのように機能するかは、当然ながら制作者しか知らない。2回目でコードを確認し、3回目で確認する。何回か続けて通過することもあれば、まったく通過しないこともある。しかも、入力パラメータを変更したり(大したことない)、並べ替えても何も変わらない行をずらしたり、さらにはコメント(作業ファイルには何ら影響しないはず)を削除したり追加したりするだけです。
一般に、検証の合否は「気分」(ネットワーク内の電圧、ある種のパワーフローなど)にのみ依存します。このように、通常のテスターでは、通常のパラメータでコードがハングアップすることはなく、どのようなペアやTFでも 失敗することはなかったのです。