期货入门基础知识,818期货学习网

通知公告
期货短线交易技巧图文资料个股期权基础知识券商类超级大公司开户,手续费加1分钱期权大爆发,仿真账号申请通道期货最新手续费期货最新保证金一手期货多少钱一手50ETF期权多少钱

第三节 机械交易是个人的爱好,系统交易是成功的前提(2)

2014-10-06 20:40 来源:818期货学习网



有了以上的初步了解,下面开始进行EA程序基本结构的分析:

①start( )函数是最重要的执行部分,每出现一个价格,此函数都自动执行一次,所以主要的逻辑结构都在这个函数里。

②程序的基本流程都是按照以下步骤进行,我们先牢牢记住这个结构,然后再对号入座去理解程序。

先判断当前自身的仓位状态,因为start函数是循环运行的,所以中间的每个步骤都会使用start函数,因此,当函数开始的时候我们首先要通过MT4.0的仓位操作函数获得当前的仓位状态,并进一步根据状态进行不同分支的计算。

程序开始的以下两个部分不重要,简单说一下:

if(Bars<100)

{

Print(“Bars less than 100”);

return(0);

}

以上是说如果当前图形的K线个数少于100则不进行运算,直接返回。这种情况一般不会出现,所以我们自己写程序的时候可以不写这部分。

if(TakeProfit<10)

{

Print(“TakeProfit less than 10”);

return(O);//check TakeProfit

}

以上这段意思是参数TakeProfit移动止损点数的设定如果小于10点,则发出报警,并返回不进行运算。这是为了防止乱设数值,引起后面计算的错误。关于这部分,如果程序只是我们自己使用,估计不会犯这种低级错误,所以写程序的时候也可以忽略不写。

下面这段:

MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,O);

MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);

SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

MaCurrent=iMACNULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);

MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CWSE,1);

这部分是变量赋值部分,等于提前计算出为后面用到的当前MACD数值以及MA数值,这样提前写出来,在后面直接使用赋值后的变量就很清楚了,是一个很好的编程习惯。

再下面开始最主要的程序逻辑部分,首先遇到的就是我们上面说过的通过仓位函数获得当前状态的部分。

total=OrdersTotal();通过函数获得当前持仓单的个数,如果持仓单个数小于1,则说明是空仓状态,那么就进行多头和空头的入场条件判断,如果满足条件则进行入场。代码如下:

if(total<1)

{

//no opened orders identified

if(AccountFreeMargin()<(1000*Lots))这句是判断保证金余量是否够下单,如果不够则直接返回,并不进行后续入场判断。

{

Print(“We have no money.Free Margin=”,AccountFreeMargin());

return(0);

}

//check for long position(BUY)possibility

if(MacdCurrent<0 macdcurrent="">SignalCurrent && MacdPrevious(MACDOpenLevel*Point)&& MaCurrent>MaPrevious)这句就是多头入场条件的判断,可以看到两个技巧:一是交叉的数学意思是“前面在下后面在上”或反之;二是MA向上趋势的数学意思是当前K线的MA大于上一K线的MA数值。

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,“macd sample”,1638,0,Gree);这是入场语句,记得一定要判断入场是否成功,因为很多服务器由于滑点或者服务器价格变动而不能入场成功,所以,要判断入场不成功后作出提示。ticket就是订单入场是否成功的标记。

if(ticket>0)大于0说明入场成功

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print(“BUY order opened:”,OrderOpenPrice());

}

else Print(“Error opening BUY order:”,GetLastError());入场不成功,输出不成功的系统原因。

return(0);这里为什么使用了返回,是因为一种情况是入场成功,那么直接返回等待下一个价格到来的时候再执行start函数;另一种情况是入场不成功,则返回也是等待下一个价格到来的时候在此执行入场操作。

{

下面就是空单入场的判断了,大家自己对照观看即可。

// check for short position(SELL) possibility

if(MacdCurrent>0 && MacdCurrentSignalPrevious && MacdCurrent>(MACDOpenLevel*Point)&& MaCurrent<MaPrevious)

{

ticket=OrderSend (Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,“macd sample,”16384,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);

}

定量系统交易的最简单例子我们见过了,下面来看一个最简单的定性系统交易的实例,这是著名的“缠中说禅理论”的交易流程,用于国内A股买卖,请看图1-9。在整个流程中,“进出加减”都有完备的条件和步骤,但是基本没有定量描述,大多是涉及形态的定性要求。

看完机械交易的实例和定性交易的实例,最终我们要回到本小节的主题上:你可以不采用机械交易,但一定要采用系统交易,因为机械交易不等于系统交易,系统交易还包括定性交易,本书涉及的主要内容是系统交易,偏向于定性交易。

声明:
如本站内容不慎侵犯了您的权益,请联系邮箱:1317369179@qq.com 我们将迅速删除。
本文来自网络,不代表【818期货学习网】立场,转载请注明出处:http://www.818qihuo.com/waihui/jiaoyisanbuqu/5893.html
期货手续费【与交易所同步更新】
期货保证金【与交易所同步更新】
上一篇:第二节 如何走出困境:整体观念和系统性交易 下一篇:第四节 计划你的交易,交易你的计划:分析、计划、执行和总结

联系我们|投稿中心|广告合作|网站地图|免责声明

浙公网安备 33011002014220号