// Trailing Stop Code if(Tradeopen()==true && emastoptrail==TRUE) // Trades are open and Trailing stop feature is turned on
{
for(int tnumber2 = OrdersTotal()-1; tnumber2 >= 0 ; tnumber2--) //scan through open orders
{
if (OrderSelect(tnumber2, SELECT_BY_POS) &&
OrderMagicNumber()==Mnumber3) // The orders magic number is the same as the magic number used the profit trade
{
if(OrderType()==OP_BUY && (iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1) > OrderStopLoss() )) // The stop loss is less than the moving average value
{
OrderModify(OrderTicket(),OrderOpenPrice(),iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1),OrderTakeProfit(),0); // Modify Stop to MA value
}
if(OrderType()==OP_SELL && (iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1) < OrderStopLoss() )) // The stop loss is more than the moving average value
{
OrderModify(OrderTicket(),OrderOpenPrice(),iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1),OrderTakeProfit(),0); // Modify Stop to MA value
}
}
}
}
// DELETE PENDING ORDERS THAT HAVE NOT BEEN TRIGGERED WITHIN ' int = pendinglimit'if((iBarShift(Symbol(),60 ,tradeopened)>pendinglimit) && Tradeopen()==true) // Check to see if pending orders have expired
{
for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--) //scan through open orders
{
if (OrderSelect(tnumber, SELECT_BY_POS) &&
((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3))) // The orders magic number is the same as the magic number used in this ea
{
OrderDelete(OrderTicket( ) ); // Delete it
}
}
}
for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--) //scan through open orders
{
if (OrderSelect(tnumber, SELECT_BY_POS) &&
((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)) && // The orders magic number is the same as the magic number used in this ea
(iTime( Symbol(), 60, pendinglimit) == tradeopened))
{
OrderDelete( OrderTicket() ); // Delete it
}
}
for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--) //scan through open orders
{
if (OrderSelect(tnumber, SELECT_BY_POS) &&
((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)) && // The orders magic number is the same as the magic number used in this ea
(iBarShift(OrderSymbol(),PERIOD_H1 ,OrderOpenTime()) - pendinglimit) <= 0)); // <----------- this . . .
{
OrderDelete( OrderTicket() ); // Delete it
}
}
是的,刚刚又读了一遍你的评论,我所做的是错误的。
不会给我酒吧开业时间,我必须使用Time[0]吗?
是的,或者......。
这就解决了问题,猛禽。
--------->http://clip2net.com/s/14aYs
这就解决了问题,猛禽。
--------->http://clip2net.com/s/14aYs
伙计,你给了我很多帮助,我现在终于有了EA的状态,可以开始调整策略了。非常感谢你,但我怀疑你已经听到了我的最后一句话,抱歉地说,哈哈。
也非常感谢WHRoeder所以......你认为它已经结束了,lol
我添加了一些代码,可以根据移动平均线 的值来跟踪止损。这段代码在买入交易中运行良好,但在卖出交易中却不起作用。我不能发现什么,也许你们可以。
追踪止损代码可能不是问题所在。在一定时间后删除挂单 的代码有问题...。
在每笔交易开始后,我也运行这个...
我评论...
它从1000开始,在每个新条形上不断计数,当我运行时不会被重置......
这使得删除挂单的检查永远是真实的,如果交易在下一个条形图中没有被触发,挂单将被直接删除 -__-
Ahhh HELP lol
我想我可能已经解决了这个问题....
我把它改了,这样一来,删除交易的另一个检查是把时间向后移,即挂单 的最大允许时间,看看它是否与交易开始的时间相符 :)
我想我可能已经解决了这个问题....
我改变了它,这样一来,删除交易的另一个检查是将时间向后移,即挂单可以打开的最大允许时间,看看它是否与交易打开的时间相符 :)
你几乎有了我所设想的东西 . . . .
使用你的tradeopened变量有一个问题 ......如果有开放的交易,EA被关闭,你就会失去该变量中的信息 ......为什么不把它替换成OrderOpenTime( ),然后做这样的事情 ......
另外,猛禽我需要再次挑选你的大脑.... :)
有什么方法可以把移动平均 数值变成度数吗?我现在只是在谷歌上搜索,看看能不能找到任何数学论坛的资料。这样的话,就可以很容易地检测出市场的横盘和明确的上升和下降趋势。