文华期货自动化交易模型编写教程
期货交易模型编写经典教程
期货交易模型编写经典教程一、确定交易目标和策略在编写期货交易模型之前,首先需要明确交易目标和策略。
交易目标可以包括盈利目标、风险容忍度等,而交易策略则是实现这些目标所采取的具体方法,比如均值回归策略、趋势跟踪策略等。
一个有效的交易模型需要基于明确的交易目标和策略进行编写。
二、选择编程语言和平台编写期货交易模型需要选择合适的编程语言和交易平台。
常见的编程语言包括Python、C++、MATLAB等,而交易平台可以选择主流的期货交易软件,如CTP、交易所提供的API等。
选择合适的编程语言和平台是编写期货交易模型的基础。
三、数据获取和处理在编写交易模型之前,需要获取和处理相关的数据。
期货交易所提供了历史交易数据和实时行情数据,可以通过交易平台的API获取。
同时,还可以使用第三方数据供应商提供的数据源,如财经网站、数据服务提供商等。
获取到的数据需要进行清洗、整理和分析,以便后续模型的建立和优化。
四、模型建立和参数调优基于交易策略,可以建立相应的交易模型。
模型的建立需要考虑市场的特点、交易标的的特征等因素,可以使用统计学方法、数学模型、机器学习算法等进行建模。
同时,还需要对模型的参数进行调优,以提高交易模型的稳定性和盈利能力。
五、回测和优化在模型建立和调优完成后,需要对模型进行回测和优化。
回测是通过历史数据模拟交易的过程,可以评估交易模型的盈利能力和风险承受能力。
回测过程中可以进行参数敏感性分析、风险控制优化等,以优化交易策略和模型的参数设置。
六、实盘交易和监控模型经过回测和优化后,可以进行实盘交易和监控。
实盘交易是将交易模型应用到实际的交易中,进行实时交易操作。
同时,还需要进行实时监控和风险控制,及时调整和优化交易策略,以适应不同市场环境的变化。
总结起来,编写期货交易模型需要经过确定交易目标和策略、选择编程语言和平台、数据获取和处理、模型建立和参数调优、回测和优化、实盘交易和监控等步骤。
在每一步都需要进行细致和扎实的工作,以实现一个有效且盈利能力强的交易模型。
[转载]文华财经期货指标模型源码
[转载]文华财经期货指标模型源码原文地址:文华财经期货指标模型源码作者:飘云SS:=VALUEWHEN(DATE<>REF(DATE,1),REF(SETTLE,1));ZT:=SS*(1+0.058);DT:=SS*(1-0.058);MA5:=MA(C,5);MA20:=MA(C,20);MA67:=MA(C,67);A:=MA67-MA5;B:=MA20-MA5;((A<0&&CROSS(MA5,MA20))||CROSS(MA5,MA67))&&TIME <1452,BK;((A>0&&CROSS(MA20,MA5))||CROSS(MA67,MA5))&&TIME <1452,SK;((C>MA67&&CROSS(MA20,MA5))||(C<MA67&&CROSS(MA 5,MA20))||C>=ZT||C<=DT),SP;CROSS(MA67,MA5),SP;((C>MA67&&CROSS(MA20,MA5))||(C<MA67&&CROSS(MA 5,MA20))||C>=ZT||C<=DT),BP;CROSS(MA5,MA67),BP;HH:=VALUEWHEN(DATE<>REF(DATE,1),H);LL:=VALUEWHEN(DATE<>REF(DATE,1),L);NN:=BARSLAST(DATE<>REF(DATE,1));NN>=1&&CROSS(H,HH)&&H>MA67&&H>MA5&&MA5> MA67&&COUNT(CROSS(H,HH)&&H>MA5&&H>MA67&&MA5 >MA67,NN)=1,BK;NN>=1&&CROSS(LL,L)&&L>MA67&&MA5>MA67&&COU NT(CROSS(LL,L)&&L>MA67&&MA5>MA67,NN)=1,SP;NN>=1&&CROSS(LL,L)&&L<MA67&&L<MA5&&MA5<MA 67&&COUNT(CROSS(LL,L)&&L<MA5&&L<MA67&&MA5<MA6 7,NN)=1,SK;NN>=1&&CROSS(H,HH)&&H<MA67&&MA5<MA67&&C OUNT(CROSS(H,HH)&&H<MA67&&MA5<MA67,NN)=1,BP;C<=BKPRICE-400,SP;C>=SKPRICE+400,BP;TIME>=1454,BP;TIME>=1454,SP;《超级短线》指标源码:H:=HIGH;L:=LOW;A:=IF(HIGH>=REF(HIGH,1)&&HIGH>=REF(HIGH,2)&&HIGH >=REF(HIGH,3)&&HIGH>=REF(HIGH,4)&&HIGH>=REF(HIGH,5),LOW,0);B:=IF(LOW<=REF(LOW,1)&&LOW<=REF(LOW,2)&&LOW<= REF(LOW,3)&&LOW<=REF(LOW,4)&&LOW<=REF(LOW,5),HIGH,888888);P1:=IF(A>REF(L,1),REF(L,1),0);P2:=IF(A>REF(L,2)&&A<=REF(L,1),REF(L,2),0);P3:=IF(A>REF(L,3)&&A<=REF(L,1)&&A<=REF(L,2),REF(L,3),0 );P4:=IF(A>REF(L,4)&&A<=REF(L,1)&&A<=REF(L,2)&&A<=R EF(L,3),REF(L,4),0);P5:=IF(A>REF(L,5)&&A<=REF(L,1)&&A<=REF(L,2)&&A<=R EF(L,3)&&A<=REF(L,4),REF(L,5),0);P6:=IF(A>REF(L,6)&&A<=REF(L,1)&&A<=REF(L,2)&&A<=REF(L,3)&&A<=REF(L,4)&&A<=REF(L,5),REF(L,6),0);P7:=IF(A>REF(L,7)&&A<=REF(L,1)&&A<=REF(L,2)&&A<=R EF(L,3)&&A<=REF(L,4)&&A<=REF(L,5)&&A<=REF(L,6),REF(L,7), 0);P8:=IF(A>REF(L,8)&&A<=REF(L,1)&&A<=REF(L,2)&&A<=R EF(L,3)&&A<=REF(L,4)&&A<=REF(L,5)&&A<=REF(L,6)&&A<=R EF(L,7),REF(L,8),0);P9:=IF(A>REF(L,9)&&A<=REF(L,1)&&A<=REF(L,2)&&A<=R EF(L,3)&&A<=REF(L,4)&&A<=REF(L,5)&&A<=REF(L,6)&&A<=R EF(L,7)&&A<=REF(L,8),REF(L,9),0);P10:=IF(A>REF(L,10)&&A<=REF(L,1)&&A<=REF(L,2)&&A< =REF(L,3)&&A<=REF(L,4)&&A<=REF(L,5)&&A<=REF(L,6)&&A< =REF(L,7)&&A<=REF(L,8)&&A<=REF(L,9),REF(L,10),0);AA:=P1+P2+P3+P4+P5+P6+P7+P8+P9+P10;PP1:=IF(AA>REF(L,1),REF(L,1),0);PP2:=IF(AA>REF(L,2)&&AA<=REF(L,1),REF(L,2),0);PP3:=IF(AA>REF(L,3)&&AA<=REF(L,1)&&AA<=REF(L,2),REF (L,3),0);PP4:=IF(AA>REF(L,4)&&AA<=REF(L,1)&&AA<=REF(L,2)&& AA<=REF(L,3),REF(L,4),0);PP5:=IF(AA>REF(L,5)&&AA<=REF(L,1)&&AA<=REF(L,2)&& AA<=REF(L,3)&&AA<=REF(L,4),REF(L,5),0);PP6:=IF(AA>REF(L,6)&&AA<=REF(L,1)&&AA<=REF(L,2)&& AA<=REF(L,3)&&AA<=REF(L,4)&&AA<=REF(L,5),REF(L,6),0);PP7:=IF(AA>REF(L,7)&&AA<=REF(L,1)&&AA<=REF(L,2)&& AA<=REF(L,3)&&AA<=REF(L,4)&&AA<=REF(L,5)&&AA<=REF(L ,6),REF(L,7),0);PP8:=IF(AA>REF(L,8)&&AA<=REF(L,1)&&AA<=REF(L,2)&& AA<=REF(L,3)&&AA<=REF(L,4)&&AA<=REF(L,5)&&AA<=REF(L ,6)&&AA<=REF(L,7),REF(L,8),0);PP9:=IF(AA>REF(L,9)&&AA<=REF(L,1)&&AA<=REF(L,2)&& AA<=REF(L,3)&&AA<=REF(L,4)&&AA<=REF(L,5)&&AA<=REF(L ,6)&&AA<=REF(L,7)&&AA<=REF(L,8),REF(L,9),0);PP10:=IF(AA>REF(L,10)&&AA<=REF(L,1)&&AA<=REF(L,2)& &AA<=REF(L,3)&&AA<=REF(L,4)&&AA<=REF(L,5)&&AA<=REF (L,6)&&AA<=REF(L,7)&&AA<=REF(L,8)&&AA<=REF(L,9),REF(L, 10),0);AAA:=PP1+PP2+PP3+PP4+PP5+PP6+PP7+PP8+PP9+PP10;C:=VALUEWHEN(AAA>0,AAA);T1:=IF(B<REF(H,1),REF(H,1),0);T2:=IF(B<REF(H,2)&&B>=REF(H,1),REF(H,2),0);T3:=IF(B<REF(H,3)&&B>=REF(H,1)&&B>=REF(H,2),REF(H,3) ,0);T4:=IF(B<REF(H,4)&&B>=REF(H,1)&&B>=REF(H,2)&&B>= REF(H,3),REF(H,4),0);T5:=IF(B<REF(H,5)&&B>=REF(H,1)&&B>=REF(H,2)&&B>= REF(H,3)&&B>=REF(H,4),REF(H,5),0);T6:=IF(B<REF(H,6)&&B>=REF(H,1)&&B>=REF(H,2)&&B>= REF(H,3)&&B>=REF(H,4)&&B>=REF(H,5),REF(H,6),0);T7:=IF(B<REF(H,7)&&B>=REF(H,1)&&B>=REF(H,2)&&B>= REF(H,3)&&B>=REF(H,4)&&B>=REF(H,5)&&B>=REF(H,6),REF(H ,7),0);T8:=IF(B<REF(H,8)&&B>=REF(H,1)&&B>=REF(H,2)&&B>= REF(H,3)&&B>=REF(H,4)&&B>=REF(H,5)&&B>=REF(H,6)&&B> =REF(H,7),REF(H,8),0);T9:=IF(B<REF(H,9)&&B>=REF(H,1)&&B>=REF(H,2)&&B>= REF(H,3)&&B>=REF(H,4)&&B>=REF(H,5)&&B>=REF(H,6)&&B> =REF(H,7)&&B>=REF(H,8),REF(H,9),0);T10:=IF(B<REF(H,10)&&B>=REF(H,1)&&B>=REF(H,2)&&B> =REF(H,3)&&B>=REF(H,4)&&B>=REF(H,5)&&B>=REF(H,6)&&B>=REF(H,7)&&B>=REF(H,8)&&B>=REF(H,9),REF(H,10),0);BB:=IF((T1+T2+T3+T4+T5+T6+T7+T8+T9+T10)=0,888888, T1+T2+T3+T4+T5+T6+T7+T8+T9+T10);TT1:=IF(BB<REF(H,1),REF(H,1),0);TT2:=IF(BB<REF(H,2)&&BB>=REF(H,1),REF(H,2),0);TT3:=IF(BB<REF(H,3)&&BB>=REF(H,1)&&BB>=REF(H,2),RE F(H,3),0);TT4:=IF(BB<REF(H,4)&&BB>=REF(H,1)&&BB>=REF(H,2)&& BB>=REF(H,3),REF(H,4),0);TT5:=IF(BB<REF(H,5)&&BB>=REF(H,1)&&BB>=REF(H,2)&& BB>=REF(H,3)&&BB>=REF(H,4),REF(H,5),0);TT6:=IF(BB<REF(H,6)&&BB>=REF(H,1)&&BB>=REF(H,2)&& BB>=REF(H,3)&&BB>=REF(H,4)&&BB>=REF(H,5),REF(H,6),0);TT7:=IF(BB<REF(H,7)&&BB>=REF(H,1)&&BB>=REF(H,2)&& BB>=REF(H,3)&&BB>=REF(H,4)&&BB>=REF(H,5)&&BB>=REF( H,6),REF(H,7),0);TT8:=IF(BB<REF(H,8)&&BB>=REF(H,1)&&BB>=REF(H,2)&& BB>=REF(H,3)&&BB>=REF(H,4)&&BB>=REF(H,5)&&BB>=REF( H,6)&&BB>=REF(H,7),REF(H,8),0);TT9:=IF(BB<REF(H,9)&&BB>=REF(H,1)&&BB>=REF(H,2)&& BB>=REF(H,3)&&BB>=REF(H,4)&&BB>=REF(H,5)&&BB>=REF( H,6)&&BB>=REF(H,7)&&BB>=REF(H,8),REF(H,9),0);TT10:=IF(BB<REF(H,10)&&BB>=REF(H,1)&&BB>=REF(H,2) &&BB>=REF(H,3)&&BB>=REF(H,4)&&BB>=REF(H,5)&&BB>=R EF(H,6)&&BB>=REF(H,7)&&BB>=REF(H,8)&&BB>=REF(H,9),RE F(H,10),0);BBB:=TT1+TT2+TT3+TT4+TT5+TT6+TT7+TT8+TT9+TT10;D:=VALUEWHEN(BBB>0,BBB);UD:=IF(CLOSE>D&&REF(CLOSE,1)<=D,1,IF(CLOSE<C&&REF (CLOSE,1)>=C,-3,0));K:=VALUEWHEN(UD<>0,UD);G:=IF(K=1,C,D),COLORRED;POLYLINE(LOW>0,G,COLORYELLOW);G1:=VALUEWHEN(ISLASTBAR,G);DRAWNUMBER(LOW>0,G1,G1,0,COLORYELLOW);TMP:=-K;DRAWLINE(TMP>0.00001,HIGH,TMP>0.00001,OPEN,COLOR CYAN);DRAWLINE(TMP>0.00001,LOW,TMP>0.00001,CLOSE,COLOR CYAN);DRAWLINE(TMP<-0.00001,HIGH,TMP<-0.00001,CLOSE,COLORRED);DRAWLINE(TMP<-0.00001,LOW,TMP<-0.00001,OPEN,COLORRED);DRAWLINE(ABS(TMP)<0.00001,LOW,ABS(TMP)<0.00001,OP EN,COLORWHITE);DRAWLINE(ABS(TMP)<0.00001,HIGH,ABS(TMP)<0.00001,O PEN,COLORWHITE);STICKLINE(TMP>0,OPEN,CLOSE,COLORCYAN,0);STICKLINE(TMP<=0,OPEN,CLOSE,COLORRED,1);《PP》模型源码:TB:=IF(HIGH>REF(CLOSE,1),HIGH-REF(CLOSE,1)+CLOSE-LOW,CLOSE-LOW);TS:=IF(REF(CLOSE,1)>LOW,REF(CLOSE,1)-LOW+HIGH-CLOSE,HIGH-CLOSE);VOL1:=(TB-TS)*VOL/(TB+TS)/10000;VOL0:=DMA(VOL1,0.07);VOL2:=DMA(VOL1,0.01);SHORT:=VOL0-VOL2,COLORSTICK;MA1:=MA(SHORT,N);CROSS(SHORT,MA1),BPK;CROSS(MA1,SHORT),SPK;R系统模型源码[N,1.000000,20.000000,5.000000]TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));R:=MA(TR,10);Z:=REF(HHV(HIGH,N),1);D:=REF(LLV(LOW,N),1);Z-CLOSE>=2*R,SPK;CLOSE-D>=2*R,BPK;对于R系统模型,我个人进行了一下修改:TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));RR:=2*MA(REF(TR,1),10);ZZ:=HHV(REF(HIGH,1),N)-CLOSE;DD:=CLOSE-LLV(REF(LOW,1),N);CROSS(ZZ,RR),SPK;CROSS(DD,RR),BPK;以便于消除HHV和LLV带来的本周期的隐含未来函数影响。
文华财经wh8程序化半自动82版使用说明后台程序化工作机理当我们
文华财经wh8程序化半自动8.2版使用说明后台程序化工作机理当我们进行程序化交易的时候可能还想做点儿别的事情,比如看盘、做些技术分析、看些新闻等。
那么问题来了,程序化要占用K 线图,界面不能动,怎么做其他事情呢?这个时候,后台程序化的优势就体现出来了。
这种后台运行技术相当于在运行程序化时单独再开启一个工作台,和主窗口K线图之间相互独立,要看它时把它从后台调出来,不看时放到后台,它会自己运行。
类似于我们在手机上使用QQ、微信等软件,既可以用手机做别的事情,又不影响他们在后台运行。
随时使用随时调取并能够清楚的看到程序化运行的信号,交易信息才能算的上市真正的后台运行。
页面盒子一些基础的策略模型需要在每根K 线走完的时候按照出现的信号方向下单,我们把这种模型叫做收盘价模型。
页面盒子是运行收盘价策略模型的功能载体,适合需要部分手动辅助或结合图表分析的程序化用户。
多窗口运行程序化交易模型在盒子中运行程序化交易模型(不可含资金管理函数),当需要同时管理多品种时,可将各盒子平铺显示。
全自动运行的盒子由电脑独立完成全部交易过程,半自动运行的盒子会在模型满足下单条件时提示下单,交易者手动确认执行。
控制多账号程序化全自动交易将多个帐号与盒子关联后,当模型向盒子发出自动交易指令时,被关联的帐号即可下单。
提示:关联了盒子的交易帐号可设置不同的交易手数加载页面盒子隐藏程序化运行窗口在程序化功能模块中有一个关闭(X )按钮,这个关闭按钮就可以让该模块到后台运行。
页面盒子的后台运行按钮在盒子列表的右上角:调出程序化运行窗口 图中红框内按钮为页面盒子,点击这个按钮就可以把他们从后来调出。
它在软件的最左侧边栏处。
套利交易套利交易是指在两个不同的市场中,以有利的价格同时买进或卖出同种或本质相同的证券的行为。
投资组合中的金融工具可以是同种类的也可以是不同种类的。
在市场实践中,套利一词有着与定义不同的含义。
实际中,套利意味着有风险的头寸,它是一个也许会带损失,但是有更大的可能性会带来收益的头寸。
《期货交易软件之文华一键通交易系统操作指南附图(追价下单、超价下单、止损止盈、条件单)》
《期货交易软件之文华一键通交易系统操作指南附图(追价下单、超价下单、止损止盈、条件单)》《期货交易软件之文华一键通交易系统操作指南附图(追价下单、超价下单、止损止盈、条件单) 》中国最著名博客女王干群精美作品编号2016061601中国最著名博客女王干群精美作品编号2016061601 《期货交易软件之文华一键通交易系统操作指南附图(追价下单、超价下单、止损止盈、条件单) 》期货交易软件之文华一键通交易系统操作指南附图(追价下单、超价下单、止损止盈、条件单)一、如何下单方法:点击“买卖”按钮可以下单。
二、如何指定价格下单方法:在价格输入框输入价格,下单按钮会自动显示您输入的价格,然后点击“买入”或者“卖出”即可。
三、如何撤单方法:如需撤掉挂单,只要双击挂单列表中的挂单即可。
也可选择挂单合约后点击撤单按钮实现撤单四、如何平仓方法一:鼠标点击持仓,光标焦点会根据持仓方向落在“买卖”按钮上,点击“买卖”按钮即可平仓。
同时可以调节数量和价格微调按钮,对平仓手数和平仓价格进行设置方法二:鼠标点击持仓,点击“平仓”按钮进行平仓。
方法三:双击持仓,实现快速平仓。
五、如何设置默认下单手数方法:点击一键通交易软件中“数量”后面的“…”即可针对合约设置默认的下单手数六、如何使用追价下单?追价下单启动后,系统会自动撤单然后自动按照最新报价重新发出委托,直到完全成交。
方法:将一键通交易界面右上角的“追价下单”勾选即可。
可以点击“追价下单”后面的“…设置触发条件、追价范围和追价机制。
追价触发条件:以时间为条件,即下单后N秒钟没有成交就触发追价下单。
手动开仓、平仓追价范围:系统可以对手动下单设置追价范围,如果价格变化超过设置的追价范围,就停止追价。
追价机制:即对追价触发自动发出委托的委托价格进行设置。
对价即对买价卖,对卖价买。
挂价即对买价买,对卖价卖。
手动下单时如果执行对价操作,则在追价时执行对价中的设置进行追价。
例:某合约买价为2000,卖价为2001。
文华期货自动化交易模型编写教程
文华期货自动化交易模型编写教程自动化交易模型是一种利用计算机程序进行交易决策和操作的交易方式,它可以根据事先设定的规则和策略,在不需要人工干预的情况下执行交易。
文华期货是一家国内知名的期货公司,其交易软件提供了编写自动化交易模型的功能,下面是一个关于如何编写文华期货自动化交易模型的教程。
1.确定交易策略在编写自动化交易模型之前,首先需要确定你的交易策略。
交易策略是指根据市场的变化和交易者的预期制定的一系列操作规则,可以是技术指标的判断、基本面数据的分析,或者是一些特殊的交易信号。
你可以根据自己的交易经验和市场分析来确定适合自己的交易策略。
2.学习文华期货交易API文华期货提供了一套API(Application Programming Interface)来支持自动化交易模型的编写和执行。
你需要学习这些API的使用方法,了解如何连接到交易软件,获取市场数据,以及如何进行交易操作。
文华期货的官方网站和交易手册中可能会提供相关的文档和示例代码,你可以参考这些资料进行学习。
3.编写交易模型在了解了API的使用方法之后,你可以开始编写自己的交易模型。
根据你确定的交易策略,你可以编写一些逻辑判断和操作指令,来实现你的交易决策。
比如,你可以通过API获取最新的行情数据,在特定的条件下执行买入或卖出操作。
4.测试和优化完成交易模型的编写后,你需要对其进行测试和优化。
你可以使用历史数据来回测你的交易模型,看看它在不同市场条件下的表现如何。
通过回测,你可以找出模型的优点和不足之处,并对其进行相应的调整和优化。
5.实盘运行在进行了充分的测试和优化之后,你可以将交易模型部署到实盘上运行。
在运行过程中,你需要密切关注市场的变化和模型的表现,及时进行调整和修改。
总结:编写文华期货自动化交易模型需要以下几个步骤:确定交易策略、学习文华期货交易API、编写交易模型、测试和优化以及实盘运行。
通过不断的实践和经验积累,你可以开发出一个稳定、高效的自动化交易模型,为你的交易增添一份智能和便利。
文华财经程序化交易
1、趋势转变如何表示?以均线拐头为例:MA10:=MA(CLOSE,10);{定义10周期均线}MA10>REF(MA10,1)&&REF(MA10,1)>REF(MA10,2)&&REF(MA10,3)>REF(MA10,2)&&R EF(MA10,4)>REF(MA10,3);{表示上拐}MA10<REF(MA10,1)&&REF(MA10,1)<REF(MA10,2)&&REF(MA10,3)<REF(MA10,2)&&R EF(MA10,4)<REF(MA10,3);{表示下拐}2、交*(金*/死*)如何表示?以均线交*为例:MA5:=MA(CLOSE,5);{5个周期收盘价的简单移动平均} MA10:=MA(CLOSE,10);{10个周期收盘价的简单移动平均} MA20:=MA(CLOSE,20);{20个周期收盘价的简单移动平均} CROSS(MA10,MA20),BK;{当MA10上穿MA20时,发出买入开仓交易指令} CROSS(MA10,MA5),SP;{当MA10上穿MA5时,发出卖出平仓交易指令} CROSS(MA20,MA10),SK;{当MA20上穿MA10时,发出卖出开仓交易指令} CROSS(MA5,MA10),BP;{当MA5上穿MA10时,发出买入平仓交易指令}3、价差如何表示?以最新价和均线价差为例: MA5:=MA(CLOSE,5);{5个周期收盘价的简单移动平均} MA10:=MA(CLOSE,10);{10个周期收盘价的简单移动平均}CROSS(MA10,MA5)||(CLOSE-MA5)>8,SK;{10周期均线上穿5周期均线或者收盘价与5周期均线的差值大于8时,发出卖出开仓交易指令} (MA5-CLOSE)>6,BP;{5周期均线与收盘价的差值大于6时,发出买入平仓交易指令}CROSS(MA5,MA10)||(MA5-CLOSE)>8,BK;{5周期均线上穿10周期均线或者收盘价与5周期均线的差值大于8时,发出买入开仓交易指令} (CLOSE-MA5)>6,SP;{收盘价与5周期均线的差值大于6时,发出卖出平仓交易指令}{{}内为文字说明,编写模型时不用写出}4、如何在模型中限制开平仓时间?MA5:=MA(CLOSE,5); {定义5周期的简单移动平均线}MA10:=MA(CLOSE,10); {定义10周期的简单移动平均线}TIME>=0905&&CROSS(MA5,MA10),BK;{在9点05分后出现5周期线金*10周期线后买开} CROSS(TIME,1457),BP;{当时间到14点58分时自动发出买平指令} TIME>=0905&&CROSS(MA10,MA5),SK;{在9点05分后出现5周期线死*10周期线后卖开} CROSS(TIME,1457),SP;{当时间到14点58分时自动发出卖平指令}5、KDJ模型雏形RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;{定义RSV}K:=SMA(RSV,M1,1); {定义K} D:=SMA(K,M2,1); {定义D} J:=3*K-2*D; {定义J} J<30&&CROSS(K,D),BPK;{J值小于30并且K、D金*,买平并买开}J>70&&CROSS(D,K),SPK; {J值大于70并且K、D死*,卖平并卖开}6、MACD模型雏形DIFF := EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);{定义DIFF}DEA := EMA(DIFF,M);{定义DEA}(DIFF<0)&&(DEA<0)&&(CROSS(DIFF,DEA)),BPK;{DIFF小于0并且DEA小于0并且DIFF上穿DEA,买平并买开}(DIFF>0)&&(DEA>0)&&(CROSS(DEA,DIFF)),SPK;{DIFF大于0并且DEA大于0并且DIFF下穿DEA,卖平并卖开}7、MTM模型雏形MTM:=CLOSE-REF(CLOSE,N);{定义MTM} CROSS(MTM,0),BPK;{MTM上穿0轴,买平并买开} CROSS(0,MTM),SPK;{MTM下穿0轴,卖平并卖开}8、RSI模型雏形LC:=REF(CLOSE,1);{定义LC}RSI1:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)*100;{定义RSI1} RSI2:=SMA(MAX(CLOSE-LC,0),M,1)/SMA(ABS(CLOSE-LC),M,1)*100;{定义RSI2} REF(RSI1,1)<40&&CROSS(RSI1,RSI2),BPK;{上一个周期的RSI1<40并且RSI1上穿RSI2,买平并买开} REF(RSI1,1)>60&&CROSS(RSI2,RSI1),SPK;{上一个周期的RSI1>60并且RSI1下穿RSI2,卖平并卖开}9、WM模型雏形RSV:= (CLOSE-HHV(HIGH,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;{定义RSV} LWR1:=SMA(RSV,3,1);{定义LWR1} LWR2:=SMA(LWR1,3,1);{定义LWR2} CROSS(LWR1,LWR2),BPK;{LWR1上穿LWR2,买平并买开}CROSS(LWR2,LWR1),SPK;{LWR1下穿LWR2,卖平并卖开}10、SAR模型雏形SARLINE:=ABS(SAR(N,STEP,MVALUE));{定义SARLINE}CROSS(CLOSE,SARLINE),BPK;{最新价上穿SARLINE,买平并买开}CROSS(SARLINE,CLOSE),SPK;{最新价下穿SARLINE,卖平并卖开}我所说的解决信号反复问题,是指那种K线运行中途交易信号来回反复的问题,K线走完之后信号即固定下来,也就是收盘价模型的信号在K线中途反复现象。
文华公式编写
CLOSE>600&&CROSS(D,K),SKBK;{当价差大于600并且D上穿K时,卖出开仓前一品种,买入开仓后一品种}
CROSS(400,CLOSE)||CROSS(K,D),BPSP;{当价差下穿400或者K上穿D时,买入平仓前一品种,卖出平仓后一品种}
RSV:=(CLபைடு நூலகம்SE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,M1,1);
D:=SMA(K,M2,1);
J:=3*K-2*D;{以上为KDJ公式}
CLOSE<300&&CROSS(K,D),BKSK;{当价差小于300并且K上穿D时,买入开仓前一品种,卖出开仓后一品种}
文华财经交易编程快速入门
1、如何把熟悉的技术指标转换成交易模型?
第一步:把KDJ指标公式COPY过来。
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;{算出(收盘价-N周期内的最低价)/(N周期的最高价—N周期内的最低价)*100的值,用RSV来表示。}
REF(CLOSE,1)>REF(CLOSE,2)&&REF(CLOSE,2)>REF(CLOSE,3)&&REF(CLOSE,3)>REF(CLOSE,4)&&CLOSE<=A,SPK;{连续四个周期的收盘价大于前一周期的收盘价并且当前周期的收盘价小于等于A时,发出卖平并且卖开(反手)交易指令}
3、文华财经程序化交易编程函数
图时是不画的) 上面的公式的第一个语句定义了一个局部变量 TMP1,在的是这个公式在画图的时候只
声明了一个 画了第二条语句所求出的结果。
变量,
相反下面这个公式则需要画出两条线,第一条是自己定义的均价
在画图时画 线,同时显示了均价的名称为 AVP,第二条线是均价的简单移动平均 : 出它并且按 线。
引用成交量,也可简写为 V 。
GETPRICE(N)
根据文华码取出某一品种的最新价。 例:GETPRICE(1209);返回文华码为 1209 的合约品 种的最新价。
PARAM [参数名称,最小值,最大值,缺省值]
在源码中定义参数。 例:PARAM[N,1,100,12] MAN:MA(CLOSE,N); 表示参数为 N,最小值为 1,最大值为 100,缺省 值为 12.
3. 关于变量名称。变量名称不可以互相重复,不可以和参数名重复,不可以和函数名称 重复。
4. 关于公式内容。公式的每个语句应该以分号结束,包括最后一条语句。在数据公式的 时候请您注意一 定要使用半角输入。在编写公式的过程中,如果您不记得某个函数的确切 写法,可以选择插入函数来插入函数。
5. 如果您在编写公式之后,想给这个公式加上注释,说明之类的东西,可以使用公式说 明来输入。
这个名字显 AVP:(OPEN+CLOSE)/2;
示。
MA(AVP,10);
2、编辑平台支持的自编语法
1. 关于公式名称。公式的名称不可以和已经存在的公式重复。
2. 关于参数。每个自编公式最多可以定义四个参数,参数的定义如下,首先是参数名称, 然后是参数 的最小值,最大值,最后是参数的默认值。在定义参数时要注意的是参数名 称不可以重复。
VOL
第10讲 日内交易模型和tick模型的编写
日内交易模型编写要点
开仓时间控制(区分夜盘&非夜盘合约)
MID:=MA(CLOSE,26); TMP2:=STD(CLOSE,26); TOP:=MID+2*TMP2; BOTTOM:=MID-2*TMP2;//布林通道 UPBAND:=HV(HIGH,5); DNBAND:=LV(LOW,5);//唐奇安通道 CLOSEMINUTE>1&&C>TOP&&H>=UPBAND,BPK;//在1分钟周期下,当天最后一根K线不开仓 CLOSEMINUTE>1&&C<BOTTOM&&L<=DNBAND,SPK; //在1分钟周期下,当天最后一根K线不开仓 TIME>=1450&&TIME<=1500||TIME<=0100,CLOSEOUT; AUTOFILTER;
日内交易模型编写要点
尾盘清仓语句的编写
CLOSEMINUTE1,返回距离收盘前的分钟数。
注: 1、该函数只能用于指令价模型。 2、 历史K线:该函数返回K线结束时间距离收盘的分钟数。 盘中:该函数返回K线当前时间距离收盘的分钟数。 3、该函数需要在分钟,小时,日线周期使用;不支持在TICK周期,秒周 期,量能周期,周线及以上周期使用。 4、该函数返回值包含小结和午休的时间。 5、CLOSEMINUTE1返回的是交易所的时间,不是本机的时间。 6、对于夜盘合约,夜盘收盘不是当日收盘,15点收盘才算作当日收盘。 7、CLOSEMINUTE1在合约交割日,返回实际收盘时间。 8、CLOSEMINUTE1加载到主力合约上,主力换月和合约交割在同一天,则 按照交割日的收盘时间计算,主力换月和合约交割不在同一天,那么按 照正常的非交割日进行计算。 9、该函数不支持和CLOSESEC1同时使用。
文华程序化交易(资金管理)
其他:
注释或者舍去 想要在编写后,加入自己的语言注释,在结尾处用“//”
表示;或者想舍去某段,在某段在最前端加入“//”;
练习1:为函数做注释 IFELSE(C,A,B) //如果条件C成立则返回A值,否则返回B值
练习2:
SETTLE REF(X,N)
引用结算价 引用X在N个周期前的值
MA(X,N)
求X在N周期内的简单移动平均。
定义变量: 结算价: 15周期收盘价均线(显示定义);
S:=SETTLE; MA15:MA(C,15);
衍生: 当前K线的前一个周期最高价; 当前K线的前一个周期15均线;
REF(H,1); REF(MA15,1);
练习3:
5日均线上穿10日均线的同时收盘价大于20日均线,或者5 日均线上穿10日均线的5个点;
D:SMA(K,M2,1);
J:3*K-2*D;
指标
用指标监测行情: K线上穿D线
模型
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)LLV(LOW,N))*100; K:SMA(RSV,M1,1); D:SMA(K,M2,1); J:3*K-2*D; //以下是加入的交易指令 CROSS(K,D),BK;//K向上穿越D,发出买开交易指令 CROSS(J,100),SP;//J向上穿越100,发出卖平交易指令 CROSS(D,K),SK;//K向下穿越D,发出卖开交易指令 CROSS(0,J),BP;//J向下穿越0,发出买平交易指令 AUTOFILTER;
1仅限秒周期使用2定义下面红色字体函数的大单算法87l2bkvol返回当前秒周期买开的成交量l2skvol返回当前秒周期卖开的成交量l2bpvol返回当前秒周期买平的成交量l2spvol返回当前秒周期卖平的成交量l2bkbigcount返回当前秒周期买开的大单成交次数l2skbigcount返回当前秒周期卖开的大单成交次数l2bpbigcount返回当前秒周期买平的大单成交次数l2spbigcount返回当前秒周期卖平的大单成交次数l2bkbigtotvol返回当前秒周期买开的大单成交量l2skbigtotvol返回当前秒周期卖开的大单成交量l2bpbigtotvol返回当前秒周期买平的大单成交量l2spbigtotvol返回当前秒周期卖平的大单成交量注
文华WH8量化交易软件算法交易模型操作符及语法及常用函数及语法举例
二、基本语法1. 算法组件构成:全局变量定义、主函数定义、自定义函数定义。
注:a.全局变量定义要在主函数和自定义函数之外,主函数和自定义函数定义不分先后顺序。
b.运行原理:先读取全局变量,后直接运行主函数,在主函数运行过程中如果遇到自定义函数,在跳出主函数运行自定义函数。
2、变量定义与赋值:利用VAR函数对变量进行定义,定义好的变量可以对其进行赋值,让变量有具体的意义。
VAR N1; -----------------------//定义变量N1VAR N2; -----------------------//定义变量N2VAR N3; -----------------------//定义变量N3N1=3000; -----------------------//整型赋值N2=88.888; -----------------------//浮点型赋值N3=“股指期货”; -----------------------//字符串型赋值N4[0] = 1; -----------------------//数组型赋值N4[1] = 2; -----------------------//数组型赋值N4[2] = 3; -----------------------//数组型赋值3、主函数定义:VOID/VAR MAIN() -----------------------//定义主函数{主函数内容}例:VAR N; -----------------------//定义变量NVOID MAIN() -----------------------//定义主函数{N=“文华财经”; -----------------------//对N赋值MessageOut(N); -----------------------//输出N}4、自定义函数定义A、带返回值的函数VAR BDEAL() -----------------------//带返回值的函数{RETURN(10); -----------------------//返回值}例:带返回值函数定义VAR BDEAL(A,B) -----------------------//带返回值的函数{VAR M; -----------------------//定义变量MM=A+B;RETURN(M); -----------------------//返回值}……S=BDEAL(15,20) ; -----------------------//使用函数……B、不带返回值的函数VOID BDEAL() -----------------------//不带返回值函数{…}例:不带返回值函数定义VOID BDEAL() -----------------------//不带返回值的函数{T_Deal(“IF1312”,0,0,1,0);}……IF(…) -----------------------//当条件成立{BDEAL() -----------------------//运行函数}C、有返回值有参数的自定义函数定义例:VAR ADDTEST(VAR a,VAR b){VAR x;VAR y;x=a+b;y=a-b;MessageOut(x);MessageOut(y);RETURN(x*y);}5、循环语句while的用法:6、循环语句FOR的用法三、常用函数判断函数:IF,ELSE IFIF (F_Sig()==BK) -----------------------//如果当前是BK信号{BKDeal(); -----------------------//运行开多仓函数}ELSE IF (F_Sig()==SK) -----------------------//如果当前是SK信号{SKDeal(); -----------------------//运行开空仓函数}信号函数:F_FreshSig():取一个新信号(如果模型已经发出了多个信号,取最近发出的信号,信号消失也是一种新信号)返回1表示取到新信号,返回0表示失败即已经没有新信号可取。
最新文华期货自动化交易模型编写教程
一、程序化交易的编写㈠、交易模型编写规和一般原则1、编辑平台支持的操作符2、编辑平台支持的函数⑴引用数据⑵金融统计⑶数理统计更多期货股票学习资料点击:item.taobao./item.htm?id=⑷逻辑判断⑸数学运算更多期货股票学习资料点击:item.taobao./item.htm?id=⑹时间函数⑺绘图8、level-2函数(只有嬴智版本支持)更多期货股票学习资料点击:item.taobao./item.htm?id=10、信号记录函数(连接文华服务器才能使用)3、编辑平台可以使用的常数注:在公式即使你定义了某种颜色,在显示的时候也未必是此种颜色,取决于背景颜色当前页面里是否保了该指标的颜色及您是否在显示的时候改变了该指标的颜色设置。
更多期货股票学习资料点击:item.taobao./item.htm?id=4、编辑平台的语法(1)关于公式名称:公式的名称不可以和已经存在的公式重复。
(2)关于参数:每个自编公式最多可以在参数设置栏中定义四个参数,参数的定义如下,首先是参数名称,然后是参数的最小值,最大值,最后是参数的默认值。
在定义参数时要注意的是参数名称不可以重复。
(3)关于变量名称:变量名称不可以互相重复,不可以和参数名重复,不可以和函数名称重复。
(4)关于公式容:公式的每个语句应该以分号结束,包括最后一条语句。
在数据公式的时候请您注意一定要使用半角输入。
在编写公式的过程中,如果您不记得某个函数的确切写法,可以选择插入函数来插入函数。
(5)如果您在编写公式之后,想给这个公式加上注释,说明之类的东西,可以使用公式说明来输入。
(6)IF ELSE:该语句只有Mytrader2009和Myadvisor(赢智)支持MA5:=MA(CLOSE,5);MA10:=MA(CLOSE,10);MA30:=MA(CLOSE,30);IF(MA5>MA10)MA5,COLORRED;ELSE{IF(MA10>MA30)MA10,COLORMAGENTA;ELSEMA30,COLORGREEN;}以上容表达 MA5、MA10、MA30三者中最大的数值。
期货软件指标文华财经指标公式源码期货缠论指标自动画线和三买
AO:=MA((HIGH+LOW)/2,5)-MA((HIGH+LOW)/2,34);AO5:=MA(AO,5);AC:AO-AO5,LINETHICK1;STICKLINE1(AC>=REF(AC,1),0,AC,2.2,1),COLORRED;STICKLINE1(AC< REF(AC,1),0,AC,2.2,1),COLORGREEN;AC1:=REF(AC,1);BUY1:=REF(AC,3)<REF(AC1,3) AND REF(AC,2)<REF(AC1,2) AND REF(AC,2)<REF(AC,3) AND REF(AC,1)>REF(AC1,1) AND AC>AC1 AND COUNT(AC>0,4)=4;DRAWTEXT(BUY1,AC,'B'),COLORWHITE;DRAWICON(BUY1,AC,1);BUY2:=COUNT(AC<0,4)=4 AND REF(AC,3)<REF(AC1,3) AND COUNT(AC>AC1,3)=3; DRAWTEXT(BUY2,AC, 'B'),COLORWHITE;DRAWICON(BUY2,AC,1);BUY3:=REF(AC,3)<REF(AC1,3) AND REF(AC,2)<REF(AC1,2) AND REF(AC,2)<REF(AC,3) AND COUNT(AC>AC1,2)=2 AND REF(AC,1)<0 AND AC>0;DRAWTEXT(BUY3,AC, 'B'),COLORWHITE;DRAWICON(BUY3,AC,1);BUY4:=REF(AC,4)<REF(AC1,4) AND REF(AC,3)<REF(AC1,3) AND REF(AC,3)<REF(AC,4) AND COUNT(AC>AC1,3)=3 AND REF(AC,1)<0 AND AC>0;DRAWTEXT(BUY4,AC, 'B'),COLORWHITE;DRAWICON(BUY4,AC,1);S1:=REF(AC,3)>REF(AC1,3) AND REF(AC,2)>REF(AC1,2) AND REF(AC,2)>REF(AC,3) AND REF(AC,1)<REF(AC1,1) AND AC<AC1 AND COUNT(AC<0,4)=4;DRAWTEXT(S1,AC,'S'),COLORWHITE;DRAWICON(S1,AC,2);S2:=COUNT(AC>0,4)=4 AND REF(AC,3)>REF(AC1,3) AND COUNT(AC<AC1,3)=3;DRAWTEXT(S2,AC,'S'),COLORWHITE;DRAWICON(S2,AC,2);S3:=REF(AC,3)>REF(AC1,3) AND REF(AC,2)>REF(AC1,2) AND REF(AC,2)>REF(AC,3) AND COUNT(AC<AC1,2)=2 AND REF(AC,1)>0 AND AC<0;DRAWICON(S3,AC,2);。
6-0文华程序化交易使用指南
文华程序化交易使用指南目录一、程序化交易的原理 (3)二、程序化交易的启用 (3)㈠、一键通版本程序化交易的启用: (4)1、启动交易软件............................ 错误!未定义书签。
2、启用交易模型(打开程序化交易窗口) (4)3、设置相关参数 (6)㈡、Webstock版本程序化交易的启用 (7)1、启动交易软件 (7)2、启用交易模型(打开程序化交易窗口) (8)3、设置相关参数 (11)三、程序化交易的编写 (13)㈠、交易模型编写规范和一般原则 (13)1、编辑平台支持的操作符 (13)2、编辑平台支持的函数 (14)⑴引用数据 (14)⑵金融统计 (15)⑶数理统计 (18)⑷逻辑判断 (19)⑸数学运算 (21)⑹时间函数 (22)⑺绘图 (23)3、编辑平台可以使用的常数 (25)4、编辑平台的语法 (26)5、编辑平台使用的交易指令 (26)6、快速入门 (27)(二)、交易模型编写示范和注意事项 (32)1、趋势类交易模型编写示范 (32)⑴均线类 (32)⑵通道类 (34)⑶其他类 (35)2、振荡类交易模型编写示范 (37)⑴主动买与主动卖模型 (37)⑵ROC(变动速率)与价格趋势变动背离: (37)⑶三减六日乖离模型: (38)3、日内交易模型编写示范 (38)⑴开盘价突破模型 (38)⑵开盘后前三十分钟最高最低价突破模型 (39)⑶单均线模型。
(40)4、套利交易模型编写示范 (40)5、常见编写错误............................ 错误!未定义书签。
一、程序化交易的原理“程序化交易”为文华财经和金仕达/恒生联合开发。
原理图如下:图1从以上原理图可以看出,程序化交易是文华财经软件和金仕达/恒生自助委托软件协同工作来实现的。
客户通过程序化交易系统发出的委托指令仍然是通过金仕达/恒生远程交易系统进入期货公司和交易所的撮合中心的。
文华财经期货软件指标公式源码自动画笔画段
G:=MA(C,5);DY:=MA(C,10);NNH:=BARSLAST(H=HHV(H,15)) ,NODRAW;NNL:=BARSLAST(L=LLV(L,15)) ,NODRAW;NN:=IF(REF(G,NNH)>REF(DY,NNH) AND NNH<=12,NNH,IF(REF(G,NNL)<REF(DY,NNL) AND NNL<=12,NNL,13)) ,NODRAW;YN:=IF(ISLASTBAR AND NN>0,NN,13) ,NODRAW;HHY:=REF(H,YN)=HHV(H,14);LL Y:=REF(L,YN)=LLV(L,14);FG01:=BACKSET(HHY,YN+1)>BACKSET(HHY,YN),NODRAW;//只设置前面第6个FD01:=BACKSET(LL Y,YN+1)>BACKSET(LL Y,YN) ,NODRAW;FG02:=FG01=FD01 AND G>DY,NODRAW;FD02:=FG01=FD01 AND G<DY,NODRAW;TTTT:=BARSLAST(FD01),NODRAW;FG0:=FG01 AND IF(FG02=1,H=HHV(H,BARSLAST(REF(FD01,1))+1),H=HHV(H,IF(BARSLAST(L=LLV(L,7)) >=5,5,BARSLAST(FD01)))) AND FD02=0 ,NODRAW;FD0:=FD01 AND IF(FD02=1,L=LLV(L,BARSLAST(REF(FG01,1))+1),L=LLV(L,IF(BARSLAST(H=HHV(L,7))> =5,5,BARSLAST(FG01)))) AND FG02=0 ,NODRAW;GT:=BARSLAST(FG0),NODRAW;DT:=BARSLAST(FD0),NODRAW;LLLL:=DT=0 AND REF(DT,1)<GT AND L>REF(L,REF(DT,1)+1),NODRAW;FG1:=BACKSET(REFX(GT,1)=0 AND GT<DT AND REFX(H,1)>=REF(H,GT),GT+1),NODRAW;FD1:=BACKSET(REFX(DT,1)=0 AND DT<GT AND REFX(L,1)<=REF(L,DT),DT+1),NODRAW;FG11:=IF(GT=0 AND REF(GT,1)<DT AND IF(REF(G,BARSLAST(L=LLV(L,7)))>REF(DY,BARSLAST(L=LLV(L,7))),BARSLAST(L=LL V(L,7))<5,1) AND H<REF(H,REF(GT,1)+1),1,0),NODRAW;FD11:=IF(DT=0 AND REF(DT,1)<GT AND IF(REF(G,BARSLAST(H=HHV(H,7)))<REF(DY,BARSLAST(H=HHV(H,7))),BARSLAST(H= HHV(H,7))<5,1) AND L>REF(L,REF(DT,1)+1),1,0),NODRAW;GT1:=BARSLAST(FG11<>1 AND FG1<>1 AND FG0),NODRAW;DT1:=BARSLAST(FD11<>1 AND FD1<>1 AND FD0),NODRAW;FD2:=BACKSET(REFX(GT1,1)=0 AND DT1<3 AND GT1-DT1<4 AND REF(L,DT1)>LLV(L,GT1+5),DT1+1),NODRAW;FG2A:=BACKSET(REFX(GT1,1)=0 AND DT1<3 AND GT1-DT1<4 AND REF(L,DT1)<=LLV(L,GT1+5) AND REF(H,GT1)>HHV(H,GT1+5),GT1+1),NODRAW;FG2B:=IF(GT1=0 AND DT1<4 AND REF(GT1,1)-DT1<4 AND REF(L,DT1)<=LLV(L,REF(GT1,1)+6) AND H>HHV(H,REF(GT1,1)+6),1,0),NODRAW;FG2:=BACKSET(REFX(DT1,1)=0 AND GT1<3 AND DT1-GT1<4 AND REF(H,GT1)<HHV(H,DT1+5),GT1+1),NODRAW;FD2A:=BACKSET(REFX(DT1,1)=0 AND GT1<3 AND DT1-GT1<4 AND REF(H,GT1)>=HHV(L,DT1+5) AND REF(L,DT1)>LLV(L,DT1+5),DT1+1),NODRAW;FD2B:=IF(DT1=0 AND GT1<4 AND REF(DT1,1)-GT1<4 AND REF(H,GT1)>=HHV(H,REF(DT1,1)+6) AND L>LLV(L,REF(DT1,1)+6),1,0),NODRAW; TTTTTT:= H<REF(H,REF(GT1,1)+1) AND DT1<4,NODRAW;HHHHHH:=REF(LLV(L,10),DT1),NODRAW;FG21:=IF(GT1=0 AND DT1<4 AND H<=REF(H,REF(GT1,1)+1) ,1,0),NODRAW;FD21:=IF(DT1=0 AND GT1<4 AND L>=REF(L,REF(DT1,1)+1) ,1,0),NODRAW;FD231:=BACKSET(REFX(GT1,1)=0 AND DT1>3 AND GT1>DT1 AND GT1-DT1<4 ANDREFX(H,1)>REF(H,GT1) AND REF(L,DT1)>REF(LLV(L,10),DT1),DT1+1),NODRAW;FG23:=BACKSET(REFX(GT1,1)=0 AND DT1>3 AND GT1>DT1 AND GT1-DT1<4 AND REFX(H,1)>REF(H,GT1) AND (REF(H,GT1)<REF(HHV(H,13),GT1) OR REF(FD231,DT1)=0),GT1+1),NODRAW;FG231:=BACKSET(REFX(DT1,1)=0 AND GT1>3 AND DT1>GT1 AND DT1-GT1<4 AND REFX(L,1)<REF(L,DT1) AND REF(H,GT1)<REF(HHV(H,10),GT1) ,GT1+1),NODRAW;FD23:=BACKSET(REFX(DT1,1)=0 AND GT1>3 AND DT1>GT1 AND DT1-GT1<4 AND REFX(L,1)<REF(L,DT1) AND ( REF(L,DT1)>REF(LLV(L,13),DT1) OR REF(FG231,GT1)=0),DT1+1),NODRAW;FDD23:=REF(H,GT1)<REF(HHV(H,10),GT1) OR REF(FD23,DT1)=0,NODRAW;FD24:=BACKSET(REFX(GT1,1)=0 AND DT1>3 AND GT1>DT1 AND GT1-DT1<4 AND REFX(H,1)<HHV(H,GT1+3) AND REF(L,DT1)>LLV(L,DT1+5),DT1+1),NODRAW;FG24:=BACKSET(REFX(DT1,1)=0 AND GT1>3 AND DT1>GT1 AND DT1-GT1<4 AND REFX(L,1)>LLV(L,DT1+3) AND REF(H,GT1)<HHV(H,GT1+5),GT1+1),NODRAW;GT2:=BARSLAST(FG21<>1 AND FG23<>1 AND FG231<>1 AND FG24<>1 AND FG2<>1 AND FG2A<>1 AND FG2B<>1 AND GT1=0),NODRAW;DT2:=BARSLAST(FD21<>1 AND FD23<>1 AND FD231<>1 AND FD24<>1 AND FD2<>1 AND FD2A<>1 AND FD2B<>1 AND DT1=0),NODRAW;FG3:=BACKSET(REFX(GT2,1)=0 AND GT2<DT2 AND REFX(H,1)>=REF(H,GT2),GT2+1),NODRAW;FD3:=BACKSET(REFX(DT2,1)=0 AND DT2<GT2 AND REFX(L,1)<=REF(L,DT2),DT2+1),NODRAW;FG31:=IF(GT2=0 AND REF(GT2,1)<DT2 AND H<REF(H,REF(GT2,1)+1),1,0),NODRAW;FD31:=IF(DT2=0 AND REF(DT2,1)<GT2 AND L>REF(L,REF(DT2,1)+1),1,0),NODRAW;GT3:=BARSLAST(GT2=0 AND FG3<>1 AND FG31<>1 ),NODRAW;DT3:=BARSLAST(DT2=0 AND FD3<>1 AND FD31<>1),NODRAW;FG4:=BACKSET(REFX(GT3,1)=0 AND GT3<DT3 AND REFX(H,1)>=REF(H,GT3),GT3+1),NODRAW;FD4:=BACKSET(REFX(DT3,1)=0 AND DT3<GT3 AND REFX(L,1)<=REF(L,DT3),DT3+1),NODRAW;FG41:IF(GT3=0 AND REF(GT3,1)<DT3 AND H<REF(H,REF(GT3,1)+1),1,0),NODRAW;FD41:IF(DT3=0 AND REF(DT3,1)<GT3 AND L>REF(L,REF(DT3,1)+1),1,0),NODRAW; HHH:=GT3=0 AND FG31<>1 AND FG3<>1,NODRAW;LLL:=DT3=0 AND FD31<>1 AND FD3<>1,NODRAW;DRAWLINE1(HHH,H,LLL,L,0),COLORWHITE;DRAWLINE1(LLL,L,HHH,H,0),COLORWHITE;DX:=HHH||LLL;L1:CROSS(BACKSET(ISLASTBAR,SUMBARS(DX,3)),0.5);L2:CROSS(BACKSET(ISLASTBAR,SUMBARS(DX,2)),0.5);L3:CROSS(BACKSET(ISLASTBAR,SUMBARS(DX,1)),0.5);PP:=IF(HHH,H,IF(LLL,L,H));A1:=V ALUEWHEN(L1,PP);A2:=V ALUEWHEN(L2,PP);A3:=V ALUEWHEN(L3,PP);/*DRAWW A VERULER(L1,PP,L2,PP,L3,PP,0.382,COLORGRAY); DRAWW A VERULER(L1,PP,L2,PP,L3,PP,0.5,COLORGRAY); DRAWW A VERULER(L1,PP,L2,PP,L3,PP,0.618,COLORGRAY); DRAWW A VERULER(L1,PP,L2,PP,L3,PP,1,COLORGRAY); DRAWW A VERULER(L1,PP,L2,PP,L3,PP,1.5,COLORGRAY); DRAWW A VERULER(L1,PP,L2,PP,L3,PP,1.618,COLORGRAY); DRAWW A VERULER(L1,PP,L2,PP,L3,PP,1.382,COLORGRAY);*/DRAWGOLDENLINE(L2,PP,L3,PP,0.382,COLORGRAY); DRAWGOLDENLINE(L2,PP,L3,PP,0.5,COLORGRAY); DRAWGOLDENLINE(L2,PP,L3,PP,0.618,COLORGRAY); DRAWGOLDENLINE(L2,PP,L3,PP,1,COLORGRAY); DRAWGOLDENLINE(L2,PP,L3,PP,1.5,COLORGRAY); DRAWGOLDENLINE(L2,PP,L3,PP,1.618,COLORGRAY); DRAWGOLDENLINE(L2,PP,L3,PP,1.382,COLORGRAY);AA1:=REFX1((A2-A3)*0.382+A3,10000);AA2:=REFX1((A2-A3)*0.5+A3,10000);AA3:=REFX1((A2-A3)*0.618+A3,10000);AA4:=REFX1((A2-A3)+A3,10000);AA5:=REFX1((A2-A3)*1.5+A3,10000);AA6:=REFX1((A2-A3)*1.618+A3,10000);AA7:=REFX1((A2-A3)*1.382+A3,10000);DRAWNUMBER(ISLASTBAR,AA1,AA1,0,COLORWHITE),ALIGN0; DRAWNUMBER(ISLASTBAR,AA2,AA2,0,COLORWHITE),ALIGN0; DRAWNUMBER(ISLASTBAR,AA3,AA3,0,COLORWHITE),ALIGN0; DRAWNUMBER(ISLASTBAR,AA4,AA4,0,COLORWHITE),ALIGN0; DRAWNUMBER(ISLASTBAR,AA5,AA5,0,COLORWHITE),ALIGN0; DRAWNUMBER(ISLASTBAR,AA6,AA6,0,COLORWHITE),ALIGN0; DRAWNUMBER(ISLASTBAR,AA7,AA7,0,COLORWHITE),ALIGN0;DRAWNUMBER(L2,AA1,0.382,3,COLORWHITE),ALIGN2; DRAWNUMBER(L2,AA2,0.5,3,COLORWHITE),ALIGN2; DRAWNUMBER(L2,AA3,0.618,3,COLORWHITE),ALIGN2; DRAWNUMBER(L2,AA4,1,3,COLORWHITE),ALIGN2; DRAWNUMBER(L2,AA5,1.5,3,COLORWHITE),ALIGN2; DRAWNUMBER(L2,AA6,1.618,3,COLORWHITE),ALIGN2; DRAWNUMBER(L2,AA7,1.382,3,COLORWHITE),ALIGN2;。
期货程序化交易之文华指标公式源码
期货程序化交易之文华指标公式源码1. 平均真实波动范围(Average True Range,ATR)```pythondef atr(close_price, high_price, low_price, n=14):tr = []for i in range(len(close_price)):tr.append(max(high_price[i] - low_price[i], abs(high_price[i] - close_price[i-1]), abs(low_price[i] - close_price[i-1]))) atr = sum(tr)/nreturn atr```平均真实波动范围是衡量市场波动性的指标,它计算了最高价和最低价之间的波动范围,并取一定周期内的平均值。
2. 相对强弱指标(Relative Strength Index,RSI)```pythondef rsi(close_price, n=14):rsi = []for i in range(len(close_price)):if i < n:rsi.append(None)else:gains = 0losses = 0for j in range(n):change = close_price[i-j] - close_price[i-j-1]if change > 0:gains += changeelse:losses += abs(change)avg_gain = gains / navg_loss = losses / nrs = avg_gain / avg_lossrsi.append(100 - (100 / (1 + rs)))return rsi```相对强弱指标是衡量市场超买超卖情况的指标,它计算了一段时间内收盘价上涨和下跌的平均值,并通过计算相对强度来衡量买卖力量的强弱。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、程序化交易的编写㈠、交易模型编写规范和一般原则1、编辑平台支持的操作符2、编辑平台支持的函数⑴引用数据⑵金融统计⑶数理统计更多期货股票学习资料点击:⑷逻辑判断⑸数学运算更多期货股票学习资料点击:⑹时间函数⑺绘图8、level-2函数(只有嬴智版本支持)K2K2K2K2K2K2K2K2K2K2K2K2K2K2LM文件)”。
被引用的指标中不能存在引用其他指标语句。
被引用指标名称需以英文开头,可以是英文加数字形式,但不能出现汉字。
如:被引用指标名称可以是“MAA”、“MA1”,但不可以是“1MA”或“MA组合”。
B、文华码输入错误如沪铜1002合约文华码为2102,并不是1002,各合约文华码可在报价列表“文华码”抬头列或各合约K线图右上角合约名称后括号内查到。
同品种不同周期间调用数据时可不必填写文华码,但#IMPORT函数填写文华码位置需以空格代替,不可省略。
C、周期使用混乱目前跨周期函数只允许短周期引用长周期数据,如不能在日周期上引用分钟周期数据。
目前可供引用周期:MIN1、MIN3、MIN5、MIN10、MIN15、MIN30、HOUR1、HOUR3、HOUR8、DAY、WEEK、MONTH 。
⑵跨周期均线组合模型关键函数:#IMPORT,CROSS使用周期:三十分钟模型说明:日周期均线为多头排列时,三十分钟周期上只做多,不做空;日周期均线为空头排列时,三十分钟周期上只做空,不做多。
第一步:建立日周期均线指标“MAD”MA1:=MA(CLOSE,5);MA2:=MA(CLOSE,10);MA3:=MA(CLOSE,25);第二部:编写跨周期交易模型#IMPORT[ ,DAY,MAD] AS AM1:=;M2:=;M3:=;MA5:=MA(CLOSE,5);MA10:=MA(CLOSE,10);CROSS(MA5,MA10)&&M1>M2&&M2>M3,BK;CROSS(MA10,MA5),SP;CROSS(MA10,MA5)&&M1<M2&&M2<M3,SK;CROSS(MA5,MA10),BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑶跨合约MACD模型关键函数:#IMPORT使用周期:五分钟模型说明:当沪铜指数(文华码2100)五分钟周期DIFF金叉DEA时,在沪铜1002合约上买平开;当沪铜指数(文华码2100)五分钟周期DIFF死叉DEA时,在沪铜1002合约上卖平开。
第一步:文华自带“MACD”指标,所以无需另新建指标。
第二步:编写跨合约交易模型#IMPORT[2100,MIN5,MACD] AS VARD:=;E:=;CROSS(D,E),BPK;CROSS(E,D),SPK;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负容易犯的编写错误:所引用变量名称需与原指标变量名称相符,如:#IMPORT[2100,MIN5,MACD] AS VARD:=;编写跨合约模型前需确认原MACD指标中确实含有DIFF变量名称(确认方法:通过公式管理器找到原指标,打开查看);请注意原指标变量名称的大小写,如原指标变量名称为diff,则需要在引用时引用D:=; 而不是 D:=;5、头寸及信号记录模型编写示范⑴按资金比例下单模型关键函数:SETDEALPERCENT使用周期:五分钟模型说明:当满足开仓条件时按可用资金比例的30%下单。
SETDEALPERCENT;A:=VALUEWHEN(TIME=905,CLOSE);B:=VALUEWHEN(DATE<>REF(DATE,1),OPEN);A<B&&CROSS(CLOSE,B)&&TIME<1450,BK;(A>B&&CROSS(B,CLOSE))||TIME>=1450,SP;A>B&&CROSS(B,CLOSE)&&TIME<1450,SK;(A<B&&CROSS(CLOSE,B))||TIME>=1450,BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑵资金权益模型关键函数:TRD_CAPITAL,TRD_ASSETS,SAR使用周期:十五分钟模型说明:只有当可用资金占总权益50%以上时满足价格上/下突破止损点才执行开仓条件,否则不予执行。
SARLINE:=ABS(SAR(4,,);A:=TAD_CAPITAL/TRD_ASSETS;CROSS(CLOSE,SARLINE)&&A>,BK;CROSS(SARLINE,CLOSE),SP;CROSS(SARLINE,CLOSE)&&A>,SK;CROSS(CLOSE,SARLINE),BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑶信号记录模型关键函数:BKPRICE ,SKPRICE使用周期:五分钟模型说明:突破4个周期最高/最低价开仓,获利15个点以上平仓。
CLOSE>=REF(HHV(HIGH,4),1),BK;CLOSE-BKPRICE>15,SP;CLOSE<=REF(LLV(LOW,4),1),SK;SKPRICE-CLOSE>15,BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负6、LEVEL-2模型编写示范⑴LEVEL-2盘口模型关键函数:L2_BPTIMES,L2_BKTIMES,L2_SPTIMES,L2_SKTIMES使用周期:一分钟模型说明:创5个周期最高/最低价时统计周期内多/空开平仓次数确定是否开仓。
CS1:=L2_BPTIMES;CS2:=L2_BKTIMES;CS3:=L2_SKTIMES;CS4:=L2_SPTIMES;MA1:=MA(CLOSE,5);CS2+CS4>CS1+CS3&&HIGH>=HHV(HIGH,M),BK;CROSS(REF(MA1,1),LOW),SP;CS2+CS4<CS1+CS3&&LOW<=LLV(LOW,M),SK;CROSS(HIGH,REF(MA1,1)),BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑵LEVEL-2量能模型关键函数:L2_ASKACCOUNT, L2_BIDACCOUNT使用周期:一分钟模型说明:周期内卖主动次数大于周期内买主动次数并且收阳,平空仓并反手开多;周期内买主动次数大于周期内卖主动次数并且收阴,平多仓并反手开空。
L2_ASKACCOUNT>L2_BIDACCOUNT&&CLOSE>OPEN,BPK;L2_BIDACCOUNT>L2_ASKACCOUNT&&CLOSE<OPEN,SPK;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑶LEVEL-2秒周期时间模型关键函数:L2_BIDBIGTURNOVER,L2_ASKBIGTURNOVER,L2_ASKBIGCOUNT,L2_BIDBIGCOUNT,L2_ASKBIGENTR ASTCOUNT,L2_BIDBIGENTRASTCOUNT,TIME使用周期:十五秒模型说明:14点58分之前由周期内多/空头大单成交额及周期内多/空头平仓次数对比决定是否开仓;通过买1及卖1委托大量次数对比决定是否平仓,不留隔夜单。
L2_BIDBIGTURNOVER>L2_ASKBIGTURNOVER&&L2_ASKBIGCOUNT>L2_BIDBIGCOUNT&&I SUP&&TIME<145800,BK;L2_ASKBIGENTRASTCOUNT>L2_BIDBIGENTRASTCOUNT||TIME>145800,SP;L2_BIDBIGTURNOVER<L2_ASKBIGTURNOVER&&L2_ASKBIGCOUNT<L2_BIDBIGCOUNT&&I SUP&&TIME<145800,SK;L2_ASKBIGENTRASTCOUNT<L2_BIDBIGENTRASTCOUNT||TIME>145800,BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑷LEVEL-2 TICK模型关键函数:SETDEALVOL,L2_TICK_DATA,BKPRICE,SKPRICE使用周期:TICK模型说明:模型每次下单手数为3手,当盘面总买量大于卖量且为主动买时,买开仓;当盘面总买量小于卖量且为主动卖是,卖开仓;盈利20点以上或亏损5点以上平仓出场。
SETDEALVOL(3);L2_TICK_DATA('tbidvol')>L2_TICK_DATA('taskvol')&&L2_TICK_DATA('activi ty')=0,BK;CLOSE-BKPRICE>20||CLOSE-BKPRICE<-5,SP;L2_TICK_DATA('tbidvol')<L2_TICK_DATA('taskvol')&&L2_TICK_DATA('activi ty')=1,SK;SKPRICE-CLOSE>20||SKPRICE-CLOSE<-5,BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负7、套利交易模型编写示范⑴如何编制简单价差类型的套利模型?CROSS(300,CLOSE),BKSK; //CLOSE为两个品种的价差。
当价差小于300时,买入开仓前一品种,卖出开仓后一品种CROSS(CLOSE,500),SPBP;//当价差大于500时,卖出平仓前一品种,买入平仓后一品种CROSS(CLOSE,600),SKBK;//当价差大于600时,卖出开仓前一品种,买入开仓后一品种CROSS(400,CLOSE),BPSP;//当价差小于400时,买入平仓前一品种,卖出平仓后一品种////内为文字说明,编写模型时不用写出★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑵如何编制技术指标的套利模型?DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);DEA := EMA(DIFF,9);MACD:=2*(DIFF-DEA);MACD>0,BKSK;MACD<0,SPBP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑶如何编制组合类型的套利模型?RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;D:=SMA(K,M2,1);J:=3*K-2*D;//以上为KDJ公式CLOSE<300&&CROSS(K,D),BKSK;//当价差小于300并且K上穿D时,买入开仓前一品种,卖出开仓后一品种CROSS(CLOSE,500)||CROSS(D,K),SPBP;//当价差上穿500或者D上穿K时,卖出平仓前一品种,买入平仓后一品种CLOSE>600&&CROSS(D,K),SKBK;//当价差大于600并且D上穿K时,卖出开仓前一品种,买入开仓后一品种CROSS(400,CLOSE)||CROSS(K,D),BPSP;//当价差下穿400或者K上穿D时,买入平仓前一品种,卖出平仓后一品种★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负8、常见编写错误★以下模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑴不允许使用交易指令作为变量名称。