把Bid改成OrderClosePrice()
close=OrderClose(close_a,lots,OrderClosePrice(),25,Magenta);
for(int h=0;h<5;h++) //对a数组的每一行遍历。
{
for(int l=2;l<7;l++) //对a数组的每一行的每一列遍历。
{
if(a[h][l]!=0) //a数组的每一行的2~6列存的是已经开仓的订单号。0~1列是价格。a数组是double型的5行7列的数组。
{ if( z-10*Point<=Bid && Bid<=z ) //Bid符合条件就平仓
{
int close_a=MathFloor(a[h][l]); //得到一个订单号
close=OrderClose(close_a,lots,Bid,25,Magenta);
if(close==1) { printf("OrderClose 平仓成功") ; }
if(close!=1) { printf("OrderClose 平仓失败") ; } } } } }
为什么同样是Bid达到了指定价位 有时结果是"OrderClose 平仓成功" 有时结果"OrderClose 平仓失败"?
不要之平仓一次,可以写个while,循环平仓,直至成功。
任何涉及开仓平仓修改订单的模块都应该这么处理。
不要之平仓一次,可以写个while,循环平仓,直至成功。
任何涉及开仓平仓修改订单的模块都应该这么处理。
我加了这几行代码
int tic=0;
while(tic!=1)
{
tic=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),20,Magenta);
if(tic==1) { printf("OrderClose
平仓成功") ; }
if(tic!=1) { printf("OrderClose 平仓失败") ;
}
}
结果有的单子出现“OrderClose 平仓成功” 有的单子不停的出现“OrderClose 平仓失败” 为什么??
我加了这几行代码
int tic=0;
while(tic!=1)
{
tic=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),20,Magenta);
if(tic==1) { printf("OrderClose
平仓成功") ; }
if(tic!=1) { printf("OrderClose 平仓失败") ;
}
}
结果有的单子出现“OrderClose 平仓成功” 有的单子不停的出现“OrderClose 平仓失败” 为什么??
看下日志或者在平仓失败后边加上GetLastError(),目测代码没有大问题,可能是错误130
又试了几天 还是不行。“平仓失败”时日志却显示正常平仓。加上GetLastError()没有出现任何信息。在
tic=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),20,Magenta)之前加了printf("OrderTicket()=%d,OrderLots()=%f,OrderClosePrice()=%f",OrderTicket(),OrderLots(),OrderClosePrice())
运行时出现了比如OrderTicket()=224308378 OrderLots()=0.010000 OrderClosePrice()=0.643890
但是tic=OrderClose一句就是没有正常平仓。不知为什么。
又试了几天 还是不行。“平仓失败”时日志却显示正常平仓。加上GetLastError()没有出现任何信息。在
tic=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),20,Magenta)之前加了printf("OrderTicket()=%d,OrderLots()=%f,OrderClosePrice()=%f",OrderTicket(),OrderLots(),OrderClosePrice())
运行时出现了比如OrderTicket()=224308378 OrderLots()=0.010000 OrderClosePrice()=0.643890
但是tic=OrderClose一句就是没有正常平仓。不知为什么
平仓失败后边加getlasterror后显示是“平仓失败0”吗?这从逻辑上是不可能的啊。要是“平仓失败”加任何一个数字那就是错误信息了
平仓失败后边加getlasterror后显示是“平仓失败0”吗?这从逻辑上是不可能的啊。要是“平仓失败”加任何一个数字那就是错误信息了
加了GetLastError()以后,“平仓失败”后面没有任何数字呀
加了GetLastError()以后,“平仓失败”后面没有任何数字呀
GetLastError()是一定会返回一个异常代码的,没有错误的时候返回的是0,而只要平仓失败,它必然会反馈一个非零的错误代码来提示平仓失败原因
{
for(int l=2;l<7;l++) //对a数组的每一行的每一列遍历。
{
if(a[h][l]!=0) //a数组的每一行的2~6列存的是已经开仓的订单号。0~1列是价格。a数组是double型的5行7列的数组。
{ if( z-10*Point<=Bid && Bid<=z ) //Bid符合条件就平仓
{
int close_a=MathFloor(a[h][l]); //得到一个订单号
close=OrderClose(close_a,lots,Bid,25,Magenta);
if(close==1) { printf("OrderClose 平仓成功") ; }
if(close!=1) { printf("OrderClose 平仓失败") ; } } } } }
为什么同样是Bid达到了指定价位 有时结果是"OrderClose 平仓成功" 有时结果"OrderClose 平仓失败"?