同时开三个仓,但只执行一或二个

 

各位师兄,求解。以下是编程,请问什么原因不能同时开三个仓位,只执行一或二个。谢谢!

 if (Close[1]>Close[2]  )
              
              {             

               BSL=NormalizeDouble(Ask-StopLoss,Digits);
               BTP=NormalizeDouble(Ask+StopProfit,Digits);
               SSL=NormalizeDouble(Bid+StopLoss,Digits);

               STP=NormalizeDouble(Bid-StopProfit,Digits);

               OrderSend(Symbol(),OP_BUY,Lots,Ask,15,BSL,BTP,"My order",Magic,0,clrBlue);
               OrderSend(Symbol(),OP_SELL,Lots,Bid,15,SSL,STP,"My order",Magic,0,clrRed);
               OrderSend(Symbol(),OP_BUY,Lots,Ask,15,BSL,BTP,"My order",Magic,0,clrBlue);

               }

 
你这里有两条程序是重复的,稍作修改应该可以
 
xjqp:
你这里有两条程序是重复的,稍作修改应该可以

1.你的意思是不能重复开仓指令吗?

2.我也曾修改成:

  OrderSend(Symbol(),OP_BUY,2*Lots,Ask,15,BSL,BTP,"My order",Magic,0,clrBlue);

  OrderSend(Symbol(),OP_SELL,Lots,Bid,15,SSL,STP,"My order",Magic,0,clrRed);

这样的话,同样是有时成交一个,有时成交两个。

 
MTraderboy:

1.你的意思是不能重复开仓指令吗?

2.我也曾修改成:

  OrderSend(Symbol(),OP_BUY,2*Lots,Ask,15,BSL,BTP,"My order",Magic,0,clrBlue);

  OrderSend(Symbol(),OP_SELL,Lots,Bid,15,SSL,STP,"My order",Magic,0,clrRed);

这样的话,同样是有时成交一个,有时成交两个。

1. OrderSend()函数的返回值你要检查,如果是-1,则开仓不成功。

2. 一般StopLoss,TakePrifit是点数,所以要乘以Point:

               BSL=NormalizeDouble(Ask-StopLoss*Point,Digits);
               BTP=NormalizeDouble(Ask+StopProfit*Point,Digits);
               SSL=NormalizeDouble(Bid+StopLoss*Point,Digits);
               STP=NormalizeDouble(Bid-StopProfit*Point,Digits);
 
fxmeter:

1. OrderSend()函数的返回值你要检查,如果是-1,则开仓不成功。

2. 一般StopLoss,TakePrifit是点数,所以要乘以Point:

谢谢指教。我在StopLoss,TakePrifit中巳经输入的是点数。如 StopLoss=0.5,TakeProfit=1(以EURJPY为例)。所以不会出现负值和不用再乘以Point。如果这里出问题的话也不会有时能成功开二个仓。现在问题是有时能成功开三个仓,但大多数是只能开二个。当改成开二个仓,它又只开一个。
 
MTraderboy:
谢谢指教。我在StopLoss,TakePrifit中巳经输入的是点数。如 StopLoss=0.5,TakeProfit=1(以EURJPY为例)。所以不会出现负值和不用再乘以Point。如果这里出问题的话也不会有时能成功开二个仓。现在问题是有时能成功开三个仓,但大多数是只能开二个。当改成开二个仓,它又只开一个。

止损止盈点数太小了,靠市价太近了,至少要在STOPLEVEL之外。

太小了开仓不成功很正常。

 
fxmeter:

止损止盈点数太小了,靠市价太近了,至少要在STOPLEVEL之外。

太小了开仓不成功很正常。

在 EURJPY 货币对中,0.5即是50点了,足够在STOPLEVEL之外。
 
MTraderboy:
在 EURJPY 货币对中,0.5即是50点了,足够在STOPLEVEL之外。
       一般都要大于点差,并且不要距离太近、、、
 

开仓不成功的原因有很多

每次开仓你都要检查返回值,根据返回值来决定要不要继续开仓。

 
有些是因为价格变化太快价格无效,有些是止损无效,交易手数等各种原因。
 
luo jun:

开仓不成功的原因有很多

每次开仓你都要检查返回值,根据返回值来决定要不要继续开仓。

我试过干脆先不设止损和止盈,看看能否同时开出三个仓,结果还是不行,有时开出一个、有时二个。
原因: