任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 340

 
evillive:


在编辑面板上有SRC按钮,代码会自动在那里着色;)

至于代码,如果它使用 if (OrderSymbol() == Symbol()...) 那么 if (OrderSymbol()!= Symbol()) 继续;我们不需要其中任何一个。

for (int k = 0; k < OrdersTotal(); k++) 你最好把这句话改为

对于(int k = OrdersTotal()-1; k >=0; k--),它更安全。



我是这样写的


if(NumberOfPositionsSell(Symbol())==1 &&  NumberOfPositionsBay_otl(Symbol())==1  &&GetOrderLotsOtlBay(Symbol())==start_Lot*2  &&GetOrderLotsSell(Symbol())==start_Lot)
{
 
     for (int kk = OrdersTotal()-1; kk >=0 ; kk--) 
      {
      
       if (OrderSelect(kk,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
      
      if (OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP ) {
      

      tp_buy_otl=NormalizeDouble(b+((((2*Point)+spred+(b+Point+spred-GetOrderPriceSell(Symbol()))/Point)/2)*Point), Digits);
      sl_buy_otl=NormalizeDouble(GetOrderPriceSell(Symbol()), Digits);
      OrderModify(OrderTicket(), NormalizeDouble(b+Point+spred, Digits),sl_buy_otl,tp_buy_otl,0);
     
       Alert("tp_buy_otl = ",DoubleToStr(tp_buy_otl, Digits)+"\n"+"sl_buy_otl =  ",DoubleToStr(sl_buy_otl, Digits)+"\n"+" цена открытия бай стоп = ",  DoubleToStr(b+Point+spred, Digits)+"\n"+"OrderSymbol() =  ",OrderSymbol()+"\n"+"OrderType() = ",OrderType());
     
      
     }
      
      
      if (OrderSymbol() == Symbol() && OrderType() == OP_SELL ) {
      
      sl_sell_otl=NormalizeDouble(b+spred+Point, Digits);
      OrderModify(OrderTicket(),OrderOpenPrice(), sl_sell_otl,OrderTakeProfit(),0);
       
      }
      }
      }
      
} 

а в алерте почемуто OrderSymbol()==GBPUSD посмотрите на скин
да и открытый селл он модифицировал а отложенный нет


当我删除gbpusd的挂单,并从中删除EA时,欧元的订单立即被修改。


 
max020780:

当我删除gbpusd的挂单,并从中删除EA时,欧元订单立即被修改。

使用Magicky 来过滤订单。而且没有检查重复修改停止的情况(会导致修改错误1)。
 

大家好。朋友们,你们能不能告诉我,这种对一个EA 进行5年以上的测试 能不能算作成功。还是获利能力小而缩水大。我想听听我的意见,测试者的数据与真实账户有很大差别吗(我在Alpari终端测试过)?我正在展示结果。

期间 数量 盈利能力 缩减 交易金额
01.06.2012-30.05.2013 1490.63 1.7 37.08% (389.71)
213
01.06.2011-30.05.2012
1242.23 1.48 25.82% (448.34) 231
01.06.2010-30.05.2011 1677.66 1.62 53.26% (880.57)
213
01.06.2009-30.05.2010 1664.33 1.68 32.16% (560.68) 208
01.06.2008-30.05.2009 1817.72 1.48 43.73% (472.15) 233
 
alexey1979621:

大家好。朋友们,你们能不能告诉我,这种对一个EA进行5年以上的测试能不能算作成功。还是获利能力小而缩水大。我想听听我的意见,测试者的数据与真实账户有很大差别吗(我在Alpari终端测试过)? 我正在展示结果。

期间 数量 盈利能力 缩减 交易金额
01.06.2012-30.05.2013 1490.63 1.7 37.08% (389.71)
213
01.06.2011-30.05.2012
1242.23 1.48 25.82% (448.34) 231
01.06.2010-30.05.2011 1677.66 1.62 53.26% (880.57)
213
01.06.2009-30.05.2010 1664.33 1.68 32.16% (560.68) 208
01.06.2008-30.05.2009 1817.72 1.48 43.73% (472.15) 233

这是一个巨大的缩减,而盈利能力是不够的...资金的缩减量是多少?

也可能是这样。

跌幅:2.40美元
最高:9.08美元

相对值:0.78%)

