意见--非常成功的EA--3000美元的账户在两周内升至6300美元(本来可以升至9000美元)。 - 页 6

 
所以你在MoveTrailingStop()函数 中进行实际检查?
 
zzuegg:
所以你在MoveTrailingStop()函数中进行实际检查?

我做了检查,是的,你给了我这个想法,我正在努力解决这个逻辑问题。但我从网上的另一个EA中黑掉了这个功能 本身,但我现在确实明白它在做什么。我在这方面确实很努力,而且我正在变得更好。

我所做的大部分工作是复制和观察,看看它们是如何工作的。我只是通过例子来学习函数的工作原理,你会从上面看到。这个话题真的需要一本好书。

 
MickGlancy:

我收集了很多跟踪止损的例子,但我需要一个立即开始跟踪,通过-V值到0,然后像收支平衡一样停止。

因此,如果入市价格为100,止损为100,如果价格移动到+25,跟踪止损移动到-75,然后一旦价格达到100,跟踪止损就停在0,不再移动。

谁能帮我解决这个问题?我花了一整天的时间试图让它工作,但我就是做不到。

我想我已经做到了,但我没有做到,我的移动止损在0处。

extern double Dist = 25;      //--- the distance you'd like your stops to trail.. in your case 25 pips
extern int 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 level
                  double SL.Lng = NormalizeDouble(Bid-Dist*Point,Digits);                               //--- get the new SL level
                  if(SL.Lng < LastSL.Lng)    SL.Lng = LastSL.Lng;                                       //--- never move SL away from price.. if this is the case, keep it the same
                  if(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);
               }
            }
         }
      }
      else Print("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 

这些是你的策略的唯一进入信号吗?

 
supertrade:

上面的代码应该能做到你描述的那样。我只是把它放在邮筒里,并没有测试,所以如果有问题,请告诉我。

现在让我来问你,在你之前发布的代码中,你的进入信号是这样的。

这些是你的策略的唯一进入信号吗?

不是的。这里有人建议我暂时改变进场信号,直到有一天我愿意透露我在做什么。我从一个基本的EA中挑选了它们,只是为了填补空间。

非常感谢你的建议。

 
没问题...顺便说一下,我更新了我上面发布的代码......注意到一些错误
 

算了,不说了

 

摘要。
存款/取款。 5 000.00 信用额度。 0.00
关闭的交易盈亏。 6 848.30 浮动盈亏。 0.00 保证金。 0.00
余额。 11 848.30 股权。 11 848.30 自由保证金: 11 848.30
详细信息。
毛利。 6 848.30 毛亏损: 0.00 总净利润: 6 848.30
盈利因素。 预期回报率。 14.39
绝对缩水。 0.00 最大缩水。 0.00 (0.00%) 相对缩减。 0.00% (0.00)
总交易量: 476 空头头寸(赢得%)。 1 (100.00%) 多头头寸(赢利%): 475(100.00%)
盈利交易(占总数的百分比)。 476(100.00%) 亏损交易(占总数的%): 0 (0.00%)
最大的 盈利交易。 15.20 亏损交易: 0.00
平均值 盈利交易。 14.39 亏损交易: 0.00
最多 连赢(美元)。 476 (6 848.30) 连续亏损($): 0 (0.00)
最大的 连续获利(计数)。 6 848.30 (476) 连续亏损(计数)。 0.00 (0)
平均数 连续赢利: 476 连败。 0

大家好...

我发这个帖子纯粹是为了比较。

你会看到在这个帖子中,显示了交易数量,而米克的帖子中却把它删除了。 为什么?

发这个帖子的第二个原因是想说明,在短时间内取得惊人的结果是可能的--这是一个模拟账户 在两小时内进行的一系列交易。

我想把代码贴出来,但它确实不是我最好的作品 事实上,这是因为一个荒谬的愚蠢的编程疏忽而发生的。

 

why dont you just ask me in a pm or do you want to have a go at me now publicly ? ? ? ? ?

你在几个小时内实现了那么多的利润,而且没有损失的交易?我很怀疑,如果你的交易那么好,你就不会在互联网论坛上浪费时间,在你的账户上发24个帖子,问别人的生意。你不会在乎的。这些结果要么是来自反向测试器,要么是你编造的,我的朋友。

就像我之前说的,如果你不能在这个主题上发表一些有建设性的东西,请不要发表任何帖子。不管你从哪里来,都请你回去吧。

事实上,我在这个论坛上犯了一个错误,我将在这里结束我在这个主题上的活动,并且不再回到它。相反,我将开始研究论坛中的其他帖子,从那里着手。谢谢你在这个主题中的积极投入。

 
没必要这么敏感,人们总会有疑虑......如果你说你要做什么,我想你欠乌尔善的,不管它是你的工作,所以你可以做你想做的事,虽然我很享受它,也学到了一些东西。
 

我想听听这里的一些有经验的人的意见。我编程了一个简单的EA,它在模拟账户 上似乎运行得非常好。

==>>我也编了一个简单的EA,得到了梦幻般的效果,并在这里发帖,就像你回答你的问题一样,你有可能像我的一样,过度关注了一些东西。 我的交易策略不受控制,只是在正确的时间击中了市场--可以错误地认为它是成功的。

我问的原因是,这似乎好得不像真的,我担心我错过了什么。

==>根据我上面的经验,这是有可能的。

我想这是我应该发的帖子--对不起,米克。