这是布林交易系统一部分,有些学习于本论坛,在此先谢谢前面的提问者和论坛解答人员了!
//均线//布林上下轨
MA20:=MA(CLOSE,20);
UPPER:= ma20 + 2*STD(CLOSE,20);
LOWER:= ma20 - 2*STD(CLOSE,20);
variable:MaxWin=0;//有仓位时最大获利幅度
TuPo:=0;//突破上轨几个最小变动价位
HuiCe:=0;//回撤幅度
ZhiSunJia:=0;//记录止损价
//从上---下破高轨,开空
if h>upper then
begin
HuiCe:=(h-c)/mindiff; //记录回撤
ZhiSunJia:=h+BianDong*mindiff;//止损价
end
KaiKongTiaoJian:=if (HuiCe>BianDong,1,0);//开空条件
buyshort(filter(KaiKongTiaoJian,5) and holding=0,1,market),ORDERQUEUE;//开空后5个周期内过滤条件。
//判断当前持仓状态下的最大盈利
win:=0;
WinHuiCe:=0;
//跟踪止赢止损
if holding<0 and enterbars > 0 then
begin
win:=(enterprice-c)/enterprice*100; //记录最大盈利
if win > MaxWin then MaxWin:=win;
WinHuiCe:=(MaxWin-win)/MaxWin*100; //最大盈利后的回调幅度
end
//出现浮动亏损比如0.5%或高于最高价几个变动价位就平仓
平空止损:SELLshort((win<-0.5 or c>ZhiSunJia) and holding<0,0);
//出现最高盈利后,回落30%或赢利2%平仓出场
平空止赢:SELLshort((WinHuiCe>30 or win>2) and holding<0, 0);
想请教的是:
(1)我的代码中希望成交价格至少在上轨以上,而且是跟着报价只上不下,开空的,而图表交易上我选逐K线,它的模拟成交价格是当K收盘价,不知道代码错在哪?
(2)我登陆模拟期货帐号后,晚上我回来复盘,看到图表上有交易信号,可是底部的帐号栏成交明细里什么成交也没有,还是原始开户状态,资金没有变。不知道为什么?
(3)因为这里的思路是反转交易,所以我希望能采用快速轮询的方式,对所有的期货品种的多个周期进行监控,那么,每根K线里的每个TICK数据都会执到这个代码,前面的几个变量中,variable:MaxWin=0是不是在当根K线周期有效?还是在当天均有效?
(4)其它几个变量TuPo、HuiCe、ZhiSunJia,是不是某个TICK数据到后,运行一遍就清零了?还是当根K线清零?
谢谢!
代码中许多变量为定义,无法直接调试。
1.根据你的需求,你的开仓价应该用限价,而不是市价方式处理。限定需要的价格。 在图表上的不同下单指令的处理方式有所差别,你可以参考这个链接
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=52160
2.提供交易日志 需要说明问题发生的日期时段,交易的周期和品种。
交易---下单设置---程序化交易里 之前勾选下单日志的会有记录, 日志在金字塔安装目录的weisoftstock/ setting / orderlog中
3.如果你想每一笔数据都执行一次,需要使用高频模式。variable定义的变量只在第一根k上进行初始动作。
单个指标加载后的,一次刷新过程中起作用。指标加载后,定义语句在第一根K线处初始化为设定值,后面的K线调用此全局变量计算时,
调用到的值是上一根K线计算的返回值。当行情更新,指标重新刷新时,那么此变量又会在第一根K线处被定义语句初始化。
4.其它几个变量TuPo、HuiCe、ZhiSunJia,公式每运行一次,他们就会从新初始化为0,然后参与后面的计算。