どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 846 1...839840841842843844845846847848849850851852853...1178 新しいコメント Artyom Trishkin 2015.02.09 10:55 #8451 Pokrov:関数の後にGetLastErrorがありますが、エラーが発生した場合、このブロックに移動して(書いてある通り)コマンドは実行されないのでしょうか?OrderSend() -> GetLastError -> エラーブロック Sleep(3000) RefreshRates() -> ブロックを終了し、条件が残っていれば OrderSend() を再度要求する、といったチェーンは理解できましたが。あるいは、私の推理や概念が間違っているのか。ブロック内に戻り値1か0を書きたいとのことですが、私の関数はSignalBuyのようなブーリアン値とは関係ない単純なもので、私の理解が正しければ、戻り値はそこで返すべきものだと思うのですが。 エラー時の取引試行回数のループを作る。取引環境をリフレッシュする。前回のエラーの値をクリアし、返された結果を確認しながら取引要求を送信します。エラーが返された場合、それを分析し、エラーコードに応じて、サイクルを完全に終了させるか、エラーを修正するために必要なアクションを行い、サイクルの次の反復に進みます。取引に成功した場合、ループを中断し、取引要求 結果の後処理を行うプログラムロジックに対応する値(関数実行成功フラグまたは注文受付番号等)を呼び出し側のプログラムに返します。 Alexey Viktorov 2015.02.09 11:26 #8452 Pokrov:関数の後にGetLastErrorがありますが、エラーが発生した場合、このブロックに移動して(書いてある通り)コマンドは実行されないのでしょうか?OrderSend() -> GetLastError -> エラーブロック Sleep(3000) RefreshRates() -> ブロックを終了し、条件が残っていれば OrderSend() を再度要求する、といったチェーンは理解できましたが。あるいは、私の推理や概念が間違っているのか。ブロック内に戻り値1か0を書きたいとのことですが、私の関数はSignalBuyのようなブーリアン値とは関係ない単純なもので、私の理解が正しければ、戻り値はそこで返すべきものだと思うのですが。 また、あなたの例では、エラーが出た後のリアクションがないことを付け加えておきます。確認したところ、ちょっと寝ようと思ったのか、データをリフレッシュしたのか、以外とそうでもなかったです。OnTick()関数が 完了した時点で終了させるだけ Nauris Zukas 2015.02.09 12:00 #8453 こんにちは。アドバイスをお願いします。条件に従って、ポジションをクローズし、121秒後に新しいポジションをオープンする必要があります。Sleep(121000)でどうすればいいのでしょうか?if(GetProfitOpenHigestInPoint(NULL,OP_BUY,magic) > PiespieduClose*10) { ClosePosWithMaxProfitInCurrency(NULL,OP_BUY,magic); Sleep(121000); OpenPosition(NULL, OP_BUY, LotSize(),0,0,magic); } Artyom Trishkin 2015.02.09 12:30 #8454 abeiks: ごきげんよう。 アドバイスをお願いします。条件に従って、ポジションをクローズし、121秒後に新しいポジションをオープンする必要があります。Sleep(121000)でどうすればいいのでしょうか? ヘルプ: OnTimer() Nauris Zukas 2015.02.09 14:09 #8455 artmedia70: OnTimer()による救済 ありがとうございました。OnTimer()を使ったことがなく、この部分はvoid OnTick()の中にあります。 OpenPosition()関数をOnTimer()で処理することはできますか?もし可能なら、そこにOnTimer()を正しく挿入する方法をコードで修正してください...。void OnTick() { ... if(GetProfitOpenHigestInPoint(NULL,OP_BUY,magic) > PiespieduClose*10) { ClosePosWithMaxProfitInCurrency(NULL,OP_BUY,magic); EventSetTimer(121); OpenPosition(NULL, OP_BUY, LotSize(),0,0,magic); } ... } Jakhongir Rajabov 2015.02.09 14:57 #8456 Windows 7を再インストールし、Mt4をインストールしようとしたところ、ファイルがダウンロードできないのですが、どうしたらいいでしょうか? PokrovMT5 2015.02.09 16:18 #8457 Alexeiさん、Artemさん、専門的なコメントとアドバイスをありがとうございました。 Artyom Trishkin 2015.02.09 17:19 #8458 abeiks: ありがとうございます。OnTimer()を使ったことがありません。 この部分のコードはvoid OnTick()にあります。 では、OpenPosition()関数はOnTimer()で処理されるのでしょうか?もし可能なら、そこにOnTimer()を正しく挿入する方法をコードで修正してください...。OnInit()でタイマーをスタートさせる。EventSetTimer(1); // раз в секундуカウントダウンを開始するには、タイマーの最後の位置の終了時刻を求め、この時刻から121回スクンデッドカウントする必要があります。新しいポジションをオープンするフラグを渡すには、プログラム全体をスコープとするグローバル変 数を使用します。初期状態で121より大きい値、例えば122を含むようにすることができます(設定で待ち時間を変更できます)。OnTick()で、この変数を確認します。121より大きく、ポジションがない場合は、ポジションをオープンし、正常にオープンできたかどうかを確認した後、変数を0にリセットします。ポジションが閉じられると同時に、タイマーはその時刻を確認し(これは1秒に1回連続して行われます)、現在時刻からポジションの閉鎖時刻までが121秒未満であれば、タイマーはカウントを開始し、毎秒、変数の値が1ずつ加算されます。だいたいそうです。バグがあるかもしれないところ - ポジションがまだ閉じられていない場合、その閉鎖時間はゼロに等しくなります。そのため、カウントダウンを開始する際に不具合が発生することがあります。例えば、変数を-1にリセットすることができます。はい、OnDeinit()でタイマーを破壊することを忘れないでください。//+------------------------------------------------------------------+ void OnDeinit(const int reason) {EventKillTimer();} //+------------------------------------------------------------------+ Nauris Zukas 2015.02.09 17:41 #8459 artmedia70:OnInit()でタイマーをスタートさせる。カウントダウンを開始するには、最後にポジションを閉じた時刻をタイマーで求め、その時刻から121秒をカウントする必要があります。新しいポジションを開くことを許可するフラグを渡すには、プログラム全体で拡張可能なグローバル変数を使用します。初期値として121より大きい値、例えば122を含ませることができます(設定で待ち時間を変更できます)。OnTick()では、この変数をチェックします。121より大きく、ポジションがない場合は、ポジションをオープンし、オープンが成功したかどうかを確認した後、変数をゼロにリセットします。ポジションが閉じられると同時に、タイマーはその時刻を確認し(これは1秒に1回連続して行われます)、現在時刻からポジションの閉鎖時刻までが121秒未満であれば、タイマーはカウントを開始し、毎秒、変数の値が1ずつ加算されます。だいたいそうです。バグがあるかもしれないところ - ポジションがまだ閉じられていない場合、その閉鎖時間はゼロに等しくなります。そのため、カウントダウンを開始する際に不具合が発生することがあります。例えば、変数を-1にリセットすることができます。はい、OnDeinit()でタイマーを破壊することを忘れないでください。 了解です、ありがとうございます。一行でできると思っていたのですが、おそらくもうちょっと頑張らないといけないでしょうね。 Artyom Trishkin 2015.02.09 17:58 #8460 abeiks:なるほど、ありがとうございます。一行でできると思っていたのですが、もっと手間がかかるんでしょうね。 1...839840841842843844845846847848849850851852853...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
関数の後にGetLastErrorがありますが、エラーが発生した場合、このブロックに移動して(書いてある通り)コマンドは実行されないのでしょうか?OrderSend() -> GetLastError -> エラーブロック Sleep(3000) RefreshRates() -> ブロックを終了し、条件が残っていれば OrderSend() を再度要求する、といったチェーンは理解できましたが。あるいは、私の推理や概念が間違っているのか。ブロック内に戻り値1か0を書きたいとのことですが、私の関数はSignalBuyのようなブーリアン値とは関係ない単純なもので、私の理解が正しければ、戻り値はそこで返すべきものだと思うのですが。
関数の後にGetLastErrorがありますが、エラーが発生した場合、このブロックに移動して(書いてある通り)コマンドは実行されないのでしょうか?OrderSend() -> GetLastError -> エラーブロック Sleep(3000) RefreshRates() -> ブロックを終了し、条件が残っていれば OrderSend() を再度要求する、といったチェーンは理解できましたが。あるいは、私の推理や概念が間違っているのか。ブロック内に戻り値1か0を書きたいとのことですが、私の関数はSignalBuyのようなブーリアン値とは関係ない単純なもので、私の理解が正しければ、戻り値はそこで返すべきものだと思うのですが。
アドバイスをお願いします。条件に従って、ポジションをクローズし、121秒後に新しいポジションをオープンする必要があります。Sleep(121000)でどうすればいいのでしょうか?
ごきげんよう。
アドバイスをお願いします。条件に従って、ポジションをクローズし、121秒後に新しいポジションをオープンする必要があります。Sleep(121000)でどうすればいいのでしょうか?
OnTimer()による救済
Windows 7を再インストールし、Mt4をインストールしようとしたところ、ファイルがダウンロードできないのですが、どうしたらいいでしょうか?
ありがとうございます。OnTimer()を使ったことがありません。 この部分のコードはvoid OnTick()にあります。 では、OpenPosition()関数はOnTimer()で処理されるのでしょうか?もし可能なら、そこにOnTimer()を正しく挿入する方法をコードで修正してください...。
OnInit()でタイマーをスタートさせる。
カウントダウンを開始するには、タイマーの最後の位置の終了時刻を求め、この時刻から121回スクンデッドカウントする必要があります。新しいポジションをオープンするフラグを渡すには、プログラム全体をスコープとするグローバル変 数を使用します。初期状態で121より大きい値、例えば122を含むようにすることができます(設定で待ち時間を変更できます)。
OnTick()で、この変数を確認します。121より大きく、ポジションがない場合は、ポジションをオープンし、正常にオープンできたかどうかを確認した後、変数を0にリセットします。
ポジションが閉じられると同時に、タイマーはその時刻を確認し(これは1秒に1回連続して行われます)、現在時刻からポジションの閉鎖時刻までが121秒未満であれば、タイマーはカウントを開始し、毎秒、変数の値が1ずつ加算されます。
だいたいそうです。バグがあるかもしれないところ - ポジションがまだ閉じられていない場合、その閉鎖時間はゼロに等しくなります。そのため、カウントダウンを開始する際に不具合が発生することがあります。例えば、変数を-1にリセットすることができます。
はい、OnDeinit()でタイマーを破壊することを忘れないでください。
OnInit()でタイマーをスタートさせる。
カウントダウンを開始するには、最後にポジションを閉じた時刻をタイマーで求め、その時刻から121秒をカウントする必要があります。新しいポジションを開くことを許可するフラグを渡すには、プログラム全体で拡張可能なグローバル変数を使用します。初期値として121より大きい値、例えば122を含ませることができます(設定で待ち時間を変更できます)。
OnTick()では、この変数をチェックします。121より大きく、ポジションがない場合は、ポジションをオープンし、オープンが成功したかどうかを確認した後、変数をゼロにリセットします。
ポジションが閉じられると同時に、タイマーはその時刻を確認し(これは1秒に1回連続して行われます)、現在時刻からポジションの閉鎖時刻までが121秒未満であれば、タイマーはカウントを開始し、毎秒、変数の値が1ずつ加算されます。
だいたいそうです。バグがあるかもしれないところ - ポジションがまだ閉じられていない場合、その閉鎖時間はゼロに等しくなります。そのため、カウントダウンを開始する際に不具合が発生することがあります。例えば、変数を-1にリセットすることができます。
はい、OnDeinit()でタイマーを破壊することを忘れないでください。
了解です、ありがとうございます。一行でできると思っていたのですが、おそらくもうちょっと頑張らないといけないでしょうね。
なるほど、ありがとうございます。一行でできると思っていたのですが、もっと手間がかかるんでしょうね。