externdouble Dist = 25; //--- the distance you'd like your stops to trail.. in your case 25 pipsexternint EA_Majik = 12345; //--- EA's magic number
start()
{
//.......double min=NormalizeDouble(MarketInfo(Symbol(),MODE_STOPLEVEL)*Point,Digits);
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==EA_Majik && OrderSymbol()==Symbol())
{
if(OrderStopLoss() > 0) //--- Must have an existing stoploss to trail
{
if(OrderType()==OP_BUY)
{
if(Bid-OrderOpenPrice() < 100) //--- only trail if price moves within 100 pips
{
double LastSL.Lng = OrderStopLoss(); //--- get the current SL leveldouble SL.Lng = NormalizeDouble(Bid-Dist*Point,Digits); //--- get the new SL levelif(SL.Lng < LastSL.Lng) SL.Lng = LastSL.Lng; //--- never move SL away from price.. if this is the case, keep it the sameif(SL.Lng > Bid-min) {Print("STOPLOSS too close to market: ",SL.Lng,", Adjusted to min: ",(Bid-min)); SL.Lng=Bid-min;}
if(SL.Lng != LastSL.Lng) OrderModify(OrderTicket(),OrderOpenPrice(),SL.Lng,OrderTakeProfit(),0,Lime);
}
}
if(OrderType()==OP_SELL)
{
if(OrderOpenPrice()-Ask < 100)
{
double LastSL.Shrt = OrderStopLoss();
double SL.Shrt = NormalizeDouble(Ask+Dist*Point,Digits);
if(SL.Shrt > LastSL.Shrt) SL.Shrt = LastSL.Shrt;
if(SL.Shrt < Ask+min) {Print("STOPLOSS too close to market: ",SL.Shrt,", Adjusted to min: ",(Ask+min)); SL.Shrt=Ask+min;}
if(SL.Shrt != LastSL.Shrt) OrderModify(OrderTicket(),OrderOpenPrice(),SL.Shrt,OrderTakeProfit(),0,Red);
}
}
}
}
elsePrint("STOPLOSS does not exist.");
}
// .........return(0);
}
上面的代码应该能做到你描述的那样。我只是把它放在邮筒里,并没有测试,所以如果有问题,请告诉我。
现在让我来问你,在你之前发布的代码中,你的进场信号是这样的。
double MA1=iMA(NULL,0,100,0,1,0,0);
double MA2=iMA(NULL,0,100,0,1,0,1);
double MA3=iMA(NULL,0,40,0,1,0,0);
double MA4=iMA(NULL,0,40,0,1,0,1);
if(MA1 < MA3 && MA2 > MA4) // Go Long if(MA1 > MA3 && MA2 < MA4) // Go Short
所以你在MoveTrailingStop()函数中进行实际检查?
我做了检查,是的,你给了我这个想法,我正在努力解决这个逻辑问题。但我从网上的另一个EA中黑掉了这个功能 本身,但我现在确实明白它在做什么。我在这方面确实很努力,而且我正在变得更好。
我所做的大部分工作是复制和观察,看看它们是如何工作的。我只是通过例子来学习函数的工作原理,你会从上面看到。这个话题真的需要一本好书。
我收集了很多跟踪止损的例子,但我需要一个立即开始跟踪,通过-V值到0,然后像收支平衡一样停止。
因此,如果入市价格为100,止损为100,如果价格移动到+25,跟踪止损移动到-75,然后一旦价格达到100,跟踪止损就停在0,不再移动。
谁能帮我解决这个问题?我花了一整天的时间试图让它工作,但我就是做不到。
我想我已经做到了,但我没有做到,我的移动止损在0处。
上面的代码应该能做到你描述的那样。我只是把它放在邮筒里,并没有测试,所以如果有问题,请告诉我。
现在让我来问你,在你之前发布的代码中,你的进场信号是这样的。
这些是你的策略的唯一进入信号吗?
上面的代码应该能做到你描述的那样。我只是把它放在邮筒里,并没有测试,所以如果有问题,请告诉我。
现在让我来问你,在你之前发布的代码中,你的进入信号是这样的。
这些是你的策略的唯一进入信号吗?
不是的。这里有人建议我暂时改变进场信号,直到有一天我愿意透露我在做什么。我从一个基本的EA中挑选了它们,只是为了填补空间。
非常感谢你的建议。
算了,不说了
大家好...
我发这个帖子纯粹是为了比较。
你会看到在这个帖子中,显示了交易数量,而米克的帖子中却把它删除了。 为什么?
发这个帖子的第二个原因是想说明,在短时间内取得惊人的结果是可能的--这是一个模拟账户 在两小时内进行的一系列交易。
我想把代码贴出来,但它确实不是我最好的作品 事实上,这是因为一个荒谬的愚蠢的编程疏忽而发生的。
蛇
why dont you just ask me in a pm or do you want to have a go at me now publicly ? ? ? ? ?
你在几个小时内实现了那么多的利润,而且没有损失的交易?我很怀疑,如果你的交易那么好,你就不会在互联网论坛上浪费时间,在你的账户上发24个帖子,问别人的生意。你不会在乎的。这些结果要么是来自反向测试器,要么是你编造的,我的朋友。
就像我之前说的,如果你不能在这个主题上发表一些有建设性的东西,请不要发表任何帖子。不管你从哪里来,都请你回去吧。
事实上,我在这个论坛上犯了一个错误,我将在这里结束我在这个主题上的活动,并且不再回到它。相反,我将开始研究论坛中的其他帖子,从那里着手。谢谢你在这个主题中的积极投入。
我想听听这里的一些有经验的人的意见。我编程了一个简单的EA,它在模拟账户 上似乎运行得非常好。
==>>我也编了一个简单的EA,得到了梦幻般的效果,并在这里发帖,就像你回答你的问题一样,你有可能像我的一样,过度关注了一些东西。 我的交易策略不受控制,只是在正确的时间击中了市场--可以错误地认为它是成功的。
我问的原因是,这似乎好得不像真的,我担心我错过了什么。
==>根据我上面的经验,这是有可能的。
我想这是我应该发的帖子--对不起,米克。