EA编程:自动下单设置
2022-10-22 09:25:51
more 
995

  EA编程的自动下单交易是怎么处理的,这节课我们就来好好学习下MQL4语言中下单函数OrderSend的使用。

  1 OrderSend

  字面意思,订单发送,这个函数的功能就是用来向交易服务器发送一个下单指令,返回值为下单成功后的单子的订单编号。

下面就是一个下单的例子程序

  将这个EA加载到任何一张k线图上去,当价格跳动的时候,我们可以看到,EA下了一张多单。

  而价格再次跳动的时候,EA并没有一直下单,是什么原因呢?观察下源码,你会看到我加了一个布尔型变量isgo,这个变量的初始值为true,下单成功后,就赋值为false,而当isgo为false的时候,下单函数不执行,所以,这个isgo就控制了程序的流程不再进入到if语句里面。

  如果要做空呢?如果要挂单呢?我们可以尝试着去修改下单函数:

  int ticket=OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"My order",16384,0,clrRed);

  int ticket=OrderSend(Symbol(),OP_BUYLIMIT,1,Ask+300*Point,3,0,0,"My order",16384,0,clrGreen);

  2将手数改为外部变量

  一般来说,交易手数都不会直接写死在源码里面,而是拿出来,让使用EA的人可以随意设置。

  可以看到,在EA源码的前面,增加了一行:input double lots=0.1;而后面的OrderSend函数的第三个参数,之前的数字1,换成了变量lots。意思就是交易手数取值为lots的数值。lots变量前面的double限定lots为双精度类型,也就是允许使用带小数点的数据。double最前面的input,指定这个变量为外部变量,可以在EA的属性里面修改(即使没有源码也可以修改)。

  看看,为什么我们的变量是lots,但是在EA的输入参数里面显示的却是“交易手数”,因为我们在源码的第9行,指定了EA属性为严格模式。#property strict

  在严格模式下input后面的变量将会显示为本行后面的注释“//”标记后面的字符。


Kenyataan:
Kandungan artikel ini tidak mewakili pandangan laman web FxGecko. Kandungan adalah untuk rujukan sahaja dan bukan merupakan nasihat pelaburan. Pelaburan adalah berisiko, pilih dengan teliti! Jika terdapat sebarang isu berkaitan kandungan, hak cipta, dsb., sila hubungi kami dan kami akan membuat pelarasan secepat mungkin!

Artikel Berkaitan

您正在访问的是FxGecko网站。 FxGecko互联网及其移动端产品是中国香港特别行政区成立的Hitorank Co.,LIMITED旗下运营和管理的一款面向全球发行的企业资讯査询工具。

您的IP为 中国大陆地区,抱歉的通知您,不能为您提供查询服务,还请谅解。请遵守当地地法律。