ロング、ショートそれぞれの合計ピプスで決済したい

MetaTrader 4
ニックネーム未設定
2021/02/27 22:36
596

ロング、ショートそれぞれで合計ピプスに達した時決済したいのですが、下記コードでは思ったようにいきません。
どこを手直ししたらいいでしょうか?
何卒ご教示願います。

double Total_Profit0;
double Total_Profit1;
for( i=OrdersTotal()-1;i>=0;i–)

 {
	 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
	 {
		 if(OrderMagicNumber()==MAGIC && OrderSymbol()==Symbol())
		 {
			 double Or;
			 if (OrderType()==OP_BUY)
			 {

			   Or=OrderLots();
			   Total_Profit0=(Bid-OrderOpenPrice())*(Or/BaseLots);
			 }
			 if (OrderType()==OP_SELL)
			 {
			   Or=OrderLots();
			   Total_Profit1=(OrderOpenPrice()-Ask)*(Or/BaseLots);
			 }
		 }
	 }
	 
 }
 
 if(Total_Profit0>takeprofit*AdjustPoint(Symbol()) )   
 {
	 CloseOrder(1);
	 CancelOrder(1);
 }
 if(Total_Profit1>takeprofit*AdjustPoint(Symbol()) )   
 { 
	 CloseOrder(-1);
	 CancelOrder(-1); 
 } 

コメント

GogoJungle
2021/03/04 11:01

損益を取得する処理が原因の可能性がございます。

EAつくーるWeb版で出力される損益取得関数のコードをご紹介いたします。
下記は引数で指定したマジックナンバーについて、現在保有ポジションの損益合計を取得する関数でございます。

double getOrderProfit(int magic)
{
   double profit = 0;

   for(int i = OrdersTotal() - 1; i >= 0; i--) {
      if(OrderSelect(i, SELECT_BY_POS) == false) continue;
      if(OrderSymbol() != Symbol() || OrderMagicNumber() != magic) continue;

      if(OrderType() == OP_BUY || OrderType() == OP_SELL) {
         profit += OrderProfit();
      }
   }

   return(profit);
}

買い OrderType() == OP_BUY 、売り OrderType() == OP_SELL の保有ポジションを対象にしておりますので
買いのみを対象とする場合は、下記のように売りの条件を削除して、ご利用いただければ幸いでございます。

double getBuyOrderProfit(int magic)
{
   double profit = 0;

   for(int i = OrdersTotal() - 1; i >= 0; i--) {
      if(OrderSelect(i, SELECT_BY_POS) == false) continue;
      if(OrderSymbol() != Symbol() || OrderMagicNumber() != magic) continue;

      if(OrderType() == OP_BUY) {
         profit += OrderProfit();
      }
   }

   return(profit);
}

関連トピックス

検索結果がありません。

ノーコードで誰でも簡単EA開発!MQL言語学習にも使える! | GogoJungle

注目トピックス

検索結果がありません。