首页 股票代码 正文

股票程序化交易(股票程序化交易接口)

wx头像 wx 2022-05-25 23:57:55 6
...

当年,要不是因为外汇买卖范畴渠道的各种暗淡,我估计会一向斗争在外汇和黄金种类上,外汇程序化买卖也不会停下脚步。

假设外汇范畴和股票及期货能够实在处于一个公正的线上,我必定会挑选做外汇买卖。不管是成交机制,仍是买卖准则,买卖时刻,外汇买卖都大大优于股票买卖及期货买卖。

且不管简直24小时工作的外汇走势能供给更多的买卖时机,单单是单子成交方面,外汇都是远胜于股票及期货。例如,我从前的期货程序化单子或许人工挂单,价格都到过目标价格几回了,但便是无法成交。这些是成交机制的问题,期货是促成成交机制,你要成交一个买单,必须有一个对应的卖单促成到了才干成交。同一个点位假设你的请求前面还有较多的请求(比方前面现已有一万手),你要等前面的一万手都成交了才干轮到你这笔请求成交。

这就造成了依据信号有时分该进的单没进到,该出的单没出掉,或许没有能够依照既定方案及点位来成交,这对买卖产生必定的影响。

关于期货程序化而言,这个促成成交的机制,也会导致期货程序化的测验和实盘作用无法完全一致。例如测验的时分体系只会依照信号去指示出开仓点位和平仓点位,并核算出点位盈亏成果。但测验的成果不会考虑实盘买卖的时分信号能否成交和怎么成交,所以实盘的成果和测验的成果是有或许不相同的。

依照促成成交机制,假设实盘中呈现买卖信号,体系天然会把开仓或平仓请求宣布去,可是假设动摇较剧烈,有或许还没轮到自己的请求单促成成交,价格就现已变动了,终究导致实盘没有单子成交,或许哪怕设置了短时刻若不成交就撤回原请求偏从头发新的请求,终究的成交也脱离了本来信号的志愿和点位。

我的程序化就经历过试过买卖信号尽管出来了,买卖程序也把开仓或平仓的请求宣布去了,但终究没有实在单子能够成交的状况。当然这仅仅期货程序化的问题之一,而期货程序化的问题并不止于这一个。

可是做过外汇的朋友都知道,外汇基本上只关键位抵达了单子必定成交。当年我挂外汇EA,没有遇到过有买卖信号出来但无法按信号成交的工作。

做股票和期货,最大优胜的当地,便是资金安全肯定有确保。外汇买卖的各方面都挺好,惋惜全部渠道(在咱们大陆)都没有资金安全的保证。比照之下,仍是资金安全最重要,不是吗?

假设未来咱们做外汇能够定心,我天然还会从头做起外汇来。今日讲一下外汇MT4编写买卖EA而且测验的大致进程。

第一步,翻开MT4,找到MQ言语修改器创立一个新EA,若有不会的朋友可参阅下面两个操作即可。

在软件上方找到修改器按钮(新订单按钮周围那个像书本相同的按钮),点击翻开后创立一个EA。也能够在导航器中找到EA买卖一栏,鼠标右键挑选“MetaEtidor”创立一个EA。

第二步,依照MQL导向,一向“下一步”直到完结。这进程只需求自己给EA起个姓名就能够了,比方下面我树立一个叫“双均线”的EA。

第三步,在EA修改器里修改买卖公式。

MT4的EA编写大约(默许)有以下几个部分,都是英文和代码,详细意思不逐个深究,感爱好的朋友请材料查找相关材料去学习即可。

写代码并不是好玩的事,除非有爱好或许很酷爱。我写代码水平不可,仅仅为了要搞自己需求的EA才自学了点皮裘。

关于自己现已有代码的朋友,能够把修改区域清空,并仿制自己的代码进去就能够了。代码编写完结后,点击上方“编写”打钩按钮,让软件检测是否有代码过错。假设有过错,会在底下有阐明,假设无误,会显现没过错(0 errors)

我自己有个双均线穿插的EA代码,这儿共享出来,仅供参阅。

//+------------------------------------------------------------------+

//| 双均线.mq4 |

//| |

//+------------------------------------------------------------------+

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "metaquotes.net"

//--- input parameters

extern int shortp=10;

extern int longp=20;

extern double Lots=0.1;

int Crossed (double line1 , double line2)

{

static int last_direction = 0;

static int current_dirction = 0;

if(line1>line2)current_dirction = 1; //up

if(line1<line2)current_dirction = 2; //down

if(current_dirction != last_direction) //changed

{

last_direction = current_dirction;

return (last_direction);

}

股票程序化交易(股票程序化交易接口)

else

{

return (current_dirction);

}

}

int start()

{

int cnt, ticket, total;

double shortma, longma;

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

shortma = iMA(NULL,0,shortp,0,MODE_SMA,PRICE_CLOSE,1);

longma = iMA(NULL,0,longp,0,MODE_SMA,PRICE_CLOSE,1);

//开仓----------------------------------------------------------------

int isCrossed = Crossed (shortma,longma);

total = OrdersTotal();

if(total < 1)

{

if(isCrossed == 1)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"My MA",12345,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

if(isCrossed == 2)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"My MA",12345,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

}

return(0);

}

//平仓-------------------------------------------------------------------------------------------------------

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // long position is opened

{

if(isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);// close position

return(0); // exit

}

}

if(OrderType()==OP_SELL) // go to short position

{

if(isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);// close position

return(0); // exit

}

}

}

}

return(0);

}

代码里均线参数是10和20并非表明这两数字是最好的参数,实际上也没有哪个是最好的参数,任何目标,任何参数,都只能够习惯某个种类或许某个时期或许某种类型的走势,不或许应对得了市场上全部行情。

任何目标,一旦你固定为某个参数,或许又有人以为你是参数拟合。所以声明一下,参数是能够自在改动的,请在上面自己修改为自己需求的参数即可。

第四步,把编写好的EA加载到走势图里。

导航器的EA买卖栏里自身现已有默许的两个EA,一个是MACD目标,一个是均线Moving目标。当你编写好自己的EA,它会呈现在导航器的EA买卖栏目下。

鼠标对着EA点右键挑选“附加到图标”,或许鼠标直接拖到走势图上。在拖进去的进程中,记住在EA特点框“常用”项下的“答应实时主动买卖”打钩。确认后,EA圆脸就呈现在走势图的右上角方位了。

第五步,对EA进行测验。操作如下:

软件上方点“显现”,再点“EA买卖测验”调出测验设置终端。挑选好需求测验的EA、测验的买卖种类、周期盘面等等,就能够点“开端”按钮进行测验了。

最好是把“复盘显现”的勾给打上,这样能够看到复盘测验的进程。

复盘测验的进程能够看出信号是否依照预订的规划进行,复盘显现后边的速度条能够快可慢,依据个人需求。能够一边看复盘测验进程,一边看净值图,以便调查什么样的行情会让产生盈余,什么样的行情会导致资金亏本回撤。

假设需求测验跨度很长的周期,需求先下载该种类更前期的前史数据。在“东西”中的“前史数据中心”里边下载即可。

外汇软件中,MT4现在依然是比较盛行的,但盛行的主角迟早会转移到MT5上,主张做外汇的朋友多多学习MT5,究竟两者的EA代码编写规矩不相同。

本次的内容就到这儿吧,需求学习的朋友能够把文章保藏起来渐渐看。重视我,别跟丢了。

本文地址:https://www.changhecl.com/153147.html

退出请按Esc键