MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1386 1...137913801381138213831384138513861387138813891390139113921393...1953 新しいコメント Vitaly Muzichenko 2021.02.11 17:46 #13851 Mikhail Mishanin: おかしいな)そんなはずはないのですが......。)戦闘が終わった場合 - 通常のスプレッドで取引し、入力でその「限界」を取り出し、スプレッドが限界を超えている場合、取引を無視するだけです。スプレッドはロールオーバーすることなくディリングで伸ばすことができます。 10単位から45単位まで、かなりのスプレッドの振れ幅があるのですが 45の 上映まで待たねばならない。 同時に、この機能は平均17をカウントしており、非常に満足のいくものです。 ロールオーバー後1時間は100-140まで上がるので、コードを実行して挙動を確認します。 Alexey Viktorov 2021.02.11 18:05 #13852 Vitaly Muzichenko:しかし、このように処方することも可能です。正常に動作するはずです。このロジックは好きではない。この関数への最初の入力。 res = 0;したがって、この条件 if(dt.hour==22 && res<_sp)が満たされない。そして、これ以上細かいことは言いたくない。いきなりですが、この条件ってなんですか? if(tc>LONG_MAX-1) その理屈は理解できない。 Vitaly Muzichenko 2021.02.11 18:13 #13853 Alexey Viktorov: このロジックは好きではない。この関数への最初の入力。res = 0;その結果、条件if(dt.hour==22 && res<_sp)が満たされていない。そして、これ以上突っ込みたくもない。いきなりですが、この条件ってなんですか? if(tc>LONG_MAX-1) その理屈は理解 できない。 1.この条件は、時間が22時間の場合、ロールオーバー後1時間のみです。しかし、これは初回起動時のみで、ターミナルは常にExpert Advisorで動作するため、一度だけ空になることになります。 タイムフレームの変更に備えて、静的であることも宣言すべきかもしれません。 2. if(tc>LONG_MAX-1) = longの許容値を超えた場合、変数 tcをゼロに する。週末など、端末が過負荷になることもあるので、そのようなことはまずないでしょう。 --- コードを変更、これは最終的なものでなければならない。 void OnTick() { int sp = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD); if(CheckSpr(sp)) { // Здесь код отправки } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ MqlDateTime dt; bool CheckSpr(int _sp) { static int ts=0; static ulong tc=0; static int res=0; TimeGMT(dt); if(res<_sp && (dt.hour==22||dt.hour==23)) { // Если 2 часа после Rollover спред упадёт до нормального - торгуем Comment("Rollover: Спред: ",_sp,", Средний: ",res,", Тиков: ",tc); return(false); } tc++; ts += _sp; res =ts/tc; if(tc<500) { Comment("Тиков менее 500: ",tc,", Спред: ",_sp,", Средний: ",res); return(false); } if(res>_sp) { Comment("Торгуем: Спред: ",_sp,", Средний: ",res,", Тиков: ",tc); return(true); } Comment("Не торгуем - спред завышен: Спред: ",_sp,", Средний: ",res,", Тиков: ",tc); return(false); } P.S. テストに出す 追記:コードを修正 しました ---- P.S.S.S. ロールオーバー後、1時間時間を追加しました。そうしないと、一部のディーラーで非常に高いスプレッドが 発生します。 最終的に20時間かけて完成させたものです。 1日の平均スプレッドは10~45ppsですが、ほとんどの場合10~17ppsで、平均スプレッドは19と計算されています。 参加者の皆さん、ありがとうございました。 Mikhail Mishanin 2021.02.11 18:23 #13854 Vitaly Muzichenko:タイムフレームの変更に備え、静的な宣言も必要かもしれません。 私はそれを理解し、それが動作しているように見える、私は「それはいけない」と撤回する)、今私は本当にゼロイング/割り当ての瞬間を理解する必要があります。 Vitaly Muzichenko 2021.02.14 10:59 #13855 フォーラムで議論を見たことがあるが、見つからない。 いつでも開けることのできるバーの1ポジションに限定する必要がある、これは今のオプションだが、私の意見では「重い」。 if(Bars(Symbol(), PERIOD_CURRENT, Buy.LastOpenTime, TimeCurrent())==0) return; // Открывать не более 1 на баре これをどう置き換えれば、より軽くなるのか。 Mikhail Mishanin 2021.02.14 12:00 #13856 Vitaly Muzichenko:フォーラムで議論を見たことがあるが、見つからない。いつでも開けることのできるバーの1ポジションに限定する必要がある、これは今のところオプションだが、私の意見では「重い」。これをどう置き換えれば、より簡単になるのか。 "いつ空くかわからないバーのポジションを1つに絞ること..." 一般的な表現ですが、このシンボルのバーで一度だけOrderSendを 送れるということでしょうか? Vitaly Muzichenko 2021.02.14 12:40 #13857 Mikhail Mishanin:"いつ開かれるかわからないバーの上で、一つのポジションに限定しなければならない..." 表現が大雑把すぎるのですが、このシンボルでは1バーにつき1回OrderSendを 送れるということでしょうか? エキスパートアドバイザーはH1タイムフレームで動作しており、10:17にポジションを開くことができますが、11:00より前、つまり現在のバーで別のポジションを開く必要はありません。 Mikhail Mishanin 2021.02.14 13:13 #13858 Vitaly Muzichenko:このEAはH1フレームで動作しており、10:17にポジションを開くことができます。 うん、やはり、悪魔は細部に宿るものだと思う。 ポジションを開く- 「禁止フラグ」の設定、および/または「時間」の保存(比較のために同じ(ソース)である限り、どちらか一方でも構いません。) 新しいバーが開かれる -「禁止フラグ」が立てられる 質問:何らかの理由で立場が変わった場合はどうするのですか? 新しいバーを定義する例 - doTB divisor in seconds, for H1 it is 3600.0 BARii[].time - M1のバーの時間. if(MathFloor(BARii[0].time/doTB)-MathFloor(BARii[1].time/doTB)>=1.0)//если бар закрылся Совершение сделок - Торговые операции - Справка по MetaTrader 5 www.metatrader5.com Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением... Vitaly Muzichenko 2021.02.14 13:27 #13859 Mikhail Mishanin:私の意見では、「悪魔は細部に宿る」、テキストであれば簡単に言えば、再び不完全な状態です。ポジションを開いた- 「禁止フラグ」を設定し、および/または「時間」を保存する(比較のために同じ(ソース)である限り、どちらか一方でもかまいません)。新しいバーが開かれる -「禁止フラグ」が立てられる質問:何らかの理由で立場が変わった場合はどうするのですか?新しいバーを定義する例 - doTB divisor in seconds, for H1 it is 3600.0BARii[].time - M1の小節の時間,ただし,任意の分割数. その時、フラグを使ったオプションでは満足できず、理由は覚えていませんが、これを if(Bars(Symbol(), PERIOD_CURRENT, Buy.LastOpenTime, TimeCurrent())==0) return; // Открывать не более 1 на баре OK、別の実装を考えてみる Mikhail Mishanin 2021.02.14 14:12 #13860 Vitaly Muzichenko:当時、国旗のオプションに不満があり、理由は忘れましたが、それに替えてなるほど、別の実装を考えてみます。 そして、この実装が何を阻んでいるのか。私のコードと同様に、1つの "バー "に2回、または異なる回数が決定されます。ちょうど私のバリアントで "異なる "バー "で、あなたのバリアントで "真 "のときに、ちょうど比較== "0 "とバイパス特に整数、WO、そして私はおそらく> 0.0 または > 0.9 に条件を変更できますが、考える必要がある...。 1...137913801381138213831384138513861387138813891390139113921393...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
おかしいな)そんなはずはないのですが......。)
戦闘が終わった場合 - 通常のスプレッドで取引し、入力でその「限界」を取り出し、スプレッドが限界を超えている場合、取引を無視するだけです。
スプレッドはロールオーバーすることなくディリングで伸ばすことができます。
10単位から45単位まで、かなりのスプレッドの振れ幅があるのですが
45の 上映まで待たねばならない。
同時に、この機能は平均17をカウントしており、非常に満足のいくものです。
ロールオーバー後1時間は100-140まで上がるので、コードを実行して挙動を確認します。
しかし、このように処方することも可能です。
正常に動作するはずです。
このロジックは好きではない。
この関数への最初の入力。
res = 0;
したがって、この条件
が満たされない。
そして、これ以上細かいことは言いたくない。いきなりですが、この条件ってなんですか?
その理屈は理解できない。このロジックは好きではない。
この関数への最初の入力。
res = 0;
その結果、条件
が満たされていない。
そして、これ以上突っ込みたくもない。いきなりですが、この条件ってなんですか?
その理屈は理解 できない。1.この条件は、時間が22時間の場合、ロールオーバー後1時間のみです。しかし、これは初回起動時のみで、ターミナルは常にExpert Advisorで動作するため、一度だけ空になることになります。
タイムフレームの変更に備えて、静的であることも宣言すべきかもしれません。
2. if(tc>LONG_MAX-1) = longの許容値を超えた場合、変数 tcをゼロに する。週末など、端末が過負荷になることもあるので、そのようなことはまずないでしょう。
---
コードを変更、これは最終的なものでなければならない。
P.S. テストに出す
追記:コードを修正 しました
----
P.S.S.S. ロールオーバー後、1時間時間を追加しました。そうしないと、一部のディーラーで非常に高いスプレッドが 発生します。
最終的に20時間かけて完成させたものです。
1日の平均スプレッドは10~45ppsですが、ほとんどの場合10~17ppsで、平均スプレッドは19と計算されています。
参加者の皆さん、ありがとうございました。
タイムフレームの変更に備え、静的な宣言も必要かもしれません。
私はそれを理解し、それが動作しているように見える、私は「それはいけない」と撤回する)、今私は本当にゼロイング/割り当ての瞬間を理解する必要があります。
フォーラムで議論を見たことがあるが、見つからない。
いつでも開けることのできるバーの1ポジションに限定する必要がある、これは今のオプションだが、私の意見では「重い」。
これをどう置き換えれば、より軽くなるのか。
フォーラムで議論を見たことがあるが、見つからない。
いつでも開けることのできるバーの1ポジションに限定する必要がある、これは今のところオプションだが、私の意見では「重い」。
これをどう置き換えれば、より簡単になるのか。
"いつ空くかわからないバーのポジションを1つに絞ること..."
一般的な表現ですが、このシンボルのバーで一度だけOrderSendを 送れるということでしょうか?
"いつ開かれるかわからないバーの上で、一つのポジションに限定しなければならない..."
表現が大雑把すぎるのですが、このシンボルでは1バーにつき1回OrderSendを 送れるということでしょうか?
エキスパートアドバイザーはH1タイムフレームで動作しており、10:17にポジションを開くことができますが、11:00より前、つまり現在のバーで別のポジションを開く必要はありません。
このEAはH1フレームで動作しており、10:17にポジションを開くことができます。
うん、やはり、悪魔は細部に宿るものだと思う。
ポジションを開く- 「禁止フラグ」の設定、および/または「時間」の保存(比較のために同じ(ソース)である限り、どちらか一方でも構いません。)
新しいバーが開かれる -「禁止フラグ」が立てられる
質問:何らかの理由で立場が変わった場合はどうするのですか?
新しいバーを定義する例 - doTB divisor in seconds, for H1 it is 3600.0
BARii[].time - M1のバーの時間.
私の意見では、「悪魔は細部に宿る」、テキストであれば簡単に言えば、再び不完全な状態です。
ポジションを開いた- 「禁止フラグ」を設定し、および/または「時間」を保存する(比較のために同じ(ソース)である限り、どちらか一方でもかまいません)。
新しいバーが開かれる -「禁止フラグ」が立てられる
質問:何らかの理由で立場が変わった場合はどうするのですか?
新しいバーを定義する例 - doTB divisor in seconds, for H1 it is 3600.0
BARii[].time - M1の小節の時間,ただし,任意の分割数.
その時、フラグを使ったオプションでは満足できず、理由は覚えていませんが、これを
OK、別の実装を考えてみる
当時、国旗のオプションに不満があり、理由は忘れましたが、それに替えて
なるほど、別の実装を考えてみます。
そして、この実装が何を阻んでいるのか。私のコードと同様に、1つの "バー "に2回、または異なる回数が決定されます。ちょうど私のバリアントで "異なる "バー "で、あなたのバリアントで "真 "のときに、ちょうど比較== "0 "とバイパス特に整数、WO、そして私はおそらく> 0.0 または > 0.9 に条件を変更できますが、考える必要がある...。