以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  补充程序 显示未编译  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=166378)

--  作者:f三年
--  发布时间:2018/11/8 9:38:50
--  补充程序 显示未编译
请老师帮忙   把程序止损1N    补完整  参考     刚刚自己补   金字塔显示未编译  

TR=Max(H-L,H-PDC,PDC-L)
其中:
      TR=真实波幅
      H=当日最高价
      L=当日最低价
      PDC=前一日收盘价

N(即ATR)的计算公式如下(其实就):
前面20天的TR值平均
绝对波动幅度=N*合约每一点所代表的价值
头寸规模单位n=账户的1%/绝对波动幅度
开仓时机:当五日均线>十日均线  且  五日均线>二十日均线 开仓n手做多
当五日均线<十日均线时,平仓
 当五日均线<十日均线  且  五日均线<二十日均线 开仓n手做空
当五日均线>十日均线时,平仓
止损为1N



 PDC:REF(C,1);
TR1:MAX(h-l,max(h-PDC,PDC-L));
ATR:MA(TR1,20);

绝对波动幅度:ATR*Multiplier;
手数:TASSET*0.01/绝对波动幅度;
ma5:ma(c,5);
ma10:ma(c,10);
ma20:ma(c,20);
buycond1:ma5>ma10 and ma5>ma20;//这种开仓条件可能会持续N个周期都能保持,会导致连续多个周期下单,直到条件不满足为止。
sellcond1:ma5<ma10;

buycond2:ma5<ma10 and ma5<ma20;
sellcond2:ma5>ma10;

if BUYCOND1 and tholding=0 then tbuy(1,手数,MKT);
if sellcond1 then tsell(1,tholding,mkt);

if BUYCOND2 and tholding=0 then tbuyshort(1,手数,MKT);
if sellcond2 then tsellshort(1,tholding,mkt);






--  作者:FireScript
--  发布时间:2018/11/8 9:45:59
--  
你编译下看下报错情况。这段代码我本地编译正常。
--  作者:f三年
--  发布时间:2018/11/8 9:50:00
--  
 PDC:REF(C,1);
TR1:MAX(h-l,max(h-PDC,PDC-L));
ATR:MA(TR1,20);

绝对波动幅度:ATR*Multiplier;
手数:TASSET*0.01/绝对波动幅度;
ma5:ma(c,5);
ma10:ma(c,10);
ma20:ma(c,20);
buycond1:ma5>ma10 and ma5>ma20;//这种开仓条件可能会持续N个周期都能保持,会导致连续多个周期下单,直到条件不满足为止。
sellcond1:ma5<ma10;

buycond2:ma5<ma10 and ma5<ma20;
sellcond2:ma5>ma10;

if BUYCOND1 and TBUYHOLDING(1)=0 then tbuy(1,手数,MKT);
if sellcond1 then tsell(1,TBUYHOLDING(1),mkt);

if BUYCOND2 and TSELLHOLDING(1)=0 then tbuyshort(1,手数,MKT);
if sellcond2 then tsellshort(1,TSELLHOLDING(1),mkt);

if TBUYHOLDING(1)>0 and c<DYNAINFO(211)-绝对波幅 then tsell(pd,TBUYHOLDING(1),mkt);
if TSELLHOLDING(1)>0 and c>DYNAINFO(211)+绝对波幅 then tsellshort(pk,TSELLHOLDING(1),mkt);

--  作者:FireScript
--  发布时间:2018/11/8 9:51:47
--  
 
图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

名称错了,这种低级错误,直接按照编译提示的错误去排查即可。

--  作者:f三年
--  发布时间:2018/11/8 9:57:10
--  
这样呢


PDC:REF(C,1);
TR1:MAX(h-l,max(h-PDC,PDC-L));
ATR:MA(TR1,20);

绝对波动幅度:ATR*Multiplier;
手数:TASSET*0.01/绝对波动幅度;
ma5:ma(c,5);
ma10:ma(c,10);
ma20:ma(c,20);
buycond1:ma5>ma10 and ma5>ma20;//这种开仓条件可能会持续N个周期都能保持,会导致连续多个周期下单,直到条件不满足为止。
sellcond1:ma5<ma10;

buycond2:ma5<ma10 and ma5<ma20;
sellcond2:ma5>ma10;

if BUYCOND1 and TBUYHOLDING(1)=0 then tbuy(1,手数,MKT);
if sellcond1 then tsell(1,TBUYHOLDING(1),mkt);

if BUYCOND2 and TSELLHOLDING(1)=0 then tbuyshort(1,手数,MKT);
if sellcond2 then tsellshort(1,TSELLHOLDING(1),mkt);

if cross(atr,tr1) then tsell(1,TBUYHOLDING(1),mkt);
if cross(tr1,atr) then tsellshort(1,TSELLHOLDING(1),mkt);

--  作者:FireScript
--  发布时间:2018/11/8 10:01:11
--  
 编译通过就可以了。
--  作者:f三年
--  发布时间:2018/11/8 10:26:20
--  
老师帮我检查下是不是这样表达  止损 1N 的
回撤太大的情况下  正常是控制仓位 还有什么办法吗   

--  作者:FireScript
--  发布时间:2018/11/8 10:28:22
--  
 “ 止损 1N 的”你这里到底是要如何止损呢?这样表述我不是很明白的。
--  作者:f三年
--  发布时间:2018/11/8 10:45:08
--  
 止损为1N   N(即ATR)的计算公式如下(其实就):
前面20天的TR值平均       TR=真实波幅     跟今天开盘没有关系   就是开盘前面的20天的TR值平均 



--  作者:FireScript
--  发布时间:2018/11/8 11:09:17
--  
 提供你的止损逻辑,我不是要你解释N1是什么。我是要知道, 你用这个怎么参与到止损逻辑里的。