以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- [求助]关于减仓补仓 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=58985) |
-- 作者:skylands -- 发布时间:2013/11/20 10:12:41 -- [求助]关于减仓补仓 我想实现这样一个功能,即: 1. 在每天收盘前的最后一分钟之初,即进入15:15分的那一瞬间,平掉一半仓位; 2. 在每天开盘的第一分钟(即开盘的那一瞬间),如果开盘价与昨日收盘价相差不到0.5%,就立即补上前日所减之仓位。 我写了如下的代码,但反复测试都不准确,一个是实际的减仓和补仓量很混乱,与意图不符,另一个是时间上好像不太准确。敬请帮助检查一下,看看问题在哪里?拜托拜托 T1:=time>151400 and time<=151500; T2:=time>=091500 and time<=091600; 减仓量:=holding/2; 当日开盘价:=valuewhen(date<>ref(date,1),open); 前日收盘价:=ref(close,1); 开盘差:=当日开盘价/前日收盘价; 补仓条件:=开盘差<=1.005 and 开盘差>=0.995; 昨日持仓量:=ref(holding,1); if T1 then begin sell(holding>0,减仓量,marketr); sellshort(holding<0,减仓量,marketr); end if T2 and 补仓条件 then begin buy(holding>0,昨日持仓量,thisclose); buyshort(holding<0,昨日持仓量,thisclose); end |
-- 作者:skylands -- 发布时间:2013/11/20 10:14:15 -- 对了,补充一下,模型是1分钟、固定1秒轮询…… |
-- 作者:jinzhe -- 发布时间:2013/11/20 10:22:29 -- 1. 在每天收盘前的最后一分钟之初,即进入15:15分的那一瞬间,平掉一半仓位;
2. 在每天开盘的第一分钟(即开盘的那一瞬间),如果开盘价与昨日收盘价相差不到0.5%,就立即补上前日所减之仓位。
if time=151500 then sell(1,holding/2,market); r1:=ref(holding,1); if todaybar=1 and abs((o-ref(close,1))/ref(close,1))<0.005 then buy(1,r1,market) |
-- 作者:skylands -- 发布时间:2013/11/20 11:03:16 -- if time=151500 then sell(1,holding/2,market); 1. 这里是不是用marketr更好?本周期么,过了151500可就没机会平了? 2. 括号里的1是指什么?
|
-- 作者:jinzhe -- 发布时间:2013/11/20 11:05:37 -- 1.market改成limitr,open 2.哪里的1? |
-- 作者:skylands -- 发布时间:2013/11/20 12:55:21 -- if time=151500 then sell(1,holding/2,market); buy(1,r1,market)
|
-- 作者:jinzhe -- 发布时间:2013/11/20 13:22:45 -- 表示无条件满足 |
-- 作者:skylands -- 发布时间:2013/11/22 15:23:39 -- 关于前几天你指教的这个问题,我按你的思路实施了,具体这么写的: if time=151445 then begin sell(holding>0,holding/2,marketr); sellshort(holding<0,holding/2,marketr); end 我用两个不同的模拟账户测试,另一个是if time=151500 then...但是这两天发现都没有如预期的减仓……请帮看看问题可能出在哪儿?
|
-- 作者:jinzhe -- 发布时间:2013/11/22 15:43:34 -- 用走完k线模式的? |
-- 作者:skylands -- 发布时间:2013/11/22 15:44:23 -- 固定1秒轮询呀…… |