利益目標で、利益が出ている取引のみを決済する。 - ページ 3 1234 新しいコメント Keith Watford 2013.07.29 22:22 #21 af1: Hi GumRai, thanks for your time. I've already tried with your changes, but orders keep closing at 1. In other words, profitable orders are not waiting to reach 25. 以前、デブリーズとラプターから提供されたコードの行を使っても? if(CloseAllNow) CloseAll(); if(CloseProfitableTradesOnly && ProfitTarget == 0.0) CloseAllinProfit(); if(BuyProfit+SellProfit >= ProfitTarget && !CloseProfitableTradesOnly) CloseAll(); if(CloseProfitableTradesOnly && BuyProfit+SellProfit >= ProfitTarget) CloseAllinProfit(); if(ClosePendingOnly) ClosePendingOrdersOnly(); 願わくば、この行を変更しないで、検討していたのですね if(CloseProfitableTradesOnly && ProfitTarget == 0.0) CloseAllinProfit(); もし、25.00に変更したのであれば、1ドル以上の利益のある取引はすべて終了しているはずです。 af1 2013.07.30 03:03 #22 GumRai: 以前、デブリーズとラプターから提供されたコードの行を使っても? 願わくば、この行を変更せず、検討していたのですね もし、25.00に変更したのであれば、1ドル以上の利益のある取引はすべて終了しているはずです。 すべての提案を試しましたが、まだ正しく閉じません。 Keith Watford 2013.07.30 04:42 #23 af1: すべての提案を試しましたが、まだ正しく閉じません。 現在使用している完全なコードを表示することができます。 af1 2013.07.30 07:05 #24 GumRai: 現在使用しているコード一式を表示することができるかもしれません。 //|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ //| Close //| Last Updated 12-12-2006 10:00pm //|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ #define NL "\n" extern int ProfitTarget = 25; // closes all orders once Float hits this $ amount extern bool CloseAllNow = false; // closes all orders now extern bool CloseProfitableTradesOnly = true; // closes only profitable trades extern double ProftableTradeAmount = 1; // Only trades above this amount close out extern bool ClosePendingOnly = false; // closes pending orders only extern bool UseAlerts = false; //+-------------+ //| Custom init | //|-------------+ int init() { } //+----------------+ //| Custom DE-init | //+----------------+ int deinit() { } //+------------------------------------------------------------------------+ //| Closes everything //+------------------------------------------------------------------------+ void CloseAll() { int i; bool result = false; while(OrdersTotal()>0) { // Close open positions first to lock in profit/loss for(i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i, SELECT_BY_POS)==false) continue; result = false; if ( OrderType() == OP_BUY) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 15, Red ); if ( OrderType() == OP_SELL) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 15, Red ); if (UseAlerts) PlaySound("alert.wav"); } for(i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i, SELECT_BY_POS)==false) continue; result = false; if ( OrderType()== OP_BUYSTOP) result = OrderDelete( OrderTicket() ); if ( OrderType()== OP_SELLSTOP) result = OrderDelete( OrderTicket() ); if ( OrderType()== OP_BUYLIMIT) result = OrderDelete( OrderTicket() ); if ( OrderType()== OP_SELLLIMIT) result = OrderDelete( OrderTicket() ); if (UseAlerts) PlaySound("alert.wav"); } Sleep(1000); } } //+------------------------------------------------------------------------+ //| cancels all orders that are in profit //+------------------------------------------------------------------------+ void CloseAllinProfit() { for(int i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); bool result = false; if ( OrderType() == OP_BUY && OrderProfit()+OrderSwap()>ProftableTradeAmount) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); if ( OrderType() == OP_SELL && OrderProfit()+OrderSwap()>ProftableTradeAmount) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red ); if (UseAlerts) PlaySound("alert.wav"); } return; } //+------------------------------------------------------------------------+ //| cancels all pending orders //+------------------------------------------------------------------------+ void ClosePendingOrdersOnly() { for(int i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); bool result = false; if ( OrderType()== OP_BUYSTOP) result = OrderDelete( OrderTicket() ); if ( OrderType()== OP_SELLSTOP) result = OrderDelete( OrderTicket() ); } return; } //+-----------+ //| Main | //+-----------+ int start() { int OrdersBUY; int OrdersSELL; double BuyLots, SellLots, BuyProfit, SellProfit; //+------------------------------------------------------------------+ // Determine last order price | //-------------------------------------------------------------------+ for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderType()==OP_BUY) { OrdersBUY++; BuyLots += OrderLots(); BuyProfit += OrderProfit() + OrderCommission() + OrderSwap(); } if(OrderType()==OP_SELL) { OrdersSELL++; SellLots += OrderLots(); SellProfit += OrderProfit() + OrderCommission() + OrderSwap(); } } if(CloseAllNow) CloseAll(); if(CloseProfitableTradesOnly && ProfitTarget == 0.0) CloseAllinProfit(); if(BuyProfit+SellProfit >= ProfitTarget && !CloseProfitableTradesOnly) CloseAll(); if(CloseProfitableTradesOnly && BuyProfit+SellProfit >= ProfitTarget) CloseAllinProfit(); if(ClosePendingOnly) ClosePendingOrdersOnly(); Comment(" Comments Last Update 12-12-2006 10:00pm", NL, " Buys ", OrdersBUY, NL, " BuyLots ", BuyLots, NL, " Sells ", OrdersSELL, NL, " SellLots ", SellLots, NL, " Balance ", AccountBalance(), NL, " Equity ", AccountEquity(), NL, " Margin ", AccountMargin(), NL, " MarginPercent ", MathRound((AccountEquity()/AccountMargin())*100), NL, " Current Time is ",TimeHour(CurTime()),":",TimeMinute(CurTime()),".",TimeSeconds(CurTime())); } // start() Keith Watford 2013.07.30 09:17 #25 私の投稿を参照してください。 https://forum.mql4.com/56959/page2#822980 利益が出ている取引だけを集計しているわけではありません。純損益を計算している af1 2013.07.31 17:14 #26 GumRai: 私の投稿を参照してください。 https://forum.mql4.com/56959/page2#822980 あなたは、収益性の高い取引のみを加算しているわけではありません。あなたは、純利益または損失を計算している GumRaiさん、Raptorさんとあなたに提案されたコードの変更を行いました。 https://www.mql5.com/en/forum/146091 https://www.mql5.com/en/forum/146091/page2#822980 そして今、それは正しく閉じているようです。ありがとうございます。 もうひとつだけ。もし、利益が出ている取引を全て計算するのではなく、利益が出ている買い取引のみ、または利益が出ている売り取引のみを計算したい場合、何を変更すればいいのでしょうか? この変更で、買いだけ計算するようにしようと思っているのですが、どうなんでしょう。これで良いのでしょうか? これより if(OrderType()==OP_SELL) { OrdersSELL++; SellLots += OrderLots(); ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap(); if(ThisTradeProfit>0) BuyProfit += ThisTradeProfit; } をこれに変更します。 //if(OrderType()==OP_SELL) { //OrdersSELL++; //SellLots += OrderLots(); //ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap(); //if(ThisTradeProfit>0) //BuyProfit += ThisTradeProfit; } Keith Watford 2013.07.31 19:23 #27 入力パラメータに 2つのextern boolを追加して、「BuyTradesOnly」と「SellTradesOnly」の ような名前で、両方とも初期値をfalseに 設定することができると思うのですが。 ではif(OrderType()==OP_SELL && BuyTradesOnly == false) { OrdersSELL++; SellLots += OrderLots(); ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap(); if(ThisTradeProfit>0) BuyProfit += ThisTradeProfit; } af1 2013.08.01 05:36 #28 GumRai: 入力パラメータに2つのextern boolを追加して、「BuyTradesOnly」と「SellTradesOnly」の ような名前で、両方とも初期値をfalseに 設定することができると思うのです。 その後 私は2 extern boolを追加しませんでした、私はちょうど "買い注文のみ "を閉じるためにこれを変更します。 for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderType()==OP_BUY) { OrdersBUY++; BuyLots += OrderLots(); double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap(); if(ThisTradeProfit>0) BuyProfit += ThisTradeProfit; } そして、これを "売り注文のみ "を閉じるように変更します。 for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderType()==OP_SELL) { OrdersSELL++; SellLots += OrderLots(); double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap(); if(ThisTradeProfit>0) BuyProfit += ThisTradeProfit; } だから今、私は2つのEAを持っています。一つは買いのクローズ、もう一つは売りのクローズです。それは私にとってはOKです。 私はデモとリアルの両方のアカウントでテストしました。デモでは問題なく動作していますが、リアル口座では、利益目標に達するとポジションを閉じ始めますが、残りの注文が利益目標より下がるとポジションを閉じるのを止めます。これは、クローズの瞬間に価格が変化している場合に起こります。そのため、利益が出ている注文をすべて決済するのではなく、未決済のままにしておく傾向があります(利益が出ている注文)。 私はRaptorUKhttps://www.mql5.com/en/forum/139654 からこのポストを読んだ。それはそのようなものですが、私は本当にこの問題のための最善の解決策である可能性がわからない。 Simon Gniadkowski 2013.08.01 05:56 #29 af1: RaptorUKのこの投稿を読みましたhttps://www.mql5.com/en/forum/139654.それはそのようなものですが、私は本当にこの問題のための最良の解決策になる可能性があるのか分からない。 解決策はスレッドで与えられている . ... それが私がそれを作成した理由である。 ループのカウントダウンが上がらない。 af1 2013.08.01 06:04 #30 RaptorUK: 解決策は、スレッドに記載されています ... ... それが私がそれを作成した理由です。 ループの中でカウントダウンするのではなく、アップする。 OK Raptor、私はそのループを作るために試してみますが、その前に、私はちょうど変更する場合はどうなりますか? これより。 } Sleep(1000); } これを } Sleep(5000); RefreshRates(); continue; } これならできるかな? 1234 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Hi GumRai, thanks for your time. I've already tried with your changes, but orders keep closing at 1. In other words, profitable orders are not waiting to reach 25.
以前、デブリーズとラプターから提供されたコードの行を使っても?
願わくば、この行を変更しないで、検討していたのですね
もし、25.00に変更したのであれば、1ドル以上の利益のある取引はすべて終了しているはずです。
以前、デブリーズとラプターから提供されたコードの行を使っても?
願わくば、この行を変更せず、検討していたのですね
もし、25.00に変更したのであれば、1ドル以上の利益のある取引はすべて終了しているはずです。
すべての提案を試しましたが、まだ正しく閉じません。
すべての提案を試しましたが、まだ正しく閉じません。
現在使用している完全なコードを表示することができます。
現在使用しているコード一式を表示することができるかもしれません。
私の投稿を参照してください。
https://forum.mql4.com/56959/page2#822980
利益が出ている取引だけを集計しているわけではありません。純損益を計算している
私の投稿を参照してください。
https://forum.mql4.com/56959/page2#822980
あなたは、収益性の高い取引のみを加算しているわけではありません。あなたは、純利益または損失を計算している
GumRaiさん、Raptorさんとあなたに提案されたコードの変更を行いました。
https://www.mql5.com/en/forum/146091
https://www.mql5.com/en/forum/146091/page2#822980
そして今、それは正しく閉じているようです。ありがとうございます。
もうひとつだけ。もし、利益が出ている取引を全て計算するのではなく、利益が出ている買い取引のみ、または利益が出ている売り取引のみを計算したい場合、何を変更すればいいのでしょうか?
この変更で、買いだけ計算するようにしようと思っているのですが、どうなんでしょう。これで良いのでしょうか?
これより
をこれに変更します。
入力パラメータに 2つのextern boolを追加して、「BuyTradesOnly」と「SellTradesOnly」の ような名前で、両方とも初期値をfalseに 設定することができると思うのですが。
では
入力パラメータに2つのextern boolを追加して、「BuyTradesOnly」と「SellTradesOnly」の ような名前で、両方とも初期値をfalseに 設定することができると思うのです。
その後
私は2 extern boolを追加しませんでした、私はちょうど "買い注文のみ "を閉じるためにこれを変更します。
そして、これを "売り注文のみ "を閉じるように変更します。
だから今、私は2つのEAを持っています。一つは買いのクローズ、もう一つは売りのクローズです。それは私にとってはOKです。
私はデモとリアルの両方のアカウントでテストしました。デモでは問題なく動作していますが、リアル口座では、利益目標に達するとポジションを閉じ始めますが、残りの注文が利益目標より下がるとポジションを閉じるのを止めます。これは、クローズの瞬間に価格が変化している場合に起こります。そのため、利益が出ている注文をすべて決済するのではなく、未決済のままにしておく傾向があります(利益が出ている注文)。
私はRaptorUKhttps://www.mql5.com/en/forum/139654 からこのポストを読んだ。それはそのようなものですが、私は本当にこの問題のための最善の解決策である可能性がわからない。
RaptorUKのこの投稿を読みましたhttps://www.mql5.com/en/forum/139654.それはそのようなものですが、私は本当にこの問題のための最良の解決策になる可能性があるのか分からない。
解決策は、スレッドに記載されています ... ... それが私がそれを作成した理由です。 ループの中でカウントダウンするのではなく、アップする。
OK Raptor、私はそのループを作るために試してみますが、その前に、私はちょうど変更する場合はどうなりますか?
これより。
これを
これならできるかな?