发现很难发送订单。 - 页 3

 
好吧,看起来是CT贸易。
 
它不喜欢动态手数吗?当我使用固定手数的时候,它在ct交易中起作用。
 
MetaNt:
它不喜欢动态手数吗?当我使用固定手数时,它在ct交易中起作用。

CTrade 是OrderSend()的一个封装器。

你写道,它在成交量à0.07甚至1的情况下不工作。你是如何定义的?批量=0.07?

 
angevoyageur:

CTrade是OrderSend()的一个封装器。

你写道,它在成交量à0.07甚至1的情况下不工作。你是如何定义的?批量=0.07?

我不确定我写的Mqlrequest和Mqlresult是否正确,所以我用CTrade代替,我发现如果我使用固定的量,它就能工作,现在我发现我可以将固定的量乘以整数,但如果我试图用分数改变量,我就会得到错误,如无效的lotsize,修改的lot size的结果被打印出来,错误[无效的量]。
 
这是具有一定复杂性的小数,我将尝试归一化双数。
 
MetaNt:
这是有一定复杂性的小数,我将尝试归一化双数。
Normalize double为复杂的小数提供了一个修复方法,我将在我的动态批次上试试。
 
MetaNt:
Normalize double为复杂的小数提供了一个修复方法,我将在我的动态批次上试试。

固定的。

看起来这是我在CT买卖之外的一些方程中的一个缩放因子。 这不是我在mql4中遇到的问题,所以我花了一些时间来定位它,如果mql4再次更新,我必须注意这个问题。

对于其他有这个问题的人,在NormalizeDouble()函数 的数字部分使用2

 

你说007?

你也许应该问问邦德先生;-)

 

我似乎在这里遇到了同样的问题。我已经确认手数符合SYMBOL_VOLUME_MIN、SYMBOL_VOLUME_MAX和SYMBOL_VOLUME_STEP 要求。

例如,我得到这样的结果。

2014.04.07 14:49:35 2014.04.04 16:00:00 CTrade::OrderSend: instant sell 0.53 EURUSD at 1.36934 sl: 1.37434 tp: 1.35934 [无效量]

在用这个符号和这些规格对EA进行回测时。


这里是我用来发送订单的代码。

int    losses=1;
int    DecimalPoints=2;
 double Risk=0.03;
double Inc=0.1;
my_symbol=Symbol();
leverage=AccountInfoInteger(ACCOUNT_LEVERAGE);
contract=SymbolInfoDouble(my_symbol,SYMBOL_TRADE_CONTRACT_SIZE);
min_lot=SymbolInfoDouble(my_symbol,SYMBOL_VOLUME_MIN);
max_lot=SymbolInfoDouble(my_symbol,SYMBOL_VOLUME_MAX);
trade_size=equity*(Risk/100)*leverage;
trade_size/=contract;
trade_size+=losses*Inc;
NormalizeDouble(trade_size,DecimalPoints);
  if(trade_size<min_lot)
    {
     trade_size=min_lot;
    }
  else if(trade_size>max_lot)
    {
     trade_size=max_lot;
    }
trade.Sell(trade_size,my_symbol,price,0,price-tp,"Expert Sell");

EDIT:

当然,我可以用这个确切的手数手动下单交易。

 
Candles:

我似乎在这里遇到了同样的问题。我已经确认手数符合SYMBOL_VOLUME_MIN、SYMBOL_VOLUME_MAX和SYMBOL_VOLUME_STEP 要求。

例如,我得到这样的结果。

2014.04.07 14:49:35 2014.04.04 16:00:00 CTrade::OrderSend: instant sell 0.53 EURUSD at 1.36934 sl: 1.37434 tp: 1.35934 [无效量]

在用这个符号和这些规格对EA进行回测时。


这里是我用来发送订单的代码。

EDIT:

当然,我可以用这个确切的手数手动下单交易。

这一行是没有效果的。

NormalizeDouble(trade_size,DecimalPoints);

你必须将结果影响到一个变量,见NormalizeDouble 的文档。

trade_size=NormalizeDouble(trade_size,DecimalPoints);