StopTrail()移动已有的Stop挂单,使得Stop挂单一直跟随行情移动,距离行情间距可设置
函数名称StopTrail(string SymbolX,int OrderTypeX,int MagicX,int TrailPointX)
函数介绍
有时候我们不想直接开仓,想要挂单开仓。比如行情上涨,我们想在行情下方挂一个SellStop单,如果行情一直上涨,我们就移动SellStop单跟随行情。一旦行情反转下跌,SellStop就会开仓成功。
这样我们可能会开仓开在一个更好的位置。StopTrail()就是可以自动移动挂单,使之跟随的函数。注意StopTrail()是不开仓的,需要你自己先开好挂单,然后StopTrail()帮助你进行移动。
//举例:移动当前持有的OP_BUYSTOP挂单,使之一直距离行情50点间隔。
StopTrail(Symbol(),OP_BUYSTOP,MAGIC,50);
参数介绍
SymbolX:订单筛选的交易品种,一般设置当前品种即可,也就是Symbol();“-1”代表不筛选交易品种。
OrderTypeX:订单筛选的订单类型,0代表多单,1代表空单。OP_BUY是常量0,OP_SELL是常量1。-1代表不筛选订单类型。
MagicX:订单的魔术码,你的EA的魔术码是多少,这里填上即可。
TrailPointX:挂单距离行情间隔的点数。
函数定义
注意:本人发布的函数均为实战开发所用,低价或免费发布并不赚钱,仅限懂编程的朋友使用,不提供指导,因为人工成本巨贵,感谢朋友们海涵。void StopTrail(string SymbolX,int OrderTypeX,int MagicX,int TrailPointX)
{
if(TrailPointX>0)
for(int i=OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS))
if((OrderSymbol()==SymbolX|| SymbolX=="-1")&&(OrderMagicNumber()==MagicX||MagicX==-1)&&(OrderType()==OrderTypeX||OrderTypeX==-1))
{
if(OrderType()==OP_BUYSTOP)
if(OrderOpenPrice()>Ask+TrailPointX*MarketInfo(OrderSymbol(),MODE_POINT))
if(!OrderModify(OrderTicket(),Ask+TrailPointX*MarketInfo(OrderSymbol(),MODE_POINT),OrderStopLoss(),OrderTakeProfit(),0,Yellow))
Print(GetLastError());
if(OrderType()==OP_SELLSTOP)
if(OrderOpenPrice()<Bid-TrailPointX*MarketInfo(OrderSymbol(),MODE_POINT))
if(!OrderModify(OrderTicket(),Bid-TrailPointX*MarketInfo(OrderSymbol(),MODE_POINT),OrderStopLoss(),OrderTakeProfit(),0,Yellow))
Print(GetLastError());
}
}
看不明白 不断修改价格会不会被封? 这个怎么样呢 有没有mq5的 学习了,学习了 学习下,很有用处。 学习一下好 我一直是用buystop 和sellstop 手动移动。累死了。还不能操作多个品种,如果这个函数可以自己写个ea就好了。
不知道会不会报错 周末研究一下 不错不错,省了不少的操作 的EA的魔术码是多少,这里填 这个函数可以自己写个ea就好了
页:
[1]