MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1718 1...171117121713171417151716171717181719172017211722172317241725...1953 新しいコメント Snajper007 2021.11.04 08:52 #17171 // Функция модификации ордеров Sell при локировании void Modif_Count_Lok_Sell() { double Price; for(int pos=0; pos < OrdersTotal(); pos++) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()== Symbol()) { if(OrderType() == OP_SELL) { if(OrderTakeProfit() > 0) { if(CountBuy1() > 0) // функция для пересчёта ордеров Buy { Price = OrderOpenPrice(); double TP3 = NormalizeDouble( 0*Point, Digits); if(OrderTakeProfit() > TP3) { if(!OrderModify( OrderTicket(), OrderOpenPrice(), 0, TP3, 0, 0)) Print("Ошибка модификации ордера на продажу"); } } } } } } } } 理解を助ける。この関数のポイントは、未決済の売り注文と 未決済の買い注文がある場合、売り注文のTPを修正することです。しかし、修正は最初の1回だけ行われ、その後、OrderModify ERROR 1というエラーが発生します。 Tretyakov Rostyslav 2021.11.04 09:09 #17172 Snajper007 売り注文と 未決済の買い注文がある場合、売り注文のTPを修正することです。しかし、修正が発生するのは最初の1オーダーだけで、その後はOrderModify ERROR 1というエラーが出ます。 この場合、TakeProfitは単に削除されます。 ERROR 1 -ERR_NO_RESULT エラーはないが、結果は不明。 Snajper007 2021.11.04 09:12 #17173 MakarFX #:この場合、TakeProfitは単に削除されます。ERROR 1 -ERR_NO_RESULT エラーはないが、結果は不明。 なぜ、2つの命令のうち、一方では削除され、他方では削除されないのですか? Tretyakov Rostyslav 2021.11.04 09:18 #17174 Snajper007 #: なぜ、2つの命令のうち、一方では削除され、もう一方では削除されないのでしょうか? OrderTakeProfit() >0 の場合のみ削除されます。 あげそうば Snajper007 2021.11.04 09:28 #17175 MakarFX #:OrderTakeProfit() >0 の場合のみ削除されます。あげそうば コードを作り直した。// Функция модификации ордеров Sell при локировании void Modif_Count_Lok_Sell() { double Price; for(int pos=0; pos < OrdersTotal(); pos++) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()== Symbol()) { if(OrderType() == OP_SELL) { if(CountBuy1() > 0) // функция для пересчёта ордеров Buy { Price = OrderOpenPrice(); double TP3 = NormalizeDouble( 0*Point, Digits); if(!OrderModify( OrderTicket(), OrderOpenPrice(), 0, TP3, 0, 0)) Print("Ошибка модификации ордера на продажу"); } } } } } } 同じことです。平均的なTPを持つ売り注文が2つあります。この両建てで買い注文を出すと,TPが削除されるはずです。しかし、削除されるのは1次だけで、2次は平均化されたTPのままです。 Nikolay Ivanov 2021.11.04 09:48 #17176 MakarFX #:OrderTakeProfit() >0 の場合のみ削除されます。あげそうば OrderTakeProfit()>0 の場合、取引がプラスになって いるわけではないのですが...。ただ、そのポジションがTakeProfitを持っていることを意味し... Nikolay Ivanov 2021.11.04 09:50 #17177 Snajper007 #: コードを作り直した。 同じことです。平均的なTPを持つ売り注文が2つあります。この両建てで買い注文を出すと,TPが削除されるはずです。しかし、削除されるのは1次だけで、2次は平均化されたTPのままです。 ごっちゃになってるだけだろ。 まず、注文をハイライト表示します。 if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) しかし、その後、関数を呼び出すと CountBuy1() ということは、おそらくセレクションも変わってくるのでしょう...。それがメチャクチャなんです。フライとカツを切り離せば、すべてがうまくいく...。 Snajper007 2021.11.04 10:07 #17178 Nikolay Ivanov #:ごっちゃになってるだけだろ...。まず、注文をハイライト表示します。しかし、その後、関数を呼び出すと ということは、おそらくセレクションも変わってくるのでしょう...。そして、ごちゃごちゃになる...。フライとカツを切り離せば、すべてがうまくいく...。 ありがとうございました。機能を削除したら、正常に動作するようになりました。 Tretyakov Rostyslav 2021.11.04 10:13 #17179 Nikolay Ivanov #:OrderTakeProfit()>0 ならば、そのトレードが黒字 であることを意味しない...。ただ、そのポジションがTakeProfitを持っていることを意味し... 確かに、OrderProfit()と混同していましたね。 Snajper007 2021.11.04 10:54 #17180 もうひとつ、疑問が湧いてきました。ここでは、平均価格計算機能を紹介します。//Средний тейкпрофит для ордеров Sell double SR_CENA_SELL() { double sr_cena_sell = 0; if(CountSell() > 1) { double lot_price_Sell = 0; double sum_lot_Sell_1 = 0; for (int pos=0; pos < OrdersTotal(); pos++) if( OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber() == MN || OrderMagicNumber() == 0) { if(OrderSymbol() == Symbol() && OrderType() == OP_SELL) { lot_price_Sell += NormalizeDouble(OrderOpenPrice()* OrderLots(), Digits); sum_lot_Sell_1 += OrderLots(); sr_cena_sell = NormalizeDouble(lot_price_Sell/sum_lot_Sell_1, Digits); } } } } return(sr_cena_sell); } なぜか毎回再計算される。すなわち、2回目の売り注文が 出されたとき、この関数は平均価格を計算します。しかし、3つ目の注文を開くと、この機能は前の値と新しい値を表示しますが(印刷ジャーナルで確認しました)、結果的に前の値のままになってしまいます。私は何か悪いことをしたのだろうか? 1...171117121713171417151716171717181719172017211722172317241725...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
理解を助ける。この関数のポイントは、未決済の売り注文と 未決済の買い注文がある場合、売り注文のTPを修正することです。しかし、修正は最初の1回だけ行われ、その後、OrderModify ERROR 1というエラーが発生します。
この場合、TakeProfitは単に削除されます。
ERROR 1 -ERR_NO_RESULT エラーはないが、結果は不明。
この場合、TakeProfitは単に削除されます。
ERROR 1 -ERR_NO_RESULT エラーはないが、結果は不明。
なぜ、2つの命令のうち、一方では削除され、もう一方では削除されないのでしょうか?
OrderTakeProfit() >0 の場合のみ削除されます。
あげそうば
OrderTakeProfit() >0 の場合のみ削除されます。
あげそうば
コードを作り直した。
同じことです。平均的なTPを持つ売り注文が2つあります。この両建てで買い注文を出すと,TPが削除されるはずです。しかし、削除されるのは1次だけで、2次は平均化されたTPのままです。OrderTakeProfit() >0 の場合のみ削除されます。
あげそうば
OrderTakeProfit()>0 の場合、取引がプラスになって いるわけではないのですが...。ただ、そのポジションがTakeProfitを持っていることを意味し...
コードを作り直した。
同じことです。平均的なTPを持つ売り注文が2つあります。この両建てで買い注文を出すと,TPが削除されるはずです。しかし、削除されるのは1次だけで、2次は平均化されたTPのままです。ごっちゃになってるだけだろ。
まず、注文をハイライト表示します。
しかし、その後、関数を呼び出すと
ということは、おそらくセレクションも変わってくるのでしょう...。それがメチャクチャなんです。フライとカツを切り離せば、すべてがうまくいく...。
ごっちゃになってるだけだろ...。
まず、注文をハイライト表示します。
しかし、その後、関数を呼び出すと
ということは、おそらくセレクションも変わってくるのでしょう...。そして、ごちゃごちゃになる...。フライとカツを切り離せば、すべてがうまくいく...。
OrderTakeProfit()>0 ならば、そのトレードが黒字 であることを意味しない...。ただ、そのポジションがTakeProfitを持っていることを意味し...
もうひとつ、疑問が湧いてきました。ここでは、平均価格計算機能を紹介します。
なぜか毎回再計算される。すなわち、2回目の売り注文が 出されたとき、この関数は平均価格を計算します。しかし、3つ目の注文を開くと、この機能は前の値と新しい値を表示しますが(印刷ジャーナルで確認しました)、結果的に前の値のままになってしまいます。私は何か悪いことをしたのだろうか?