当你发表评论时,它是否会进入交易
//if(OpenOrdersThisPair(Symbol())==0)它是否在你评论时进入交易?
LotSize = 0.1;
等等。你可以一直追溯到它开始输入交易,一旦这样,你就可能知道问题出在哪里。
是的,即使手数为 "0",它也是在长边进入...
改变OpenOrderThisPair也不起作用....。嗯。这很奇怪...
改变OpenOrderThisPair也不起作用....。嗯。这很奇怪...
DomGilberto:
是的,即使手数为 "0",它也会进入多头......改变OpenOrderThisPair也不起作用....。嗯。这很奇怪...
是的,即使手数为 "0",它也会进入多头......改变OpenOrderThisPair也不起作用....。嗯。这很奇怪...
如果这个测试的返回值不是0 ....
if(OpenOrdersThisPair(Symbol()) == 0)
. . . 不调用OrderSend(),但你仍然要检查 SellTicketOrder是否大于0。
这样做 . .
if (direction==1)//--Sell--// { { double ssl=sell_stop_price; double stp=sell_takeprofit_price; LotSize = (RiskedAmount/(pips_to_ssl/pips))/10; if(OpenOrdersThisPair(Symbol())==0) { int SellTicketOrder = OrderSend(Symbol(),OP_SELLSTOP,LotSize,sellPrice,3,ssl,stp,NULL,MagicNumber,0,Red); if(SellTicketOrder > 0) { Print("Order Placed #", SellTicketOrder); } else { Print("Order Send Failed, error # ", GetLastError()); } } }
当它运行时,对多头来说工作正常(我在过去2个小时里一直在玩这个)。问题是,我很可能会让你和某个人失望,因为我知道我在哪里出了问题(在我调用 "CheckForMaTrade "函数 的地方),与移动平均线参数有关的IF语句,以及如果它们是 "真",它将把OrderEntry发送到OrderSend。问题是,我仍在学习如何正确编写这部分内容......
//+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if(OpenOrdersThisPair(Symbol())>=1) { if(UseMoveToBreakEven)MoveToBreakEven(); if(UseTrailingStop)AdjustTrail(); if(Use_MA_Trail)MA_Trail(); } if(IsNewCandle())CheckForMaTradeLong(); if(IsNewCandle())CheckForMaTradeShort(); //---- return(0); }
DomGilberto:
当它运行时,对多头来说工作正常(我在过去2个小时里一直在玩这个)。问题是,我很可能会让你和某个人失望,因为我知道我在哪里出了问题(在我调用 "CheckForMaTrade "函数的地方),与移动平均线参数有关的IF语句,以及如果它们是 "真",它将把OrderEntry发送到OrderSend。问题是,我还在学习如何正确编写这部分内容...
当它运行时,对多头来说工作正常(我在过去2个小时里一直在玩这个)。问题是,我很可能会让你和某个人失望,因为我知道我在哪里出了问题(在我调用 "CheckForMaTrade "函数的地方),与移动平均线参数有关的IF语句,以及如果它们是 "真",它将把OrderEntry发送到OrderSend。问题是,我还在学习如何正确编写这部分内容...
RaptorUK。
如果你没有得到一个错误,也没有得到 "Order placed # 12345",那么OrderSend()没有被调用,你的OpenOrdersThisPair()函数有问题 ......公布你的代码。
如果你没有得到一个错误,也没有得到 "Order placed # 12345",那么OrderSend()没有被调用,你的OpenOrdersThisPair()函数有问题 ......公布你的代码。
那么 ....你得到什么错误,等等 ......
if(IsNewCandle())CheckForMaTradeLong(); if(IsNewCandle())CheckForMaTradeShort();虽然我支持将操作分解到函数 中,但我不支持新蜡烛/新蜡烛的大多数变化,因为该函数只能被调用一次[per start()] 。
int start(){ static datetime time0; bool isNewCandle = time0 != Time[0]; time0 = Time[0]; // Once per start only. : if(isNewCandle)CheckForMaTradeLong(); if(isNewCandle)CheckForMaTradeShort();
谢谢WHRoeder - 很好的提示!
我很难理解,为什么多头头寸有效,而空头交易完全没有?
我觉得这与我的初始函数 有关,该函数 用于确定手头给定经纪商的小数位数。(因为这似乎是我第一次启动测试器时,幽灵订单被抛出的罪魁祸首...)
有谁知道为什么空方会告诉我这个错误?
提前感谢(目前代码有点乱,当然我打算把它清理干净!)。