[MT4-EA]求教高手,移动止损代码如何编写
我查遍了网上很多据说是可以实现移动止损的代码,还看了一些教程,发现所谓的移动止损代码都如出一辙,基本上都是以下这个样子:
[backcolor=white]if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()[backcolor=rgb(202, 155, 112)]
[/backcolor]
但这段代码在实现首次移动止损后,之后好像是只要盈利1个点,止损价就会上升,感觉有点太频繁了。我是想在每次固定盈利之后再让止损价上移。
例如开仓价为50,止损价为20,固定盈利为40,则在价格上升到90时,止损价上升到60,价格上升到130时,止损价上升到100,如此这般。
我刚刚学MQL语言没多久,暂时想不到如何编程,请高手指点下。
但这段代码在实现首次移动止损后,之后好像是只要盈利1个点,止损价就会上升,感觉有点太频繁了。我是想在每次固定盈利之后再让止损价上移。
例如开仓价为50,止损价为20,固定盈利为40,则在价格上升到90时,止损价上升到60,价格上升到130时,止损价上升到100,如此这般。
我刚刚学MQL语言没多久,暂时想不到如何编程,请高手指点下。
发表于:2016-06-18 14:08只看该作者
2楼
加油吧
韬客社区www.talkfx.co
发表于:2016-06-18 15:03只看该作者
3楼
设一个全局变量存储局部盈利,在第一个大括号中的第一句再加一个判断。
韬客社区www.talkfx.co
发表于:2016-06-19 11:12只看该作者
4楼
你的盈利水平是固定的,你要做成下面这样: mvsl是你定制的移损水平 for(int i=0;i=mvsl)
{
double buysl=OrderStopLoss();
if(OrderModify(OrderTicket(),OrderOpenPrice(),buysl+mvsl*Point,OrderTakeProfit(),0)==true)
{
mvsl=mvsl+mvsl;
}
}
}
if((OrderComment()==(Symbol()+"sell")))
{
if(((OrderOpenPrice()-Ask)/Point)>=mvsl)
{
double sellsl=OrderStopLoss();
if(OrderModify(OrderTicket(),OrderOpenPrice(),sellsl-mvsl*Point,OrderTakeProfit(),0)==true)
{
mvsl=mvsl+mvsl;
}
}
}
}
}
这样写,你的盈利水平就变成+1了,如果是20点,那么就是40点,下次就是60点的时候移动一次 ,也就是在价格线下20点的位置
韬客社区www.talkfx.co
发表于:2016-06-21 13:39只看该作者
5楼
繁日隆 发表于 2016-6-19 19:12
你的盈利水平是固定的,你要做成下面这样: mvsl是你定制的移损水平 for(int i=0;i=mvsl) ...
韬客社区www.talkfx.co
发表于:2016-06-28 05:08只看该作者
6楼
不知道
韬客社区www.talkfx.co