我正在学习写顾问... - 页 3

 
仍然有一个OrderSend 错误130...它取决于什么?
 
paukas >> :

下载分钟蜡烛(例如从Alpari下载),在分钟蜡烛上做测试。

如果我有一个H4的MTS,我怎么做分钟的测试呢...?

你不能用5个点的止损来测试4小时的蜡烛图。

为什么不呢?
 

在《自动交易锦标赛2007:专家的常见 错误》一文中
我读到OrderSend错误130(ERR_INVALID_STOPS)是错误的或太接近的停止。

我打电话给区政府,问他们可以在多小的距离上设置停车位--他们说没有这样的限制......奇怪!

我也不明白一件事。如果我手动打开一个订单,我实际上不能在其中设置止损和盈利......那么OrderSend()如何做到这一点?

我检查了一下,如果我手动下单,然后设置止损......从开盘价--也就是当前的价格--至少设置4个点......。

现在我必须扭曲OrderModify()。那么为什么我们需要在OrderSend()中设置止损?

 
ALex2008 >> :

如果我有一个H4的MTS,我怎么做分钟的测试呢...?

为什么不呢?

对最小的TF的测试是按以下方式进行的

你像这样写调用(比如说)

   wpr[1] =   iWPR ( Symbol(), 10, PERIOD_H4, 1 );
   wpr[2] =   iWPR ( Symbol(), 20, PERIOD_H4, 1 );
   wpr[3] =   iWPR ( Symbol(), 40, PERIOD_H4, 1 );
   wpr[4] =   iWPR ( Symbol(), 60, PERIOD_H4, 1 );


如果你在一分钟内完成测试,将是最有效和最正确的。

它将是最正确的!

---

不幸的是,你不能在ticks上这样做!因为在MT4测试器中没有tick历史。


---

马上学会写TF!然后你的EA就不会关心它是在什么TF上运行的了。

写参数而不是写常量是合理的--为了使代码更简单,感知更清晰,我把常量放在了

 

尤里)我不是这方面的专家...)至少描述一下它对我的意义。wpr[1] = iWPR( Symbol(),10, PERIOD_H4, 1 ) 。

 
ALex2008 >> :

尤里)我不是这个行业的专家......)至少描述一下它的含义。 wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 ) 。

iWPR是一个内置指标

double iWPR( string symbol, int timeframe, int period, int shift)
Larry Williams的百分比范围指标计算。
参数:
符号 - 仪器的符号名称,该指标将根据其数据进行计算。NULL表示当前符号。
时间框架--时期。可以是图表中的一个时期。0表示当前图表的周期。
period - 计算指标的周期(条数)。
shift - 从指标缓冲区收到的数值的索引(相对于当前条形图向后移动指定数量的时间)。


例如:
if(iWPR(NULL,0,14,0)>iWPR(NULL,0,14,1)) return(0);

它在FAQ中有描述,请看

wpr[...]是一个数组,其中汇总了不同时期的每个指标的结果。

( 你可以给这个数组起任何你想要的名字)

double wpr[5] ;

wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 ) 。
wpr[2] = iWPR ( Symbol(), 20, PERIOD_H4, 1 ) 。
wpr[3] = iWPR ( Symbol(), 40, PERIOD_H4, 1 ) 。
wpr[4] = iWPR ( Symbol(), 60,PERIOD_H4, 1 ) 。


我只是展示了一个不同时期的电话...

我们的想法是在指标中加入一个周期,这样你就可以在任何TF上测试它。

 
如果这个想法是在指标中一次性写上一个时期!这样你就可以在任何TF上测试,我明白了......-专家顾问没有指标,它只有H4蜡烛(作为一个指标)。-TF我现在会尝试在代码中到处考虑,然后你可以在任何TF上测试)
 

决定对一个开放的订单进行修改...

就在OrderSend 之后

      if (OrderSelect(0,SELECT_BY_POS)==true)
        if (OrderType()==OP_BUY)
          OrderModify(OrderTicket(),OrderOpenPrice(), Stop, Take, colorBaySell);


日志中出现了一个错误。

OrderModify函数的无效票据
11:43:54 2005.01.26 13:12 EURUSD: OrderModify error 4051
请告知有什么问题?

 

新的停止值必须按以下方式设置。:

OrderModify(OrderTicket(), OrderOpenPrice(), Bid- Stop*Point,.....
                                                    
新的止损点设置在哪里 - 以点为单位(整数)。
 

用于OrderClose的MarketInfo()是否需要用于OrderModify?