- 精华
- 0
- 在线时间
- 171 小时
- UID
- 32158
- 积分
- 731
- 帖子
- 176
- 阅读权限
- 60
- 注册时间
- 2011-4-5
- 最后登录
- 2023-1-17
- 精华
- 0
- UID
- 32158
- 积分
- 731
- 帖子
- 176
- 主题
- 53
- 阅读权限
- 60
- 注册时间
- 2011-4-5
- 最后登录
- 2023-1-17
|
最近新学TradeBlazer公式,在翻阅论坛中“TradeBlazer公式”版块过往帖子过程中,将一些公式使用的小技巧之类的内容做了个收集。
希望对一些学习者也带来帮助。
开拓者公式学习:论坛精彩语录收集(三)
保证金不足,程序会直接强行平仓,即使不符合交易系统平仓条件时。
If(Time>=0.1455)
{
Sell(0,Open);
BuyToCover(0,Open);
}
If(Time==0.0900 && High>Low)
{
// 这才开始做交易
}
避免在8:59分触发交易信号
移动止损
全局变量,或者,序列变量
vol[3]就可以取3天前的成交量 在分钟线上可以用VolD(3)来取
交易系统是一个有机的整体
自己拼接数据来测试是规避期货合约与连续图换月缺口造成指标失真的方法。
交易系统只负责发单,发出去之后任务就算完成了。
这里的返回值只代表这个委托单的信息正确,会正常产生。
是否成交一般是通过委托价格配合交易助手来实现。
可以使用交易助手来帮助做自动撤单或是撤单再重发.
讯号出现又消失会造成连续建仓。
TradeBlazer公式入门教程
http://www.tradeblazer.net/forum/thread-242-1-1.html
http://www.tradeblazer.net/forum/thread-588-2-1.html
交易频繁的话滑点影响就很大
NumericSeries会导致速度变慢,这是肯定的,所以不需要的地方,即不用XXX[offset]向前引用,不传入序列变量参数传入函数,就不要用NumericSeries.直接用Numeric.
年度收益率是按照复利计算。
有效收益率是指 您的盈利/最大占用资金
在系统里加入了以下的代码应对价格突变:
If( MarketPosition!=0 && High!=Low && Open!=Close && con9 )//如果价格不是停板的时候(考虑到停板无法成交),才执行强制止损。
{
SetStopLoss(1,myloss,False);
}
If( MarketPosition!=0 && High==Low && Open==Close && con10 )//如果有持仓的时候,价格向有利方向突变,平仓
{
Sell;
BuyToCover;
}
我说一下趋势问题,最简单判断趋势可以用回归分析,用相关系数得出的据是-1-1之间。代表趋势的强弱。系统给出的回归分析用的角度是不对的,包括一些朋友说的什么“拐头”昂角“之类的。其实lanbotrend 无意中说了一句对的,用这些代替价格本身并不如直接使用价格。
系统出售或合作最好的解决办法是让别人试用一段时间后再说
一个委托指令在一个bar上只会产生一个信号,如果有循环,或者多个委托指令,则会产生多个信号。
看不到技术指标时:右键超级图表,查看技术指标分析设置,公式的信号显示是否为开。
PlotNumeric 该函数仅用于技术指标和特征走势,不支持其他公式类型。
If (PlotNumeric ("AR",ARValue)>180) Alert("AR超买");输出AR的值,并且当ARValue>180条件满足时,进行报警。
IIF(lastsell>open,open,lastsell) 执行真假值判断,根据逻辑测试的真假值返回不同的数值。
urrentContracts函数和A_TotalPosition函数 虽然都是取账户持仓,但是用法完全不同。
CurrentContracts与交易指令Buy、Sell、SellShort、BuyToCover等指令配套使用,MarketPosition也类似。
而A_TotalPosition函数与A_SendOrder指令关联,只能用在最后一个Bar且与账户关联时才有效。
在一个交易系统中建议不要混用两套不同的指令及函数体系。历史回测、验证算法用前者,实战用A_函数、Q_函数。
以上理解是否正确,请指点。谢谢!
我用tb编写指令的过程,经历了从不用函数到用函数,再到很少用函数、用很少函数的转变。
我觉得,简单的才是最有效的,多用ifelse,多用SetGlobalVar和SetTBProfileString,多用Commentary和FileAppend,尽量用A_BuyPosition和CurrentBar()这种没有复杂运算、很直接的函数,少用内部运算繁琐甚至花哨的函数,让自己把握交易的每一个运算过程,才能打造属于自己的交易圣杯。
我原先也自编了许多用户函数,后来发现没有必要,现在只用两三个函数。
最先用公共变量、序列变量,后来改用数据库关键字,最后还是回到公共变量,最简单有效。
TB软件里没有时间校正的设置,在登录认证服务器的时候,会自动同步电脑系统的时间。
SetTBProfileString记录开仓bar的索引
分笔交易数据(tick)
理解TB的执行流程http://www.tradeblazer.net/forum/thread-5584-1-1.html
每次出新版本都要放到一批!!
刚打开软件后,没有给全局变量赋值的时候,全局变量就是无效值
软件关闭或者工作区图表关闭,全局变量会变空,为无效值
每一个图表的单个技术指标,K线型态,特征走势都有50个全局变量。一个图表的所有交易指令共有50个全局变量。
TB公式常见问题: http://www.tradeblazer.net/forum/thread-905-1-1.html
跨周期获取数据,只能从小到大获取,不能从大周期获取小周期数据。可尝试利用两份图表M5和H1的数据库调用。
CurrentTime是取系统时间,过了指定时间,信号会消失
Time是取bar上的时间,会保留信号,但是要注意所选择的周期,例如:在5min周期上,time只能取到5min的倍数的时间.time只有0.1105,而不能取到0.1107,但是使用currenttime会信号消失
(date<>date[1])和(day<>Day[1]) 两者几乎一样,最好用(date<>date[1])。
判断是否为今日,首先要获得当天的日期(用currentdate),if(date!=currentdate)。
A函数发单不能用MarketPosition判断持仓,MarketPosition是控制buy、sell的委托指令了,A函数判断委托持仓用A_buyposition和A_sellposition,另外A函数需要用全局变量控制开仓
A函数只有在盘中才能调试
趋势线用plotnumeric来画
用close有可能会信号消失,向上突破改用high,向下突破用low
逻辑变量
如何限制一天中的交易次数?
http://tradeblazer.net/forum/vie ... a=page%3D1#pid52082
待续…… |
|