最大金额: 97.81% )))

 
evillive:

缩水很大,利润率有点低...资金的缩减量是多少?

可能是这样。

跌幅:2.40美元。
最高:9.08美元

相对比例:0.78

资金的最大值。97.81% ))

表示的是相对缩减。绝对缩水的百分比和金钱差不多。测试员的数据与真实账户 有很大差别吗?那么,我应该如何处理专家顾问--我应该把它放在真实账户上(它在模拟账户上似乎工作了3个星期),还是把它束之高阁,直到有新的想法来改进它?
 
让他至少在演示上工作半年。测试器没有显示缩水的手段,但你可以在实时上看到。我所展示的是--没有止损的工作,过度沉淀的缩水。以前的账户寿命--2-3个月,这个账户从8月开始就活了,我看看它能持续多久 ))
 
如果你有经验,你应该用什么参数作为起点--最低利润率和缩水?如果利润率低于1.5%,并且在5年内缩水超过50%,那么我的专家顾问就应该被束之高阁,直到更好的时候。
 
Forexman77:

我在EA中使用我自己的指标,在测试过程中我看到它正在增长,根据条件它应该打开买入,但它没有发生。

我在日志中看到以下错误(我有两种类型,我逐一显示)。

TestGenerator:不匹配的数据错误(在2013.12.11 21:00超过了体积限制372)。

TestGenerator:不匹配的数据错误(2013.09.12 19:45的低值1.33097没有从最低的时间框架达到,低价1.33105不匹配)。

也许自定义指标的操作有一些特殊性?我已经在这个EA上捣鼓了两个月,我正在无限期地推迟它。

下载被测试符号的全部历史记录。造成错误的不是EA,而是 "歪曲 "的历史。
 
Forexman77:

一个EA上不时出现129,138的错误。只有在重新启动终端后,问题才得以解决。

我想添加市场信息功能来更新买入和卖出,然后进行检查。

是否有可能人为地调用129,138的错误?

错误129 - 错误的价格

错误138--新价格(重新报价)。

发送交易请求 之前,通过使用RefreshRates()刷新交易环境,或直接从MarketInfo()获取最新价格。

不要忘记这一点。

专家顾问和脚本使用他们自己的历史数据副本工作。当前符号上的数据副本是在第一次启动专家顾问或脚本时创建的。

每次专家顾问或脚本下次运行时,最初创建的副本都会被更新。在专家顾问或脚本运行时,可能会有一个或多个新的点位到来,因此数据可能会过时。

 
artmedia70:

错误129--价格不正确

错误138--新价格(重新报价)。

在发送交易请求之前,通过使用RefreshRates()更新交易环境,或直接从MarketInfo()获取最新价格。

不要忘记这一点。

专家顾问和脚本使用他们自己的历史数据副本工作。当前符号上的数据副本是在第一次启动专家顾问或脚本时创建的。

每次专家顾问或脚本下次运行时,最初创建的副本都会被更新。在专家顾问或脚本运行时,可能会有一个或多个新的点位到来,因此数据可能会过时。


非常感谢您!

现在我知道问题出在哪里了。

我用它来买东西。

if  (iClose(Symbol(),Period(),0) <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }

据我所知,买入是要价,但iClose(Symbol(),Period(),0)从要价中获取价格。这可能是出错的原因。

现在我使用以下组合。

double pa=MarketInfo(Symbol(),MODE_ASK);
if  (pa <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }
但是,我有一个问题,因为该EA不是基于点数的EA,价格在买入区有很长一段时间,而且每一个刻度都在更新。

为什么交易不开放?事实证明,EA挂在错误上,没有看到进一步的价格运动?

我的专家顾问的模板来自https://c.mql5.com/mql4/book/mq4/experts/tradingexpert.mq4

在您看来,我是否应该在该EA的错误处理功能中加入对129和138错误的检查?

如果是,如何做呢?
原因: