以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- 问题讨论:自动交易系统 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=124) |
-- 作者:金字塔 -- 发布时间:2009/10/31 17:19:08 -- 问题讨论:自动交易系统
本教程是基于您已经熟悉了金字塔的公式系统的前提条件下使用,如果您对金字塔的公式编写和自动交易还不熟悉,那么建议用户学习金字塔的自动交易的详细教程.
本贴只是对金字塔的程式化交易做一些基本的介绍和入门,如果需要详细的金字塔的程式化交易教程,用户请下载金字塔的程式化交易的教程。 http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=370
金字塔程式化交易的特点和与TradeStation等软件的不同点 金字塔为了满足不同层次用户的需要,提供两种程式化交易,图表程式化交易和后台程式化交易. 图表自动交易是为基础用户所设立,使用ENTERLONG,EXITLONG,ENTERSHORT,EXITSHORT这4种传统的交易信号来实现下单.交易过程是基于图表之上的,用户事先将写有上述4种交易信号的公式添加到图表上,然后再来启动交易. 后台程式化交易是基于后台的预警模式,金字塔提供了一系列的功能和众多交易函数,可以在不影响用户前台图形操作情况下,可以高效与预警系统一起工作来实现自动交易,并且可以一个交易策略同时交易几个品种。而TradeStation是必须在图表上才能实现交易的. TradeStation程式化交易时,图表上只有最后一个周期走完才发出交易指令,而金字塔提供了两种模式,一种是基于预警轮询模式,在一个K线周期内会被多次执行交易判断(频率取决于预警时间间隔这个选项),这样可以保证在出现信号时能够以最快速度的发出交易指令,但是用户不用担心一个周期内多次重复交易问题,因为金字塔可以自动防止此现象(可以使用ALLOWREPEAT控制符允许反复开平仓)。另外金字塔也提供K线走完再发信号这种工作模式,与TradeStation保持了一致. 由于程式化交易模式不同,所以用金字塔做自动交易时应特别注意几个问题: 1、使用了即时发出预警信号选项时,自动交易不局限于最后的K线走完,所以可能会导致中间发出信号,而价格变动后信号消失 2、使用了即时发出预警信号时,预警时间间隔控制轮询的频率,用户应该根据交易公式所用到的周期合理的分配间隔时间,防止由于间隔时间不合适而导致例如上传下破等指标信号漏掉的情况。
金字塔的图表程式化交易和后台程式化交易的简要描述和结构
前台图表交易 金字塔前台图表交易是将交易系统指标放在图表上进行显示和下单交易的,金字塔图表交易适用ENTERLONG,EXITLONG,ENTERSHORT,EXITSHORT这四种交易信号来分别表示多空头的进出场描述. 除此之外,金字塔还提供了功能更为强大的新交易系统函数,可以使用BUY,SELL,BUYSHORT,SELLSHORT,函数,对介入价位和仓位进行精确的控制,可以对譬如海龟交易法的头寸管理.金字塔的新交易系统函数,用户可以在公式函数列表的“交易系统”组里找到.但是需要注意的是金字塔的新交易系统,是不能与旧的交易系统比如ENTERLONG混用的.金字塔的新交易系统采取的虚拟仓位和资金再图表做显示和模拟交易的,使用之前用户需要在公式属性里将资金和费率设置正确,以确保能更加贴近实战.真实自动交易时,系统将根据交易指令发出的交易类型和价格以及数量进行下单交易.
后台程式化交易 金字塔的后台程式化交易在金字塔公式系统里用户可以在“后台程式化交易”函数组里找到,后台程式化交易是基于预警模式进行工作, 由于后台程式化交易是金字塔在后台进行,不需要图表打开不占用过多的资源,由于只只需要最后一个周期的信号,所以原则上公式不要多余计算,故效率高,便于对多个品种同一个策略进行轮循监控.用户前期编写的自动交易策略是需要先在图表上和程式化交易评测上通过后才可以放到后台去执行程式化交易。为了让用户更快的编写和熟悉金字塔的后台程式化交易,金字塔的程式化交易函数,前面都在交易系统函数名称前加 T 字母,比如BUY改为TBUY, 使用方法大致相同.户仔细注意查看函数的使用说明。与图表显示的交易系统函数不同的是,后台程式化交易的函数都使用的实际的用户持仓和资金.
使用金字塔自动交易的常见问题和注意事项: 1、前台图表ENTERLONG控制指令和BUY等图表显示函数是不能放在后台做监控交易的,但是将"允许程式化交易"勾去掉后单独做预警是可以的。 2、不带T的交易系统所有函数,均不能与ENTERLONG等传统的交易系统混用。 3、只有少数的带T的后台交易函数允许使用在Enterlong和BUY前台图表交易策略中. TAVGENTERPRICE,Taccount,Tholding,Tasset,但是金字塔强烈不建议使用,因为这样会造成图表上的交易信号与实际的下单记录不符。 4、金字塔的后台交易部分,使用手工闪电下单的记录,将无法通过比如TENTERPRICE等与交易记录有关函数中得到结果,但可以通过程式化交易监控中的手工下单干预功能完成此项目的。 5、金字塔的后台交易,查询持仓和资产均为用户当前的实际数值,如果多个策略同时多一个品种或通一个帐户进行操作会产生相互干扰现象,解决办法就是通过使用交易系统使用虚拟持仓和资金,这样就完全可以避免这种共振现象,但是推荐高级用户使用,因为需要很多技巧需要处理。 6、传统的交易信号ENTERLONG虽然功能较弱,但是由于不需要头寸管理,故金字塔可以使用公式的特殊算法达到高效运行,故在不需要介入点和仓位控制的策略中,尽量避免使用BUY等新交易系统,尤其在使用了BUY的新交易系统的策略中,使用未来函数更会导致效率下降。同样如此,如果在同一个策略中使用TBUY和BUY函数,也会导致在后台自动交易时的效率下降。 7、用以图表显示的交易系统和后台程式化交易的交易指令函数,参数有明显的不同,用户不能简单的将BUY函数加个T就可以直接后台交易,使用前应该将鼠标放在TBUY函数上认真看看函数说明。 8、BUY和TBUY等用以图表显示的交易系统和后台程式化交易的交易指令函数,参数有明显的不同,用户不能简单的将BUY函数加个T就可以直接后台交易,使用前应该将鼠标放在TBUY函数上认真看看函数说明。 9、TBUY(COND,V,[Type,P1,P2,AC,STOCK]),中括号的参数可以省略,但只可以是后面省略,不可以中间省略。tbuy(zd,1,mkt,\'003028\',hy);这样是一种错误的方法,应该改成tbuy(zd,1,mkt,0,0,\'003028\',hy) ;
网友为金字塔写的使用金字塔后台程式化交易的几点心得 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=1255 [此贴子已经被admin于2010-3-29 19:34:11编辑过]
|
-- 作者:金字塔 -- 发布时间:2009/10/31 17:21:18 -- 请注意以下的讨论均为金字塔的交易系统和后台程式化交易部分,对于初级的ENTERLONG自动交易信号部分,用户参考金字塔的程式化交易教程
奋勇的XXX 23:09:30
你好,是这样的,我不会编程,分析家什么也没用过,现在我想试试在金字塔弄简单程序化交易,针对外汇,每个品种虽然24小时交易,单活跃的时段也就几个小时,那么我怎么设定系统只在特定时段起作用呢,能否用金字塔自带的那个macd金死叉系统帮我编一下,我好有个大架子慢慢研究 奋勇的XXX 23:09:38 比如我需要有效时段是北京时间下午4点到凌晨2点,这样我可以测试系统,否则按24小时测试出来的结果大多数时候在来回砍 答复:简单的不能再简单的交易模型 MACD:="MACD"(26,12,9); 资产:ASSET,LINETHICK0; 可用现金:CASH(0),LINETHICK0; 持仓:HOLDING,LINETHICK0; TT1:=TIME>=110000 and TIME<205000;{开仓时段,对于外汇3时区,北京时间16:00---2:00为3时区的11:00---21:00} TT2:=TIME>=110000 and TIME<210000;{平仓时段} TJ:=CROSS(MACD,0); TJ1:=CROSS(0,MACD); {开多} BUY(tt1 and ref(TJ,1),1,market,o); {平多} SELL(tt1 and TJ1,持仓,thisclose,C); 上述公式可以在图表上进行显示和做交易评测,以及图表的程式化交易
当然要进行后台程序化交易,还需要用程式化交易函数替代模型相关的几个交易系统执行函数,如 tBUY替代BUY等,其中类型也要根据具体情况修改。 请仔细阅读有关交易函数和程式化函数及其举例。 再比如一个最简单的3天均线穿越5天均线的多头交易系统
资产:ASSET,LINETHICK0;
MA3:MA(C,3); BUY(CROSS(MA3,MA5),1,THISCLOSE); //开多1手
上述公式可以完整的显示在图表上和做图表自动交易,如果需要做后台程式化交易,那么只需替换两个交易函数即可
MA3:MA(C,3); TBUY(CROSS(MA3,MA5),1,LMT,C); //按照最新价限价开多
请注意TBUY和TSELL函数的参数出现了变化,真正的下单时,需要指定下单类型和价格的,否则系统会按照市价进行交易。 用以模拟交易的函数和真实交易的函数,大部分只是有了前面T字母差别,大部分的用以交易评测的交易系统,只要将交易函数部分前面加T字母即可解决,唯一区别最大的就是TBUY,TSELL,TBUYSHORT,TSELLSHORT 这4个函数与模拟交易用的函数区别较大,请仔细辨别。 请注意交易控制符 THISCLOSE 在真实交易中被 LMT 等真实交易控制符所取代,金字塔的模拟交易控制符和真实交易控制符两者不能通用。金字塔的真实下单函数只支持LMT限价 MKT市价 STP止损 STPLMT限价止损 这4个交易控制符 ![]() [此贴子已经被admin于2010-3-27 15:35:21编辑过]
|
-- 作者:金字塔 -- 发布时间:2009/10/31 17:22:51 -- Forex**** 11:14:03
我觉得手动开仓,自动止损比较好,开仓点还是由人来主动选择 forex**** 14:44:51 比如我手动开仓做多HG,然后止损放到sar下面0.003,我希望金字塔能帮我实现的就是移动止损的功能 forex**** 14:54:24 这样我可以安心睡觉 ,呵呵 答复:可以做, 我帮你做一个简单例子,你慢慢体会、修改 input:P(4,1,20),STEP(2,1,6),MAXP(20,5,100); 资产:ASSET,LINETHICK0; 可用现金:CASH(0),LINETHICK0; 持仓:HOLDING,LINETHICK0; SAR1:SAR(P,STEP,MAXP),CIRCLEDOT; BUY1:=SAR1+0.003;{止损放到sar上面0.003} SELL1:=SAR1-0.003;{止损放到sar下面0.003} ENTERLONG1:=cross(h,BUY1); EXITLONG1:=cross(SELL1,l); BUY(ENTERLONG1,20%,stopr,BUY1); //按照20%仓位下单 SELL(EXITLONG1 and 持仓>0,持仓,stopr ,SELL1); [此贴子已经被admin于2009-11-5 1:23:11编辑过]
|
-- 作者:金字塔 -- 发布时间:2009/10/31 17:24:39 -- 因为手动开仓,自动止损比较好,所以BUY和BUYSHORT语句不执行。
还需要用程式化交易函数替代模型相关的几个交易系统执行函数,如 tSELL替代SELL等,其中类型也要根据具体情况(对应IB_TWS的四种交易指令:LMT、MKT、STP、STPLMT)修改。如下蓝色部分 input:P(4,1,20),STEP(2,1,6),MAXP(20,5,100); SAR1:SAR(P,STEP,MAXP); BUY1:=SAR1+0.003;{止损放到sar上面0.003} SELL1:=SAR1-0.003;{止损放到sar下面0.003} ENTERLONG1:=cross(h,BUY1); EXITLONG1:=cross(SELL1,l); TBUY(ENTERLONG1,1,stp,BUY1); //请注意这里不再支持 20% 百分比仓位开仓条件 TSELL(EXITLONG1,0,stp ,SELL1); 请先使用纸帐户进行实盘测试 [此贴子已经被admin于2009-11-6 11:23:18编辑过]
|
-- 作者:金字塔 -- 发布时间:2009/10/31 17:26:35 -- Forex**** 11:18:51
请问:如何启动程式化交易? 答复: 选择[交易]---[本地预警与程式化交易] 或者Ctrl + A ---[新增条件]---选入监控的品种、时间间隔、钩选程式化交易,点击[指标公式]---选入[交易系统]---[SAR_T003]---选定周期,确定后,启动预警 ![]() [此贴子已经被admin于2009-11-4 21:40:53编辑过]
|
-- 作者:金字塔 -- 发布时间:2009/10/31 17:27:48 -- forex**** 10:58:29
我的advisor账户, 现在下面有2个帐号交易,是不是需要另外设置呢? forex**** 10:58:47 比如开仓的时候, 和平仓的时候 答复: 不用。advisor账户,在交易系统里,写进相应的帐号即可,如 按需要写,如\'U33503\'---开20,\'U33506\'---开30 tSELLSHORT(c2,持仓,STP,BUY1+0.25,0,\'U33503\'); tSELLSHORT(c2,持仓,STP,BUY1+0.25,0,\'U33506\'); tBUY(b1,20,STP ,BUY1+0.25,0,\'U33503\'); tBUY(b1,30,STP ,BUY1+0.25,0,\'U33506\'); tSELL(b2,持仓,SELL1-0.25,0,\'U33503\'); tSELL(b2,持仓,STP ,SELL1-0.25,0,\'U33506\'); tBUYSHORT(c1,20,STP ,SELL1-0.25,0,\'U33503\'); tBUYSHORT(c1,30,STP ,SELL1-0.25,0,\'U33506\'); [此贴子已经被admin于2010-1-4 17:35:46编辑过]
|
-- 作者:金字塔 -- 发布时间:2009/10/31 17:30:21 -- 在金字塔交易系统的评测中,一般可以按本周期或次周期的最高价、最低价、中间价、开盘价、收盘价进行统计。 |
-- 作者:DZGJTZ -- 发布时间:2009/11/25 10:19:21 -- 资产:ASSET,LINETHICK0; MA5:MA(C,5); TBUY(CROSS(MA5,MA27),50%,LMT,C); //按照最新价限价开多,按照50%仓位下单
请检查这样可以在正式的帐户可以实现吗? |
-- 作者:admin -- 发布时间:2009/11/25 11:57:26 -- 请注意 真实 交易,为了慎重起见,我们不支持百分比仓位的,用户需要指定一个具体的开平仓数量。 其他的,是可以的。 以下是引用DZGJTZ在2009-11-25 10:19:21的发言:
资产:ASSET,LINETHICK0; MA5:MA(C,5); TBUY(CROSS(MA5,MA27),50%,LMT,C); //按照最新价限价开多,按照50%仓位下单
请检查这样可以在正式的帐户可以实现吗? |
-- 作者:admin -- 发布时间:2009/11/25 13:45:10 -- 情确认你是否用的是最新的1。92最新版 |