以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp)
-- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4)
---- 分时图 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=145464)
|
-- 作者:程序学习者
-- 发布时间:2016/12/29 9:48:43
-- 分时图
这个是论坛里的老师写的,是对分时图上穿做多,下穿做空的策略?
我想做一些改进,这个程序如何改?
比方说:以一次上穿和一次下穿为总次一次,那么当天如果出现三次的。就停止开仓。或者说全部平仓。
同时,第一次上下穿越结算做,开仓为1手,那么第二次平仓之后再次开仓的仓位为2手,第三次越穿平仓之后再开仓的
仓位是4手;这样的交易策略如何写。
n1:=todaybar;
dm:=4-INTPART(LOG(C));
jsj:=ROUNDS(IF(sum(vol,n1)=0,C,sum(C*vol,n1)/sum(vol,n1)),2+dm);
cc:=c;
if cross(cc,jsj) then begin
buy(holding=0,1,marketr);
end
if cross(jsj,cc) then begin
buyshort(holding=0,1,marketr);
end
if c<jsj-5 then sell(1,0,marketr);
if c>jsj+5 then sellshort(1,0,marketr);
if time0>=timetot0(closetime(0))-5*60 then begin
sell(1,0,marketr);
sellshort(1,0,marketr);
end
|
-- 作者:jinzhe
-- 发布时间:2016/12/29 9:52:28
--
variable:ss=1;
variable:n=0;
if todaybar=1 then ss:=1;
if todaybar=1 then n:=0;
n1:=todaybar;
dm:=4-INTPART(LOG(C));
jsj:=ROUNDS(IF(sum(vol,n1)=0,C,sum(C*vol,n1)/sum(vol,n1)),2+dm);
cc:=c;
if cross(cc,jsj) or cross(jsj,cc) then n:=n+1;
if cross(n=4,0.5) then ss:=2;
if cross(n=6,0.5) then ss:=3;
if cross(cc,jsj) then begin
buy(holding=0,ss,marketr);
end
if cross(jsj,cc) then begin
buyshort(holding=0,ss,marketr);
end
if c<jsj-5 then sell(1,0,marketr);
if c>jsj+5 then sellshort(1,0,marketr);
if time0>=timetot0(closetime(0))-5*60 then begin
sell(1,0,marketr);
sellshort(1,0,marketr);
end
|
-- 作者:程序学习者
-- 发布时间:2016/12/29 9:53:24
--
此主题相关图片如下:1111111.jpg
![dvubb 图片点击可在新窗口打开查看](UploadFile/2016-12/201612299485553881.jpg)
昨天对八个品种进行了测试,发现一个问题?
就是有出现连续在一个品种上多头开仓了两次,所以在平仓上出现2手。理论上应该不会出现2手啊!
因为上穿一次开仓一手,再次上穿前要先下穿。而下穿后就要先平掉多头,再开空头。这样分析理论
上不可能会出现2手。这个出现2手是如何产生的。
|
-- 作者:jinzhe
-- 发布时间:2016/12/29 9:57:21
--
在另外的帖子里面说过,是信号闪烁
|
-- 作者:程序学习者
-- 发布时间:2016/12/30 10:15:33
--
您好!这个程序昨天测试我发现还有个问题?
就是都是开空和平空的数据。
也就是说当行情向下穿时,开了空仓开仓,当行情反过来上穿时就会平掉空头仓位。但没有
反过来进行多头开仓。麻烦老师帮我看看!
以下是我开仓的程序数据:
(另外老师给我的新的程序我还没有试,这是最早的程序!谢谢!)
序号 品种名称 公式名称 下单时间 类型 交易量 价格 滑点 1 MA05 甲醇1705 分时图 16/12/29 09:04:59 开空 1 2846 0 4 MA05 甲醇1705 分时图 16/12/29 09:07:58 平空 1 2854 0 17 MA05 甲醇1705 分时图 16/12/29 10:02:59 开空 1 2849 0 26 MA05 甲醇1705 分时图 16/12/29 10:35:58 平空 1 2857 0 31 MA05 甲醇1705 分时图 16/12/29 14:57:57 开空 1 2855 0 2 RU05 橡胶1705 分时图 16/12/29 09:05:00 开空 1 17740 0 3 RU05 橡胶1705 分时图 16/12/29 09:05:00 开空 1 17740 0 5 RU05 橡胶1705 分时图 16/12/29 09:11:00 平空 2 17835 0 6 RU05 橡胶1705 分时图 16/12/29 09:11:00 平空 2 0 0 7 CF05 棉花1705 分时图 16/12/29 09:11:02 开空 1 14840 0 8 CF05 棉花1705 分时图 16/12/29 09:12:01 平空 1 14850 0 9 CF05 棉花1705 分时图 16/12/29 09:13:02 开空 1 14840 0 10 CF05 棉花1705 分时图 16/12/29 09:14:01 平空 1 14855 1 11 CF05 棉花1705 分时图 16/12/29 09:18:00 开空 1 14840 0 12 RU05 橡胶1705 分时图 16/12/29 09:18:01 开空 1 17795 1 13 RU05 橡胶1705 分时图 16/12/29 09:18:01 开空 1 17795 1 14 RU05 橡胶1705 分时图 16/12/29 09:20:00 平空 2 17850 0 15 RU05 橡胶1705 分时图 16/12/29 09:20:00 平空 2 0 0 16 CF05 棉花1705 分时图 16/12/29 09:21:04 平空 1 14855 1
18 RU05 橡胶1705 分时图 16/12/29 10:04:00 开空 1 17805 0 19 RU05 橡胶1705 分时图 16/12/29 10:04:00 开空 1 17805 0 20 RM05 菜粕1705 分时图 16/12/29 10:05:59 开空 1 2327 0 21 RM05 菜粕1705 分时图 16/12/29 10:05:59 开空 1 2327 0 22 RU05 橡胶1705 分时图 16/12/29 10:30:01 平空 2 17855 0 23 RU05 橡胶1705 分时图 16/12/29 10:30:01 平空 2 0 0 24 RM05 菜粕1705 分时图 16/12/29 10:30:59 平空 2 2335 1 25 RM05 菜粕1705 分时图 16/12/29 10:30:59 平空 2 0 0
27 I05 矿石1705 分时图 16/12/29 11:16:00 开空 1 562.0 0 28 I05 矿石1705 分时图 16/12/29 11:23:59 平空 1 569.0 1 29 FG05 玻璃1705 分时图 16/12/29 14:10:58 开空 1 1252 1 30 FG05 玻璃1705 分时图 16/12/29 14:53:58 平空 1 1260 1 32 FG05 玻璃1705 分时图 16/12/29 14:58:58 开空 1 1253 1
n1:=todaybar;
dm:=4-INTPART(LOG(C));
jsj:=ROUNDS(IF(sum(vol,n1)=0,C,sum(C*vol,n1)/sum(vol,n1)),2+dm);
cc:=c;
if cross(cc,jsj) then begin
buy(holding=0,1,marketr);
end
if cross(jsj,cc) then begin
buyshort(holding=0,1,marketr);
end
if c<jsj-5 then sell(1,0,marketr);
if c>jsj+5 then sellshort(1,0,marketr);
if time0>=timetot0(closetime(0))-5*60 then begin
sell(1,0,marketr);
sellshort(1,0,marketr);
end
|
-- 作者:jinzhe
-- 发布时间:2016/12/30 10:23:15
--
指出上面那一堆交易里面哪个是你所说的有问题的
|
-- 作者:程序学习者
-- 发布时间:2016/12/30 10:43:42
--
此主题相关图片如下:ru.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2016-12/2016123010374682416.png) 可能是我的表达能力问题?老师您看一下图也许会清楚些?
RU1705昨天测试,都是开空的信号,但分时价上穿到结果价时,只是平了空头的单子。
没有反过来开多头的单子。我的意思是,上穿时,如果有空头单平了,反过来做多;
下穿时,如果有多头的单子平了,反过来做空。这样一来,只要有一次穿越,行情会一直
动态交易,直到收盘平仓。
2 RU05 橡胶1705 分时图 16/12/29 09:05:00 开空 1 17740 0 614833 3 RU05 橡胶1705 分时图 16/12/29 09:05:00 开空 1 17740 0 614833 5 RU05 橡胶1705 分时图 16/12/29 09:11:00 平空 2 17835 0 614833 6 RU05 橡胶1705 分时图 16/12/29 09:11:00 平空 2 0 0 12 RU05 橡胶1705 分时图 16/12/29 09:18:01 开空 1 17795 1 614833 13 RU05 橡胶1705 分时图 16/12/29 09:18:01 开空 1 17795 1 614833 14 RU05 橡胶1705 分时图 16/12/29 09:20:00 平空 2 17850 0 614833 15 RU05 橡胶1705 分时图 16/12/29 09:20:00 平空 2 0 0 18 RU05 橡胶1705 分时图 16/12/29 10:04:00 开空 1 17805 0 614833 19 RU05 橡胶1705 分时图 16/12/29 10:04:00 开空 1 17805 0 614833 22 RU05 橡胶1705 分时图 16/12/29 10:30:01 平空 2 17855 0 614833 23 RU05 橡胶1705 分时图 16/12/29 10:30:01 平空 2 0 0
|
-- 作者:程序学习者
-- 发布时间:2016/12/30 10:44:37
--
此主题相关图片如下:1111.jpg
![dvubb 图片点击可在新窗口打开查看](UploadFile/2016-12/2016123010443649991.jpg)
|
-- 作者:jinzhe
-- 发布时间:2016/12/30 10:56:31
--
variable:ss=1;
variable:n=0;
if todaybar=1 then ss:=1;
if todaybar=1 then n:=0;
n1:=todaybar;
dm:=4-INTPART(LOG(C));
jsj:=ROUNDS(IF(sum(vol,n1)=0,C,sum(C*vol,n1)/sum(vol,n1)),2+dm);
cc:=c;
if cross(cc,jsj) or cross(jsj,cc) then n:=n+1;
if cross(n=4,0.5) then ss:=2;
if cross(n=6,0.5) then ss:=3;
if cross(cc,jsj) then begin
sellshort(1,0,marketr);
buy(holding=0,ss,marketr);
end
if cross(jsj,cc) then begin
sell(1,0,marketr);
buyshort(holding=0,ss,marketr);
end
if time0>=timetot0(closetime(0))-5*60 then begin
sell(1,0,marketr);
sellshort(1,0,marketr);
end
|
-- 作者:程序学习者
-- 发布时间:2016/12/30 11:02:22
--
好的,谢谢您,我测试一下,如有问题再请教?
|