MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 572 1...565566567568569570571572573574575576577578579...1953 新しいコメント Taras Slobodyanik 2018.06.18 08:24 #5711 PolarSeaman:申し訳ないが、なぜできないのか理解できない。できますが、タイマーにはなりません。 if (IsTesting()) OnTimer(); Taras Slobodyanik 2018.06.18 08:25 #5712 PolarSeaman:然様ダニが来なかったらどうする? ダニがいない状態で「スタート」する必要があります。最初のティックは同期のためで、もし開始ティックが来なかった場合、市場は閉じ られ、そこですることは何もありません。 YanSay 2018.06.19 16:57 #5713 こんばんは!(^o^) またまた、お願いすることになりました。 ある時間帯に1つの注文を開く必要があり、過去30分間にこのマジックを使ってすでに注文が開かれている場合は、注文を開く必要はありません。このように書くと if (TimeCurrent()>StrToTime("00:01") && TimeCurrent()<StrToTime("00:30")) { //1я часть for (int i = OrdersTotal() - 1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != MagicNumber1) continue; if (TimeDayOfWeek(OrderOpenTime()) != TimeDayOfWeek (TimeCurrent())) continue; ++nCnt1; { if (nCnt1>0) return; } } //2ая часть for (int i = OrdersTotal() - 1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS,MODE_HISTORY)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != MagicNumber1) continue; if ( TimeToStr(TimeCurrent()-OrderOpenTime(),TIME_MINUTES) <= TimeToStr(D'00:30',TIME_MINUTES)) continue; ++nCnt1; { if (nCnt1>0) return; } } //Открытие ордера } 最初の部分だけ残すと、その30分間にストップ/テイクのポジションが閉じると、別のポジションが開いてしまうという問題があるのです。そこで、注文履歴に 入り、このマグで過去30分以内にすでに注文があった場合は、それを開けないようにする、という2番目の部分を追加しました。しかし、2番目の部分が何かおかしい、まだ開いてしまう。 アドバイスお願いします Taras Slobodyanik 2018.06.19 17:29 #5714 秒単位でカウントする必要があります。 if ( TimeCurrent()-OrderOpenTime() <= 30*60 ) YanSay 2018.06.19 17:52 #5715 Taras Slobodyanik:秒単位で数えなければならない。 残念ながらうまくいかなかった。 もう一度やってみましたが、これもダメでした。 if ( TimeToStr(TimeCurrent()-OrderOpenTime(),TIME_SECONDS) <= TimeToStr(30*60,TIME_SECONDS)) Ihor Herasko 2018.06.19 18:20 #5716 YanSay:残念ながら、うまくいかなかった。 もう一度やってみたが、これもダメだった。 なぜ全部の回線を比較しているのですか?タラスは正しく言った - 秒で数えなさい。彼のバージョンは、まだアカウント履歴に到達していないため、機能しませんでした。 //2ая часть for (int i = OrdersTotal() - 1; i >= 0; i--)これは、ワーキング・オーダーのサイクルである。履歴を見ると、次のようなループになる。 //2ая часть for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) その場合、ループの中で注文の開始時間ではなく、注文の終了時間を取る必要があります。 YanSay 2018.06.19 21:14 #5717 Ihor Herasko:なぜ全部の回線を比較しているのですか?タラスが秒単位で数えろと言ったのは正しかった。彼のバージョンは、あなたがアカウントの履歴に到達しなかったので、フィットしませんでした。 これは、ワーキングオーダーのサイクルです。履歴を見ると、次のようなループになる。 そして、ループの中で、注文のオープンタイム ではなく、クローズタイムを取る必要があります。 if (TimeCurrent()>StrToTime("00:01") && TimeCurrent()<StrToTime("00:30")) { //1я часть for (int i = OrdersTotal() - 1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != MagicNumber1) continue; if (TimeDayOfWeek(OrderOpenTime()) != TimeDayOfWeek (TimeCurrent())) continue; ++nCnt1; { if (nCnt1>0) return; } } //2ая часть for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != MagicNumber1) continue; if ( TimeCurrent() -OrderCloseTime() <= 30*60 ) continue; ++nCnt1; { if (nCnt1>0) return; } } //Открытие ордера } 私の理解が正しければ、TimeToStrのこと、つまりテキストに変換したのでしょうか? 修正しましたが、やはり すみません、私が完全にバカだったら。 lil_lil 2018.06.20 06:10 #5718 YanSay: 私が正しく理解していれば、TimeToStr - すなわちテキストに変換されることを意味するのでしょうか? 修正されましたが、それでも まったくもってバカですいません。自分の状態を声に出して言ってみれば、何が起こっているのかがわかるはずです)。 if ( TimeCurrent() -OrderCloseTime() <= 30*60 ) Roman Sharanov 2018.06.20 06:35 #5719 前のインジケータ・バッファの値のいずれかに空の値が割り当てられた場合、その値はチャートから削除されるのでしょうか? それとも、バッファに空の値が入って、チャートに描画されたままになるのでしょうか? Ihor Herasko 2018.06.20 06:47 #5720 YanSay: 私が正しく理解していれば、TimeToStr - すなわちテキストに変換されることを意味するのでしょうか? そうです。時間は 秒数なので、文字列に 変換する意味はありません。この数値は、文字列よりもはるかに簡単で、素早く作業できます。 修正されましたが、それでも 完全にバカだったらごめんなさい。あるものを修正し、別のものをスポイルしている) の代わりに第2部では if (!OrderSelect(i, SELECT_BY_POS)) continue; 復活させる if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue; 前回の試行では、この行が正しく書かれていましたね。 1...565566567568569570571572573574575576577578579...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
申し訳ないが、なぜできないのか理解できない。
できますが、タイマーにはなりません。
然様ダニが来なかったらどうする? ダニがいない状態で「スタート」する必要があります。
最初のティックは同期のためで、もし開始ティックが来なかった場合、市場は閉じ られ、そこですることは何もありません。
こんばんは!(^o^)
またまた、お願いすることになりました。
ある時間帯に1つの注文を開く必要があり、過去30分間にこのマジックを使ってすでに注文が開かれている場合は、注文を開く必要はありません。このように書くと
最初の部分だけ残すと、その30分間にストップ/テイクのポジションが閉じると、別のポジションが開いてしまうという問題があるのです。そこで、注文履歴に 入り、このマグで過去30分以内にすでに注文があった場合は、それを開けないようにする、という2番目の部分を追加しました。しかし、2番目の部分が何かおかしい、まだ開いてしまう。
アドバイスお願いします
秒単位でカウントする必要があります。
秒単位で数えなければならない。
残念ながらうまくいかなかった。
もう一度やってみましたが、これもダメでした。
残念ながら、うまくいかなかった。
もう一度やってみたが、これもダメだった。
なぜ全部の回線を比較しているのですか?タラスは正しく言った - 秒で数えなさい。彼のバージョンは、まだアカウント履歴に到達していないため、機能しませんでした。
これは、ワーキング・オーダーのサイクルである。履歴を見ると、次のようなループになる。
その場合、ループの中で注文の開始時間ではなく、注文の終了時間を取る必要があります。
なぜ全部の回線を比較しているのですか?タラスが秒単位で数えろと言ったのは正しかった。彼のバージョンは、あなたがアカウントの履歴に到達しなかったので、フィットしませんでした。
これは、ワーキングオーダーのサイクルです。履歴を見ると、次のようなループになる。
そして、ループの中で、注文のオープンタイム ではなく、クローズタイムを取る必要があります。
私の理解が正しければ、TimeToStrのこと、つまりテキストに変換したのでしょうか?
修正しましたが、やはり
すみません、私が完全にバカだったら。
私が正しく理解していれば、TimeToStr - すなわちテキストに変換されることを意味するのでしょうか?
修正されましたが、それでも
まったくもってバカですいません。
自分の状態を声に出して言ってみれば、何が起こっているのかがわかるはずです)。
前のインジケータ・バッファの値のいずれかに空の値が割り当てられた場合、その値はチャートから削除されるのでしょうか?
それとも、バッファに空の値が入って、チャートに描画されたままになるのでしょうか?
私が正しく理解していれば、TimeToStr - すなわちテキストに変換されることを意味するのでしょうか?
そうです。時間は 秒数なので、文字列に 変換する意味はありません。この数値は、文字列よりもはるかに簡単で、素早く作業できます。
修正されましたが、それでも
完全にバカだったらごめんなさい。
あるものを修正し、別のものをスポイルしている)
の代わりに第2部では
復活させる
前回の試行では、この行が正しく書かれていましたね。