程序化交易指标编写完美教程
「100」百篇教程收官篇,关于程序化交易指标的编写
「100」百篇教程收官篇,关于程序化交易指标的编写前言:大家好!我是股市帅锅。
本篇是100篇免费图文教程的收官之篇,从我们学习第一篇教程开始,我们心里总有个愿望,以后要是能够实现程序化自动交易就好了。
这不仅仅是大家的愿望,也是我自己的愿望,我仍然在这条道路上不断地摸索,希望有一天能够建立比较可行的程序化交易方案。
梦想总要有的,说不定哪天真实现了呢?学习内容:在通达信软件中,功能-公式系统-程序交易评测系统,这个系统是用来做什么的?就是用来评测交易体系的胜率的。
交易体系,则包含了买入规则,卖出规则,仓位资金管理,交易方式等,在设置了各个规则之后,就可以对交易体系的胜率进行评测。
虽然通达信的程序交易评测系统有些鸡肋,但基本功能还是具备的,如果大家有兴趣,也可以自己做一些尝试。
在程序化交易系统的建立过程中,买卖点的设定,和普通的指标公式有所区别,也是之前的教程中,我们没有涉及到的,所以在第100篇教程里,做些简介,因为水平有限,我就不演示了,免得演砸。
今天我们就来解释下程序交易指标的编写方法。
编程和测试:程序交易指标,需要设定买入条件,卖出条件,条件满足时,触发买入交易和触发卖出交易,同时买入和卖出交易交替进行,当然这是最简单的程序交易,复杂的情况,可能有多次的买入,也有可能多次的卖出。
我把系统自带的一个举例程序交易指标MACD交易指标的代码复制过来:------------DIFF:=EMA(CLOSE,12)-EMA(CLOSE,26);DEA:=EMA(DIFF,9);MACD:=2*(DIFF-DEA);平空开多:=CROSS(MACD,0);平多开空:=CROSS(0,MACD);BUYSHORT_BUY(平空开多,LOW);SELL_SELLSHORT(平多开空,HIGH);AUTOFILTER;------------在上面的代码中,可以分为三组,第一组是MACD指标各个赋值,共3句代码,我们都很熟悉。
程序化交易运作流程
程序化交易运作流程一、模型设计开发利用期货行情系统绘出两个品种的历史价差图,选取历史价差图有一定规律的两个品种进行初步分析。
对于初步分析后的套利品种进行理论分析,从两个品种的价格变动影响因素进行分析,若影响品种价格变动的宏观经济因素、原材料及下游需求等因素有相似,则进一步进行数据分析。
将通过理论分析的套利池中套利品种进行数据分析。
主要利用统计软件,分析各品种与其变动因素的相互关联性,计算相关系数;分析两个相关品种基差变化与其变动因素的相关系数及波动系数,确定基差的波动空间及均衡点。
二、客户分类及资金准备新财富客户按相关评分标准进行分类,风险偏好由高到低进行排位。
以此确定各交易类型及总持仓动用资金比例。
见下图:三、程序化交易流程1、每日交易前ⅰ)每日开盘前,开会交流宏观经济新闻、各套利品种前一日现货市场情况及各套利品种上下游供需变动情况,分析对品种行情走势的影响,结合前一日套利行情,初步判断当日套利主力区间。
ⅱ)由风控专员根据保证金账户的实际情况通报各财富客户可建仓量及止损止盈点,投资亏损达到总资金的10%时则止损,但对于弹性较高、波动较大的投资品种,止损点可适当放开,确保风险保持可控状态以进行正常运转及资金划拨;ⅲ)填写《程序化交易日报》。
2、每日交易进行中开盘后观测套利走势,初步确定当日套利主力区间,经确认后确定程序化交易主力区间。
确认方法可分为时间确认、频率确认及概率确认,若为概率确认,则在胜算在80%以上的情况下入场。
将主力区间输入程序化交易模型中运行;对套利交易进行监控,出现风险时按相关规定计划进行操作;1)程序运行风险ⅰ)建仓时,若套利交易出现单边成交,计算机系统报错,并自动停止,但系统报错前挂单不撤,人工选择是否撤单;ⅱ)撤单后,若已成交的单边持仓处于盈利状态则进行平仓,若处于亏损状态,且以未成交的品种现价计算,基差亏损不超过预设盈利点时,将未成交品种建仓;若基差亏损超过预设盈利点,仍将已成交的单边持仓清仓;ⅲ)平仓时,若套利交易出现单边成交,计算机系统自动将未成交品种以现价成交,成交后报错提醒。
程序化交易高级教程文华
目录
第一章 如何优化你的交易策略...................................................................................................... 1 1.1 PANZHENG 函数,减少盘整行情中的交易次数............................................................. 1 1.2 CHECKSIG 函数,实现更具有优势进场价格................................................................. 7 1.3 MULTSIG 函数,在一根 k 线上灵活进出..................................................................... 12 1.4 TRADE_OTHER 函数,在指数交易中的应用................................................................. 17 1.5 拓展思路—结合盘口数据研发策略............................................................................ 27
5
(增加阅读软件的页面放大率可查看清晰图片) 加入 PANZHENG 函数后,代码如下 MA10:=MA(C,10); C>MA10&&PANZHENG=0,BPK;//非盘整行情中,价格大于 10 周期均线,做多 C<MA10 &&PANZHENG=0,SPK;//非盘整行情中,价格小于 10 周期均线,做空 AUTOFILTER; 如下图所示 胜率提升 14% 盈利率提升 37% 最大回撤减少 45% 年化盈利率提升 21% 单次交易盈利能力提升 40% 减少盘整行情中的交易次数后,不仅仅盈利能力得到提升,模型的稳定性同时也得到大幅度提升, 大大提高了模型的可执行性
程序化交易指标编写完美教程共62页
35、不要以为自己成功一次就可以了 ,也不 要以为 过去的 光荣可 以被永 远肯定 。
1、最灵繁的人也看不见自己的背脊。——非洲 2、最困难的事情就是认识自己。——希腊 3、有勇气承担命运这才是英雄好汉。——黑塞 4、与肝胆人共事,无字句处读书。——周恩来 5、阅读使人充实,会谈使人敏捷,写作使人精确。——培根
程序交易指标编写完美教 程
31、别人笑我太疯癫,我笑他人看不 穿。(名 言网) 32、我不想听失意者的哭泣,抱怨者 的牢骚 ,这是 羊群中 的瘟疫 ,我不 能被它 传染。 我要尽 量避免 绝望, 辛勤耕 耘,忍 受苦楚 。我一 试再试 ,争取 每天的 成功, 避免以 失败收 常在别 人停滞 不前时 ,我继 续拼搏 。
文华程序交易编程指南
文华程序交易编程指南在15分钟图内,突破开盘后15分钟高低点的交易系统HH:=VALUEWHEN(TIME=0900,HIGH);//每天第一根15分钟K 线的高点LL:=VALUEWHEN(TIME=0900,LOW); //每天第一根15分钟K线的低点CROSS(CLOSE,HH),BK; //只要价格上穿15分钟的高点,买进开仓;CROSS(LL,CLOSE),SK; //只要价格下穿15分钟的低点,卖出开仓;CROSS(CLOSE,HH)||CROSS(TIME,1444),BP; //只要价格上穿15分钟的高点,买入平仓;或时间在14:44之后平仓CROSS(LL,CLOSE)||CROSS(TIME,1444),SP; //只要价格下穿15分钟的低点,卖出平仓;或时间在14:44之后平仓在3分钟图内,突破开盘后15分钟的高低点的交易系统首先先建立一个指标就是HL.fml,然后用引用的方法#IMPORT[,MIN15,HL] AS VARHLHH1:=VARHL.HH;LL1:=VARHL.LL;CROSS(CLOSE,HH1),BK;CROSS(LL1,CLOSE),SK;CROSS(CLOSE,HH1)||CROSS(TIME,1456),BP;CROSS(LL1,CLOSE)||CROSS(TIME,1456),SP;一天只交易一次的编写方法NN:=BARSLAST(DATE<>REF(DATE,1))+1;买入开仓条件&&REF(EXIST(BB,NN),1)<1,BK;BS,SP;卖出开仓条件&&REF(EXIST(BB,NN)<1,1),SK;SS,BP;开盘交易,收盘退出DATE<>REF(DATE,1),BK;TIME>=1455,SP;周间日模型(固定金额止损)NN:=BARSLAST(DATE<>REF(DATE,1))+1;#IMPORT[,MIN15,HL] AS VARHLHH1:=VARHL.HH;LL1:=VARHL.LL;COB:=(WEEKDAY=1);CS:=(WEEKDAY=2||WEEKDAY=4);COB&&REF(EXIST(COB,NN),1)<1&&DATE<>REF(DATE,1),BK;CS&&REF(EXIST(CS,NN),1)<1&&DATE<>REF(DATE,1),SK;CROSS(TIME,1456)||CROSS(CLOSE,VALUEWHEN(TIME=0900, OPEN)+22),BP; CROSS(VALUEWHEN(TIME=0900,OPEN)-22,CLOSE)||CROSS(TIME,1456),SP;低点判断的程序编写方法RIBAO1:=(REF(LOW,1)>REF(LOW,2)&&REF(HIGH,1)REF(LO W,1)&&HIGH<ref(high,1));< bdsfid="99" p=""></ref(high,1));<> 前一个K线低点高于前两个K线低点,同时前一个K线高点低于前两个K线高点(前一根K线被前第二个K线所包含)WAIBAO1:=(REF(LOW,1)<ref(low,2)&&ref(high,1)bdsfid="102">REF(HIGH,2))||(LOWREF(HIGH,1)); 前第二根K线被前第一个K线所包含;</ref(low,2)&&ref(high,1)>LL:VALUEWHEN(NOT(WAIBAO1)&&NOT(RIBAO1)&&LOW> REF(LOW,1)&&REF(LOW,2)>RE F(LOW,1),REF(LOW,1));既非内孕线,也非外孕线,同时已经出现低点拐点,作为最近低点高点判断的程序编写方法RIBAO2:=(REF(LOW,1)>REF(LOW,2)&&REF(HIGH,1)REF(LO W,1)&&HIGH<ref(high,1));< bdsfid="109" p=""></ref(high,1));<> 前一根K线被前第二个K线所包含)WAIBAO2:=(REF(LOW,1)<ref(low,2)&&ref(high,1)bdsfid="112">REF(HIGH,2))||(LOWREF(HIGH,1)); 前第二根K线被前第一个K线所包含;</ref(low,2)&&ref(high,1)>HH:VALUEWHEN(NOT(WAIBAO2)&&NOT(RIBAO2)&&H<ref (h,1)&&ref(h,2)<="" bdsfid="115" p=""></ref(h,1)&&ref(h,2) 既非内孕线,也非外孕线,同时已经出现高点拐点,作为最近高点利润回撤的处理1)系统发出平仓信号是需要平仓条件,没有条件系统无法发信号,2)获利回吐可以使用止赢止损编写,例如:当最高价与开仓收盘价盈利达到20—50点,回撤70%平仓。
程序化交易高级教程
程序化交易高级教程注意:本教程适用于Winning Intelligence Wh8目录第一章如何编写复杂模型 (1)1.1如何编写IF ElSE控件.................................................................................................1 1.2如何编写循环计算....................................................................................................2 1.3如何使用停止指令....................................................................................................7第2章如何编译基本编程模型 (11)2.1、在下列情况2.2,............................................................................................................29 2.3,经济数据,紧急情况....................................................................................第三章如何优化你的交易策略. (40)3.1盘整功能,减少盘整市场交易数量..........................................................40 3.2检查信号功能,..........................................................46 3.3实现了具有更优惠进入价格的ULTSIG功能。
条件选股编程教程真正实现股票程序化交易精编
条件选股编程教程真正实现股票程序化交易精编Document number:WTT-LKK-GBB-08921-EIGG-22986大智慧公式编写教程大智慧公式编写教程第一节公式入门我们大多数的用户并不是完全了解“公式编辑器”的意义,简单地,我们可以从以下几个角度进行理解:一、指标分析:“公式编辑器”好比是一个工作母床,通过这个工作母床可以制造出所需要的各式各样的零件,同样,在指标分析的工作中,利用编辑器可以编写出相应的分析条件,这种方法是在技术分析当中最为常用的方法之一。
例如,指标KD、指标MA等等,通过对这些指标的观察、分析,找出一些合适的条件作为买入卖出点。
当然,我们也许需要的是一些自己的指标,一些自己的准确的指标,更多的MB、MC、MD等等,这一切我们通过“公式编辑器”可以实现。
二、条件选股:编写公式都要用到什么东西我们留下了许多问题--都是公式编写的基础问题,所以我们这节课来解决这些基础的问题。
什么是技术指标MA均线就是一种技术指标,我们在炒股的时候,经常会将一些行情数据进行数学计算得出一些曲线等等,方便我们掌握股市的变动情况。
什么是条件选股简单讲,就是按照您的设定的条件用电脑帮助您完成一些太多太复杂的挑选--比如您有一些好的心得和方法,可使有1000多只股票,您就是有100双眼睛有时也不一定可以看得过来,这时电脑就派上用场了!什么是参数比如讲:10日均线,您可以把10日当作参数,好处在于,您觉得需要修改成5日的时候,就可以使用一些简单的方法,例如参数精灵来很方便的修改和调整。
参数需要名字,例如M就不错。
还要规定参数的范围,例如1日至260日。
这样我们就可以在1到260之间任意调节M的值了,M 最常用的数填在“缺省”一栏,例如你最喜欢用10日均线,那就填10吧。
什么是周期这么解释吧!我们有的投资者喜欢使用日线图作技术分析;有的喜欢用5分钟的K线;有的喜欢使用长一点时间的,例如周线。
所以在公式设计中,允许不同喜好的使用者选择不同的分析时间--就是可以选择不同的周期。
程序化交易编程举例
1、趋势转变如何表示?以均线拐头为例:MA10:=MA(CLOSE,10);//定义10周期均线MA10>REF(MA10,1)&&REF(MA10,1)>REF(MA10,2)&&REF(MA10,3)>REF(MA10,2)&&REF(MA10,4)> REF(MA10,3);//上拐MA10<REF(MA10,1)&&REF(MA10,1)<REF(MA10,2)&&REF(MA10,3)<REF(MA10,2)&&REF(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;//MA10上穿MA5或收盘价与MA5的差值大于8,发出卖出开仓交易指令(MA5-CLOSE)>6,BP;//MA5与收盘价的差值大于6,发出买入平仓交易指令CROSS(MA5,MA10)||(MA5-CLOSE)>8,BK;//MA5上穿MA10或收盘价与MA5的差值大于8,发出买入开仓交易指令(CLOSE-MA5)>6,SP;//收盘价与MA5的差值大于6,发出卖出平仓交易指令4、如何在模型中限制开平仓时间?MA5:=MA(CLOSE,5);//定义5周期的简单移动平均线MA10:=MA(CLOSE,10);//定义10周期的简单移动平均线TIME>=0905&&TIME<1455&&CROSS(MA5,MA10),BK;//在9点05分之后14点55分之前的时间段内出现5周期线金*10周期线后买开TIME>=1455,SP;//当时间到14点55分时自动发出卖平指令TIME>=0905&&TIME<1455&&CROSS(MA10,MA5),SK;//在9点05分之后14点55分之前的时间段内出现5周期线死*10周期线后卖开TIME>=1455,BP;//当时间到14点55分时自动发出买平指令5、KDJ模型雏形RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;//定义RSVK:=SMA(RSV,M1,1); //定义KD:=SMA(K,M2,1); //定义DJ:=3*K-2*D; //定义JJ<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);//定义DIFFDEA := 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);//定义MTMCROSS(MTM,0),BPK;//MTM上穿0轴,买平并买开CROSS(0,MTM),SPK;//MTM下穿0轴,卖平并卖开8、RSI模型雏形LC:=REF(CLOSE,1);//定义LCRSI1:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)*100;//定义RSI1RSI2:=SMA(MAX(CLOSE-LC,0),M,1)/SMA(ABS(CLOSE-LC),M,1)*100;//定义RSI2REF(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;//定义RSVLWR1:=SMA(RSV,3,1);//定义LWR1LWR2:=SMA(LWR1,3,1);//定义LWR2CROSS(LWR1,LWR2),BPK;//LWR1上穿LWR2,买平并买开CROSS(LWR2,LWR1),SPK;//LWR1下穿LWR2,卖平并卖开10、SAR模型雏形SARLINE:=ABS(SAR(N,STEP,MVALUE));//定义SARLINECROSS(CLOSE,SARLINE),BPK;//最新价上穿SARLINE,买平并买开CROSS(SARLINE,CLOSE),SPK;//最新价下穿SARLINE,卖平并卖开。
程序化交易__文华专业教程
能力扩展
摆脱繁重的盯盘 摆脱大量计算 可以交易更多的品种
当盘中价格上下波动,导致交易信号反复时,如何解决?
在Mytrader一键通2009中可以使用“全自动交易信号消失以后,自 动恢复持仓”解决指令忽闪的问题
在全自动状态下,如果指令消失,系统会自动恢复到最近的一次交易指令的状态和手数 例:使用模型自动交易沪铜0811在2008年8月22日发出卖出开仓信号,之后在2008年9月4号 发出买开并平空指令, 系统会自动将8月22日的持仓平掉并开多仓,此时如果买平开指令消失, 系统会按照8月22日的开仓方向及手数重新开空仓,并平掉多单,这样既保住了8月22日到9 月4日之间的盈利又保持了原来的趋势继续盈利.
指标 编写结构
定义需要的 变量
变量名称 :=或者: 解释 分号结尾
标注文字 画图形
DRAWTEXT 其他绘图函数
交易模型 编写结构
定义需要的 变量
变量名称 :=或者: 解释 分号结尾
形成交易条 件和指令
交易条件 逗号 BK SP SK BP 分号结尾
注意事项: 1.模型中必须使用‘:=’定义变量名称。不允许只使用‘:’。 2.容易引起歧义的条件,最好用括号把完整条件括起来在和其他条件进行对比。 3.函数不允许作为变量名称 4.结尾一定要用分号 5.不要忘记写函数,例如(CLOSE,5)是错误的 6.涉及到引用系统指标的时候,一定要记得加等号去除画线;如果有参数一定要
MA(X,N) 求X在N周期内的简单移动平均。 计算方法:MA=(A1+A2+A3+A4+A5)/5 求A在5个周期内的 简单移动平均
MA5:MA(CLOSE,5); MA10:MA(CLOSE,10),COLORYELLOW; MA30:MA(CLOSE,30),COLORGREEN; MA60:MA(CLOSE,60),COLORMAGENTA;
MT4指标编程入门解析
MT4指标编程入门解析MetaTrader 4(MT4)是一种用于外汇和股票交易的流行交易平台,该平台允许用户使用各种技术指标来进行分析和预测市场趋势。
通过编写自定义指标,交易者可以利用MT4的强大功能来制定他们自己的交易策略。
本文将介绍如何编程MT4指标的基本知识和步骤。
在编写指标之前,您需要了解一些MT4指标编程的基本语法和函数。
MT4使用一种名为MQL4的专有编程语言来编写指标和自动化交易脚本。
MQL4类似于C语言,并且有许多内置函数和操作符可供使用。
在编写指标时,您需要熟悉以下一些常用函数和操作符:1.`iMA`:计算移动平均线的函数。
它接受多个参数,包括计算平均线的价格类型、计算平均线的周期等。
2.`iRSI`:计算相对强弱指标(RSI)的函数。
RSI用于测量市场超买和超卖的情况。
3.`iMACD`:计算移动平均收敛/发散指标(MACD)的函数。
MACD用于判断市场的趋势和方向。
4. `iBands`:计算布林带指标的函数。
布林带用于测量市场波动性。
此外,还有其他一些常用的函数和操作符,如数学函数(例如`MathMax`和`MathMin`)、条件语句(例如`if`和`else`)以及循环(例如`for`和`while`)。
一旦您熟悉了这些基本知识,就可以开始编写您自己的指标了。
下面是编写一个简单移动平均线指标的示例代码:```mql4#property indicator_chart_window#property indicator_buffers 1#property indicator_color1 Blueextern int period = 14;double ma_buffer[];void OnInitSetIndexBuffer(0, ma_buffer, INDICATOR_DATA);int start = prev_calculated > 0 ? prev_calculated - 1 : 0;for (int i = start; i < rates_total; i++)ma_buffer[i] = iMA(NULL, 0, period, 0, MODE_SMA, PRICE_CLOSE, i);}```在这个示例中,我们定义了一个名为`ma_buffer`的浮点数数组,用于存储移动平均线的值。
交易模型编写教程
一、程序化交易的编写㈠、交易模型编写规范和一般原则1、编辑平台支持的操作符2、编辑平台支持的函数⑴引用数据⑵金融统计⑶数理统计⑷逻辑判断⑸数学运算⑹时间函数⑺绘图3、编辑平台可以使用的常数注:在公式内即使你定义了某种颜色,在显示的时候也未必是此种颜色,取决于背景颜色当前页面里是否保了该指标的颜色及您是否在显示的时候改变了该指标的颜色设置。
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三者中最大的数值。
(7)IFELSE(C,A,B)如果条件C成立则返回A值,否则返回B值例:IFELSE(CLOSE>REF(CLOSE,1),1,0);表示若今日收盘价高于前一日收盘价,则返回1,否则返回05、编辑平台使用的交易指令交易模型中的交易指令如下:期货交易指令股票、权证、外汇交易指令套利模型中的交易指令如下:注:在效果测试使用如下机制:连续的开仓指令只使用第一个指令进行开仓,开仓时使用当时的全部资金,连续的平仓指令,只有第一个有效,平掉当时的全部持仓,其他的平仓指令算做错误指令!6、快速入门★以下模型源码内容仅供编写参考使用,如用于交易使用,风险自负。
程序化交易模型 指标通达信指标公式源码
程序化交易模型指标LC:=REF(CLOSE,1);RSI1:=SMA(MAX(CLOSE-LC,0),6,1)/SMA(ABS(CLOSE-LC),6,1)*100;卖点:=CROSS(85,RSI1)*30,COLOR00FF00,LINETHICK2;卖:IF(卖点,6.5,0),STICK,COLORGREEN,LINETHICK4;洗钱A:=(CLOSE-LLV(LOW,32))/(HHV(HIGH,32)-LLV(LOW,32))*1.2*CLOSE;量1:=EMA(洗钱A,3);量2:=EMA(洗钱A,5);量3:=EMA(洗钱A,7);STICKLINE(量1>量2,量3,量1,3,1),COLORRED;STICKLINE(量1<量2,量3,量1,2,0),COLORCYAN;T1:=量2>量3 AND 量1<REF(量1,1);T2:=量2<量3 AND 量1>REF(量1,1);STICKLINE(T1,量1,量3,2,0),COLORYELLOW;STICKLINE(T2,量1,量3,3,1),COLORFF00FF;洗钱B:=SMA(洗钱A,13,1);分水岭:SMA(洗钱B,2.5,1.5),LINETHICK2,COLORWHITE;牛线:3*洗钱B-2*分水岭,LINETHICK2,COLORFF00FF ;DRAWTEXT_FIX(C>O,1,1,0,' 程序化交易模型'),COLORRED;熊线:4*分水岭-3*洗钱B,LINETHICK2,COLORFF6633;DIF1:=EMA(C,12)-EMA(C,26);DEA1:=EMA(DIF1,9);MACD1:=2*(DIF1-DEA1);QZQ:=BARSLAST(REF(MACD,1)<0 AND MACD>0);QM:=LLVBARS(MACD1,QZQ+20);MQDZ:=IF(QM>QZQ,REF(MACD1,QM),0);QF:=LLVBARS(DIF1,QZQ+20);DQDZ:=IF(QF>QZQ,REF(DIF1,QF),0);XG1:=MACD1<0 AND MACD1>MQDZ AND DIF1<0 AND DIF1>DQDZ ANDC=LLV(C,QZQ+20) AND MQDZ<0 AND DQDZ<0;XG:REF(XG1,1)=1 AND MACD1>REF(MACD1,1);VAR21A:=(REF(HIGH,1)+REF(LOW,1))/2;VAR61:=REF(CLOSE,1);VAR70A:=SMA(MAX(CLOSE-VAR61,0),6,1)/SMA(ABS(CLOSE-VAR61),6,1)*100; DRAWICON(CROSS(90,VAR70A),H*0.8.04,9);MTM1:=C-REF(C,1);A013:=HHV(HIGH,34);A014:=(2*CLOSE+HIGH+LOW)/4;A015:=LLV(LOW,34);A016:=EMA(((A014-A015)/(A013-A015))*100,13);A017:=EMA(0.667*REF(A016,1)+0.333*A016,2);KKMD:=A016-A017>1 AND A016<30 AND A017<30;DRAWTEXT(FILTER(KKMD,30),L*0.05,'▲短买'),COLOR00FFFF;VAR06:=REF(C,1);VAR07:=SMA(MAX(C-VAR06,0),6,1)/SMA(ABS(C-VAR06),6,1)*100; DRAWTEXT(CROSS(82,VAR07),H*0.9,'◤减仓'),COLORGREEN;RSVB:=(C-LLV(L,25))/(HHV(HIGH,25)-LLV(L,25))*100;K:=SMA(RSVB,3,1);D:=SMA(K,3,1);J:=3*K-2*D;VARA6:=(2*C+H+L)/3;VARA7:=EMA(EMA(EMA(VARA6,4),4),4);VARA8:=(VARA7-REF(VARA7,1))/REF(VARA7,1)*100;VARA9:=MA(VARA8,3)+0.03;VARA10:=MA(VARA8,1);DRAWICON(CROSS(VARA9,VARA10) AND J>90,H*0.96,12),COLORGREEN; DRAWTEXT(CROSS(VARA9,VARA10) AND J>90,H*1.02,'卖'),COLORCYAN; LCD:=REF(CLOSE,1);RSI:=SMA(MAX(CLOSE-LCD,0),4.1,1)/SMA(ABS(CLOSE-LCD),4.1,1)*100; 建仓:CROSS(RSI,11)*10,COLORRED;。
第七章交易系统指标的编制方法
第七章交易系统指标的编制方法一、引言在金融市场中,交易指标是一种用来辅助交易决策和预测市场走势的工具。
交易指标可以基于价格、成交量、趋势、动量等市场数据进行计算,并通过各种图形和图表的形式展示出来。
本章将介绍交易系统指标的编制方法。
二、常用交易系统指标常用的交易系统指标包括移动平均线、相对强弱指标(RSI)、随机指标(KDJ)、布林带等。
这些指标是根据市场数据进行计算,并通过图表的形式展示出来。
下面将逐一介绍这些指标的编制方法。
1.移动平均线移动平均线是通过计算一段时间内的价格平均值来反映市场价格的趋势特征的指标。
常用的移动平均线包括简单移动平均线(SMA)和指数移动平均线(EMA)。
SMA是将一段时间内的价格相加再除以时间长度来计算,而EMA是通过给不同的价格赋予不同的权重来计算。
移动平均线可以用来判断市场的趋势以及买入和卖出的时机。
2.相对强弱指标(RSI)相对强弱指标是通过计算一段时间内市场上涨和下跌的比率来判断市场的超买和超卖情况。
RSI的计算方法是用最近N天的上涨总幅度除以最近N天的上涨幅度总和再加1、当RSI超过70时,市场被视为超买状态,当RSI低于30时,市场被视为超卖状态。
3.随机指标(KDJ)随机指标是通过计算一段时间内价格的最高价和最低价来判断市场的超买和超卖情况。
KDJ的计算方法是用最近N天的收盘价减去最近N天的最低价,再除以最近N天的最高价减去最近N天的最低价,再乘以100。
当KDJ超过80时,市场被视为超买状态,当KDJ低于20时,市场被视为超卖状态。
4.布林带布林带是通过计算一段时间内价格的标准差来判断市场价格的波动情况。
布林带由一个中轨线和上下两条弧形线组成,中轨线是移动平均线,上下两条弧形线是在中轨线的基础上加减一定倍数的标准差得到的。
布林带可以用来判断市场的波动情况以及买入和卖出的时机。
交易系统指标的编制方法可以分为以下几个步骤:1.数据收集:首先需要收集金融市场的相关数据,包括价格数据、成交量数据、开盘价和收盘价等。
第4-讲 从技术分析到程序化交易:跨指标模型的编写
1、常用指标分类 量仓分析指标:
① 多空量比指标:
M:=DUALVOLUME('M');//5周期(主动买量-主动卖量)的平均数值。 N:=DUALVOLUME('N');//主动买量-主动卖量的差 DRAWCOLUMNCHART(N,SCALE>=0.5,M>=0); //当主动买大于主动卖的时候,向上画柱高为N的红柱。反之向下画柱高为N的绿柱 注意: a)“一定周期”由参数P的数值决定,如果不定义P,默认为5周期。P不能直接定义 ,需要在参数列表中定义。 b)主动买量比例和主动卖量比例相等或者一边是100%,不画柱。 c)在日、周、月周期上考虑交割信息(即交割后,重新挂牌,要重新计算)。 d)在日线下以周期例如1分钟、3分钟不跨日计算(即新的交易日的第一根开始重新 计算)。
MA5:=MA(CLOSE,5); MA10:=MA(CLOSE,10); 金叉 CROSSUP(MA5,MA10); 死叉 CROSSDOWN(MA5,MA10);
② 三条均线多头排列:5日均线、10日均线、30日均线多头排列,持续3天。
MA5:=MA(CLOSE,5); MA10:=MA(CLOSE,10); MA30:=MA(CLOSE,30); CC:=MA5>MA30 AND MA10>MA30; 综合判断条件 EVERY(CC,3) 练习:三条均线空头排列如何编写?如果是指数加权平均线多头排列如何编写? 关键字:CROSSUP、CROSSDOWN > 、< &&=AND EVERY MA
注意:a)参数优化不支持对小数进行优化。如果需要进行参数优化,可以对模型源 码进行修改,将模型源码中的小数参数乘以0.1或者0.01等,然后将参数列表中的小 数参数数值乘以10或者100变为整数即可 b) SARLINE:SAR(N,STEP1,MVALUE1),CIRCLEDOT;是系统指标,对其做了特殊 处理,按照这种写法可以与K线叠加显示,不压缩K线图。如果 SARLINE:SAR(N,STEP1,MVALUE1);这样定义SAR,显示指标线会压缩K线图。大阳线:开盘价即为最低,收盘价即为最高;当根K线涨幅大于4%
程序化指标
功能-专家系统-公式管理器-点击其他公式-新建-需注意的是,公式一,画线方法选项为主图叠加公式一为提示买入卖出公式如下:(添加到空白处)EMA5:EMA(C,5),COLORFF00FF,LINETHICK1;EMA10:EMA(C,10),COLOR00FFFF,LINETHICK1; 买:=EMA(C,5);卖:=EMA(SLOPE(C,21)*20+C,55);AA:=买>卖;BB:=卖>买; ;买入:DRAWICON(CROSS(买,卖),L-0.2,1);卖出:DRAWICON(CROSS(卖,买),H+0.2,2); STICKLINE(AA,C,O,3,0),COLOR000099; STICKLINE(AA,H,L,0.5,0),COLOR000099; STICKLINE(BB,C,O,3,0),COLORFF0099; STICKLINE(BB,H,L,0.5,0),COLOR660099; STICKLINE(AA,CLOSE,OPEN,3.0,0),COLOR9900CC; STICKLINE(AA,CLOSE,OPEN,2.5,0),COLORFF00CC; STICKLINE(AA,CLOSE,OPEN,1.9,0),COLORFF00FF;STICKLINE(AA,CLOSE,OPEN,1.0,0),COLORFF33FF; STICKLINE(AA,CLOSE,OPEN,0.5,0),COLORFF66FF; STICKLINE(AA,CLOSE,OPEN,0.2,0),COLORFF99FF; STICKLINE(BB,CLOSE,OPEN,3,0),COLOR006633; STICKLINE(BB,CLOSE,OPEN,2.5,0),COLOR339933; STICKLINE(BB,CLOSE,OPEN,1.9,0),COLOR669933; STICKLINE(BB,CLOSE,OPEN,1.5,0),COLOR33CC33; STICKLINE(BB,CLOSE,OPEN,1.0,0),COLOR66CC33; STICKLINE(BB,CLOSE,OPEN,0.2,0),COLORCCFF33; STICKLINE(买入,O,(C-O)/2+O,3,0),COLOR335555; STICKLINE(买入,O,(C-O)/2+O,2.2,0),COLOR338888; STICKLINE(买入,O,(C-O)/2+O,1.5,0),COLOR33AAAA; STICKLINE(买入,O,(C-O)/2+O,1,0),COLOR33CCCC; STICKLINE(买入,O,(C-O)/2+O,0,0),COLOR33EEEE; STICKLINE(卖出,O,(C-O)/2+O,3,0),COLOR550055; STICKLINE(卖出,O,(C-O)/2+O,2.2,0),COLOR880088; STICKLINE(卖出,O,(C-O)/2+O,1.5,0),COLORAA00AA; STICKLINE(卖出,O,(C-O)/2+O,1,0),COLORCC00CC; STICKLINE(卖出,O,(C-O)/2+O,0.5,0),COLOREE00EE;公式二为大单净量(画线方式为附图)V AR1:=C-REF(C,1);V AR2:=O-REF(O,1);V AR3:=H-REF(H,1);V AR4:=L-REF(L,1);V AR5:=(V AR1+V AR2+V AR3+V AR4)/4;机构●大户:V AR5*VOL/10000,LINETHICK0;STICKLINE(机构●大户>0,机构●大户,0,2.3,0), COLORRED; STICKLINE(机构●大户<0,机构●大户,0,2.3,0) ,COLORGREEN;。
个人如何实现程序化交易?
个人如何实现程序化交易?
个人如何实现程序化交易?
查看更多
把你的思路变成可以量化的计算机语言就可以了。
程序化交易现在实行很容易,国内文华财经,交易开拓者,包括国信 TS 等都可以实现。
如果你懂编程,这几个软件上手都不困难。
如果你不懂编程,建议你使用文华财经,它的编程语
言很容易掌握。
当初我最开始就是使用的文华财经,用了一个月的时间基本上就可以把自己的想法编
写出来并且模拟运行测试的。
最主要是你要有自己的交易想法,并且能够量化。
在学习方面,我强烈建议你去看一本书,叫做海龟交易法则。
这本书,完整的展示了一套程序化
交易方法,你可以把书中的模型用计算机实现出来,并且运行一段时间感受一下。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
意义 加法 减法 乘法 除法 与(并且) 或(或者) 大于 小于 大于等于 小于等于 不等于 等于 只定义一个局部变量 (这个变量在画图时是不 画的) 声明了一个变量,在画 图时画出它并且按这个 名字显示。
例 CLOSE+OPEN 表示求收盘价及开盘价的和。 CLOSE-OPEN 表示求收盘价及开盘价的差。 CLOSE*OPEN 表示求收盘价及开盘价的积。 CLOSE/OPEN 表示求收盘价及开盘价的商。
策略的 程序化
趋势模型示范: K线变红,做多; K线变兰,做空。 MA200:=MA(CLOSE,200); CLOSE>MA200,BPK; CLOSE<=MA200,SPK;
交易指令示意图
策略的 验证
策略的 完善
持续N根K线变色,确定交易。 MA200:=MA(CLOSE,200); EVERY(CLOSE>MA200,N),BPK; EVERY(MA200>=CLOSE,N),SPK;
A是一个中间变量,只需要定义不需要画线,所以用“:=”
A:=CLOSE; MA5:MA(A,5);
MA(X, N)
求X在N周期内的简单移动平均。 计算方法:MA=(A1+A2+A3+A4+A5)/5 求A在5个 周期内的简单移动平均
例2 编写均线组合
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10),COLORYE LLOW;
HHV(X,N)
得到X在N个周期内的移动平均,M为权重(M 为常数)。 计算方法:SMA(N)=SMA(N-1)*(NM)/N+X(N)*M/N。
得到X在N周期内的最高值,如果N=0,则从 本地数据的第一个有效周期开始算起。 例:HHV(HIGH,13);求13个周期内的最高价 的最大值。
1、如何查阅函数列 表
2、如何新建一个指 标
3、常用函数示最新价),也可简写为 C。
HIGH
引用最高价,也可简写为 H。
LOW
引用最低价,也可简写为 L。
OPEN
引用开盘价,也可简写为 O。
OPI
引用持仓量
VOL
引用成交量,也可简写为 V。
例1 编写5周期均线 5周期均线
CLOSE>OPEN 表示判断当前周期是否收阳。 CLOSE=OPEN 表示判断当前周期是否平盘。
TMP1:=(OPEN+CLOSE)/2; MA1:MA(TMP1,10); 上面的公式的第一个语句定义了一个局部变量TMP1, 在下面一行中引用了这个局部变量,但是要注意的 是这个公式在画图的时候只画了第二条语句所求出 的结果。
正确认识程序化交易
交易中最大的敌人不是市场而是交易者自己。 我们每一次失败的经历都说明:不是市场太聪明 而是我们太自作聪明。 为了避免我们被主观情绪所困扰,我们可以使用 机械式的交易系统来规范我们的交易活动,但即使 有了交易系统,交易是否成功还是决定于人本身, 在于交易者能否始终坚持自己的交易体系。
强化的种类
正强化 — 奖励
负强化 — 惩罚
消退
— 无效
随机强化 — 挑战
策略完善的过程
策略的 图形化
收盘价在年线上,K线显示红色。 收盘价在年线下,K线显示兰色。 MA200:MA(CLOSE,200); STICKLINE(CLOSE>MA200,OPEN,CLOSE,COLORRED,0); STICKLINE(CLOSE<=MA200,OPEN,CLOSE,COLORCYAN, 0); DRAWLINE(CLOSE>MA200,HIGH,CLOSE>MA200,LOW, COLORRED); DRAWLINE(CLOSE<=MA200,HIGH,CLOSE<=MA200,LO W,COLORCYAN);
MA30:MA(CLOSE,30),COLORGR EEN;
MA60:MA(CLOSE,60),COLORM AGENTA;
我想看到K线和均线组合一起显示
如何最快捷的增加K线在我的指标里
当需要书写的源代码比较长时,如果系统中已经 有完整的指标,我们可以直接拿来引用,而不需 要重复录入。
本节掌握重点:如何通过【引用其他公式】功能, 利用现有指标。
文华财经交易技术研究部 阎璐
程序化交易具有客观性。它是事先将投资 者的交易策略和经验以计算机语言的形式 输入电脑中,再以数据计算出来的买卖信 号为依据去进行交易。交易中不会受交易 者主观策略的影响而随时改变。杜绝投资 人可能因为盘势所产生的情绪进行追涨杀 跌的操作,从而避免人性化交易的缺点, 也进而消除了交易中的主观随意性,大大 减轻了交易者下单前的恐惧、持仓中的焦 虑和平仓后的后悔
能力扩展
摆脱繁重的盯盘 摆脱大量计算 可以交易更多的品种
当盘中价格上下波动,导致交易信号反复时,如何解决?
在Mytrader一键通2009中可以使用“全自动交易信号消失以后,自 动恢复持仓”解决指令忽闪的问题
在全自动状态下,如果指令消失,系统会自动恢复到最近的一次交易指令的状态和手数 例:使用模型自动交易沪铜0811在2008年8月22日发出卖出开仓信号,之后在2008年9月4 号发出买开并平空指令, 系统会自动将8月22日的持仓平掉并开多仓,此时如果买平开指令消失, 系统会按照8月22日的开仓方向及手数重新开空仓,并平掉多单,这样既保住了8月22日到 9月4日之间的盈利又保持了原来的趋势继续盈利.
例3 K线+均线组合
例3 KDJ公式
RSV:=(CLOSELLV(LOW,9))/(HHV(HIGH,9)LLV(LOW,9))*100;
K:SMA(RSV,3,1),COLORWHITE; D:SMA(K,3,1),COLORYELLOW; J:3*K-2*D,COLORMAGENTA;
SMA(X,N, M)
交易模型基础编写教程
本节重点掌握:(一)操作符 (二)基本函数和语法
了解学习公式编写时常用的运算符号(加、减、乘、 除法)、条件关系(大于、等于、小于等)以及 定义变量操作符。
重点内容: “:=”和“:”在定义变量上的区别。
操作符 + - * / && || > < >= <= <> = :=