初学者常见10大问题---你可以解释几个?

 

初学者常见10大问题---你来解释

一、 Bars 的问题:为何好多程序一开始就要检测bars, 有何用?而为何要检测bars<100 。那么正常图表上的bars 是多少呢?

二、 Ticket 的问题。在程序中经常遇到这个int ticket, 可见其重要程度。但是在编程说明中,从没有它的使用说明?至少它的地位比ask, close 之类差多了。但是它的使用率实在太高了。

三、 Ordersend(), int 型?明明是一个“操作类”的函数嘛,应该和bool ordeselect 等一样。那么这个ordersend()返回的什么值。若有多个ordesend()运行,它返回的又怎么排列。

四、 定单编号是什么?它就是ticket ?那么order_id呢?如何得知所下定单的编号?我有好多个定单,我如何找到指定的定单?

定单索引又是什么?如bool OrderSelect( int index, ……..)这个index是?

定单指定编号又是什么?

五、 Init()这东西可不要吗,有后果吗?要了又有什么好处吗?

Deinit ()这东西呢?

六、 休市了或者是无法连线上网如何测试?

1、 当然我们用mt4编译没问题。

2、 如果我想试运行一下程序,该怎么办?

3、 休市了或者是不连线时,可以用历史数据验证吗?

七、 挂单的问题?如何开一个挂单,为何很少看到ea开挂单?

那么先行开出的挂单比既时开的市价单,是不是执行更快一些?

八、 开出的单子,如果设置了止盈位或止损位自动平仓,程序它知道单子已平了吗?是让单子自动平仓,还是到达价位后由程序平仓更好?

九、 开了一个单子,不想再开第二个,怎么办?为何写出的代码会不停的开单?

十、 在一定条件下,干脆让程序停止执行!这个怎么写。难道是一个return(0)吗,似乎无效。

 

好东西

 

1、之所以考量Bars数量个人理解是为了判断是否有足够的历史数据用于计算指标或者相应的历史分析,具体数值根据指标和EA的情况综合考虑,bars<100 估计是东抄抄西抄抄而来的。对于正常的图表上的bars数,最大取决于选项中“图表中最多历史价位柱数”这个设置值。而最小值取决于从交易服务器拿到的数据数。

2、对于int ticket,这个也属于东抄抄西抄抄而来的。前面的int已经表明这是一个用户自定义的变量。这个变量之所以叫ticket因为编写者用它来存放临时的订单编号。完全可以把这个名字换一个,不影响程序的运行。

3、对于Ordersend()函数的返回值,函数说明中提到操作成功返回订单的编号,即2问题中的ticket,而ticket的值是整型的因此这个函数定义为int函数,是受返回值得需要。

4、对于订单编号,就OrderSelect函数来说有两类。

(1)订单编号:SELECT_BY_TICKET,由服务器给出交易者无法指定和改变并且唯一,多数不连续。

(2)订单索引:SELECT_BY_POS ,根据当前账户订单数量(正交易或已了结)顺序排列,并且连续。受当前mt4账户订单排列顺序规则影响。并且,会随着交易订单的了结而改变。

对于查找指定的订单,需要根据不同的条件,通过遍历订单列表而实现。不建议用ticket值指定遍历。

5、对于这两个函数Init()是初始化函数,在指标和EA加载前的时候运行一次,做初始准备工作,例如创建mt4全局变量,定义指标数组空间等

Deinit ()是卸载函数,在移除指标和EA的时候运行一次,做些收尾工作,例如删除指标产生的对象,清除mt4全局变量

6、复盘功能是一个解决办法。

7、EA根据需要开挂单,挂单同样由OrderSend函数产生,需要设置此函数的cmd参数。

挂单的执行在交易商的服务器上来完成,不受客户端网络响应的影响。如果你的网络连接状况较差,挂单是快些。

8、指定的订单找不到了,就说明被平仓了。至于怎么评好,看你自己的规则了。

9、在开单前根据一定规则查找当前信号的开单,如果已经开了,就不开。

10、让程序停止执行需要让程序的start()函数停止,因此return(0)要在start()中。根据我的经验,是可行的。

原因: