[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 484 1...477478479480481482483484485486487488489490491...537 新しいコメント Денис 2011.07.03 14:35 #4831 不正なパラメータが取引機能に送信されました。例:不正なシンボル、未確認の取引、負の価格許容範囲、存在しないチケット番号など。 プログラムのロジックを変更する必要があります。 第2パラメータにOrderOpenPrice()をゼロの代わりに入れてみてください。 Anatoli Kazharski 2011.07.03 15:08 #4832 sergeev: エラーに関連する可能性のあるパラメータを印刷する習慣をつける。 if(!OrderModify(...)) { Print(GetlastError()+....OrderModify パラメータリスト ); }. そう、良い習慣なんです。ありがとうございました)) FOReignEXchange 2011.07.03 18:35 OrderOpenPrice()をゼロの代わりに第2パラメータにしてみる。 はい、その通りです。))そして、修正する必要のないパラメータを設定すると、別のエラーになるので、なぜか納得してしまいました。似たようなものがあるのでしょうか? このようなものが、私の中で固定化されています。 この関数は、パラメータを同じ値に変更しようとします。 Денис 2011.07.03 15:10 #4833 tol64: そして、なぜか「修正したくないパラメータを設定すると、別のエラーになる」と思い込んでいたのです。似たようなものがあるのでしょうか? このようなものが頭の中で固定されています。 この関数は、パラメータを同じ値に変更しようとします。 パラメータを1つだけ変えて、あとは変更せずにOrderOpenPrice()、OrdsrStopLoss()などとあちこちに書いておけばいいのでは? prom18 2011.07.03 18:11 #4834 こんにちは!どなたか、ある価格帯からあるステップでトロールする例をお持ちの方はいらっしゃいませんか?ありがとうございました。 Anatoli Kazharski 2011.07.03 18:13 #4835 ここでもうひとつ質問です。上にあげたコードの例で(tol64 2011.07.03 18:20)。 プログラムは、異なるポジションのストップロスを 常に同期させるわけではありません。つまり、ポジションが選択され、条件が満たされ、ジャーナルにも記録されるが、ストップロスは修正されない。 上の図では、チケット4のポジションのストップロスは、チケット1のポジションと同じ値に修正され、設定されるべきです。プログラムはprintでここまで到達しますが、それ以降の実行はブロックされているようです。 for(count = 0; count < OrdersTotal(); count++) { if(OrderSelect(count,SELECT_BY_POS,MODE_TRADES)) Print("Ticket: ",OrderTicket(),", Type: ",OrderType(),", Magic: ",OrderMagicNumber(),", StopLoss: ",OrderStopLoss()); double Op_Price = NormalizeDouble(OrderOpenPrice(),Digits); double Stp_Loss = NormalizeDouble(OrderStopLoss(),Digits); if(OrderMagicNumber() == Magic_SP01) { if(OrderType() == OP_SELLSTOP) { if(Low_1 < SP_Level_01 && new_val > Op_Price && new_val < Open_0) { OrderModify(OrderTicket(),new_val,OrderStopLoss(),0,0,DeepPink); } if(!(global_trailing_SP < Stp_Loss && global_trailing_SP > High_1)) Print("Условие не выполняется!"); else { OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP,0,0,DeepPink); Print("Условие ModifyOrder исполнилось: global_trailing_SP: ",global_trailing_SP,", Stop Loss: ",OrderStopLoss()); } } if(OrderType() == OP_SELL) { if(global_trailing_SP < Stp_Loss && global_trailing_SP > High_1) { OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP,0,0,DeepPink); } } } ... なぜなら、その条件が満たされないバリアントもログに残らないからです。いろいろな組み合わせを試したが、どれもうまくいかなかった。よろしくお願いします。 Денис 2011.07.03 18:23 #4836 そして、ここにも。 if(OrderSelect(count,SELECT_BY_POS,MODE_TRADES)) ということではありませんか? if(OrderSelect(count,SELECT_BY_POS,MODE_TRADES)=true) --- 2011.07.03 18:24 #4837 FOReignEXchange: そして、ここにも。 ということではありませんか? いいえ、そうではありません。とにかく、boolを返します。 Andrey F. Zelinsky 2011.07.03 18:31 #4838 tol64:ここでもうひとつ質問です。上にあげたコードの例で(tol64 2011.07.03 18:20)。 プログラムは、異なるポジションのストップロスを常に同期させるわけではありません。つまり、ポジションが選択され、条件が満たされ、ジャーナルにも記録されるが、ストップロスは修正されない。 上の図では、チケット4のポジションのストップロスは、チケット1のポジションと同じ値に修正され、設定されるべきです。プログラムはprintでここまで到達しますが、それ以降の実行はブロックされているようです。なぜなら、その条件が満たされないバリアントもログに残らないからです。いろいろな組み合わせを試したが、どれもうまくいかなかった。あなたの力を貸してください。 Print() で変数global_trailing_SPの値を直接提供した関数で出力します。 この変数の値はどこから読み取るのですか? そして、コード内のゼロ(ハイライト)を置き換える OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP,0,0,DeepPink) オーダーテイクプロフィット(OrderTakeProfit)へ Andrey F. Zelinsky 2011.07.03 18:34 #4839 FOReignEXchange: では、条件がないとすれば、この条件は何のためにあるのでしょうか?そして、注文データはその後使われない。 では、どのコードが良いのか教えてください if(OrderSelect(count,SELECT_BY_POS,MODE_TRADES)) と書く。 if(!OrderSelect(count,SELECT_BY_POS,MODE_TRADES)) continue; Денис 2011.07.03 18:48 #4840 abolk: そして、より良いコードを教えてください。と書く。 よくわからないんだけど?ヘルプを見ていると、そこではOrderSelect() はconditionを使っていますね。トゥルーがないところは見たことがない。 ifは条件演算子です。そして、括弧の中に条件があるはずです。こっちの方が論理的だと思うんだけどな。差はないかもしれませんが。 1...477478479480481482483484485486487488489490491...537 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
不正なパラメータが取引機能に送信されました。例:不正なシンボル、未確認の取引、負の価格許容範囲、存在しないチケット番号など。 プログラムのロジックを変更する必要があります。
第2パラメータにOrderOpenPrice()をゼロの代わりに入れてみてください。
エラーに関連する可能性のあるパラメータを印刷する習慣をつける。
if(!OrderModify(...)) { Print(GetlastError()+....OrderModify パラメータリスト ); }.
そう、良い習慣なんです。ありがとうございました))
FOReignEXchange 2011.07.03 18:35
OrderOpenPrice()をゼロの代わりに第2パラメータにしてみる。
はい、その通りです。))そして、修正する必要のないパラメータを設定すると、別のエラーになるので、なぜか納得してしまいました。似たようなものがあるのでしょうか?
このようなものが、私の中で固定化されています。
この関数は、パラメータを同じ値に変更しようとします。
そして、なぜか「修正したくないパラメータを設定すると、別のエラーになる」と思い込んでいたのです。似たようなものがあるのでしょうか?
このようなものが頭の中で固定されています。
この関数は、パラメータを同じ値に変更しようとします。
パラメータを1つだけ変えて、あとは変更せずにOrderOpenPrice()、OrdsrStopLoss()などとあちこちに書いておけばいいのでは?
ここでもうひとつ質問です。上にあげたコードの例で(tol64 2011.07.03 18:20)。
プログラムは、異なるポジションのストップロスを 常に同期させるわけではありません。つまり、ポジションが選択され、条件が満たされ、ジャーナルにも記録されるが、ストップロスは修正されない。
上の図では、チケット4のポジションのストップロスは、チケット1のポジションと同じ値に修正され、設定されるべきです。プログラムはprintでここまで到達しますが、それ以降の実行はブロックされているようです。
なぜなら、その条件が満たされないバリアントもログに残らないからです。いろいろな組み合わせを試したが、どれもうまくいかなかった。よろしくお願いします。
そして、ここにも。
ということではありませんか?
そして、ここにも。
ということではありませんか?
いいえ、そうではありません。とにかく、boolを返します。
ここでもうひとつ質問です。上にあげたコードの例で(tol64 2011.07.03 18:20)。
プログラムは、異なるポジションのストップロスを常に同期させるわけではありません。つまり、ポジションが選択され、条件が満たされ、ジャーナルにも記録されるが、ストップロスは修正されない。
上の図では、チケット4のポジションのストップロスは、チケット1のポジションと同じ値に修正され、設定されるべきです。プログラムはprintでここまで到達しますが、それ以降の実行はブロックされているようです。
なぜなら、その条件が満たされないバリアントもログに残らないからです。いろいろな組み合わせを試したが、どれもうまくいかなかった。あなたの力を貸してください。
Print() で変数global_trailing_SPの値を直接提供した関数で出力します。
この変数の値はどこから読み取るのですか?
そして、コード内のゼロ(ハイライト)を置き換える
オーダーテイクプロフィット(OrderTakeProfit)へ
では、条件がないとすれば、この条件は何のためにあるのでしょうか?そして、注文データはその後使われない。
では、どのコードが良いのか教えてください
と書く。
そして、より良いコードを教えてください。
と書く。
よくわからないんだけど?ヘルプを見ていると、そこではOrderSelect() はconditionを使っていますね。トゥルーがないところは見たことがない。
ifは条件演算子です。そして、括弧の中に条件があるはずです。こっちの方が論理的だと思うんだけどな。差はないかもしれませんが。