金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3648|回复: 18

指标编写求助

[复制链接]

6

主题

27

帖子

37

积分

Rank: 2

等级: 标准版

注册:
2021-5-31
曾用名:
发表于 2021-6-30 22:48 | 显示全部楼层 |阅读模式
老师,晚上好

请帮忙看看以下我的策略编写是否正确:
我想图表交易监控4个品种,实现想法:
1、K线整体处于20日均线上,且收阳线,下根K线开盘价开多单(开盘价大于20均线),每个品种使用25%的可用资金;
2、K线整体处于20日均线下,且收阴线,下根K线开盘价平持有多单的50%(开盘价小于20均线)
3、如K线整体继续小于60日均线,且收阴线,下根K线开盘价剩余多单全平(开盘价小于60均线)
4、从条件1开始,循环监控;
备注:如条件2执行后,K线并未继续下跌,重新整体回到20日均线之上,且收阳线,下根K线开盘价开多单,继续用可用资金的25%(本条不知是否可以在图表交易中实现??)

cond1:min(open,close)>ma(close,20);
cond2:max(open,close)<ma(close,20);
cond3:max(open,close)<ma(close,60);
ma60:ma(c,60);
MID:  MA(CLOSE,20);//布林中轨
UPPER: MID + 2*STD(CLOSE,20);//布林上轨
LOWER: MID - 2*STD(CLOSE,20);//布林下轨

if ref(cond1,1) and open>MID and o<c and holding=0 THEN
BEGIN
        buy(1,25%,market),PERTRADER;
END
if ref(cond2,1)  and open<MID and o>c and holding>=0 THEN
BEGIN
        sell(1,50%,market),PERTRADER;
END

if ref(cond3,1)  and close<MID and o>c and holding>=0 THEN
BEGIN
        sell(1,0,market);
END


谢谢,辛苦啦

回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-7-1 08:54 | 显示全部楼层
1.资金分配这个是做不到的。25%是指账户总资金的25%这个没错,但是你多个品种下单,可不是给你自动每个都分25%。
完整的资金分配 除了多账号下单之外,几乎没办法很好的实现。有很多复杂的临界情况存在。

2.
if ref(cond1,1) and open>MID and o<c and holding=0 THEN
BEGIN
        buy(1,25%,market),PERTRADER;
END

很明显,阳线和cond1的判断 不在一个K上了。
ref(cond1 and o<c ,1)

3.开盘价开多单
这个没有体现出来。你写的是市价下单。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

6

主题

27

帖子

37

积分

Rank: 2

等级: 标准版

注册:
2021-5-31
曾用名:
 楼主| 发表于 2021-7-1 10:38 | 显示全部楼层
技术009 发表于 2021-7-1 08:54
1.资金分配这个是做不到的。25%是指账户总资金的25%这个没错,但是你多个品种下单,可不是给你自动每个都分 ...

谢谢老师

1、如果是只做一个品种,那这个百分比就可以完美执行了,对吗?
2、开盘价开多单,这个应该如何编写描述?
3、我根据指导重新修改了下,请阅:

if ref(cond1 and o<c,1) and open>MID and holding=0 THEN
BEGIN
        buy(1,25%,market),PERTRADER;
END
if ref(cond2 and o>c,1)  and open<MID and holding>=0 THEN
BEGIN
        sell(1,50%,market),PERTRADER;
END

if ref(cond3 and o>c,1)  and close<MID and holding>=0 THEN
BEGIN
        sell(1,0,market);
END

4、备注:如条件2执行后,K线并未继续下跌,重新整体回到20日均线之上,且收阳线,下根K线开盘价开多单,继续用可用资金的25%,请问这个能执行吗?
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-7-1 10:56 | 显示全部楼层
1.单个窗口下是的,。
2.buy(1,25%,limitr,o),PERTRADER; 要改成限价下单。实际交易模型必须选择固定轮训模式。
3.open<MID 这个的判断应该也要放到前一个K。
4.能啊。你这个不相当于继续执行条件1的逻辑了么。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

6

主题

27

帖子

37

积分

Rank: 2

等级: 标准版

注册:
2021-5-31
曾用名:
 楼主| 发表于 2021-7-1 11:27 | 显示全部楼层
技术009 发表于 2021-7-1 10:56
1.单个窗口下是的,。
2.buy(1,25%,limitr,o),PERTRADER; 要改成限价下单。实际交易模型必须选择固定轮训 ...

好的,谢谢,我再次修改了下,看看有无问题?

if ref(cond1 and o<c and open>MID,1) and holding=0 THEN
BEGIN
        buy(1,25%,limitr,o),PERTRADER;
END
if ref(cond2 and o>c and open<MID,1)   and holding>=0 THEN
BEGIN
        sell(1,50%,market),PERTRADER;
END

if ref(cond3 and o>c  and close<MID,1) and holding>=0 THEN
BEGIN
        sell(1,0,market);
END

针对上个帖子的第4条,我实际运行的过程中,K线重新整体回到20日均线之上,会出现每个K线都会有下单指令,因为我有剩余的50%持仓,所以holding>0,请问这个应该如何解决,我如何在K线突破后,只加一次仓??
回复

使用道具 举报

6

主题

27

帖子

37

积分

Rank: 2

等级: 标准版

注册:
2021-5-31
曾用名:
 楼主| 发表于 2021-7-1 12:07 | 显示全部楼层
100018985 发表于 2021-7-1 11:27
好的,谢谢,我再次修改了下,看看有无问题?

if ref(cond1 and oMID,1) and holding=0 THEN

截图202107011205448067..png

实际运行过程中,针对


if ref(cond2 and o>c and open<MID,1)   and holding>=0 THEN
BEGIN
        sell(1,50%,market),PERTRADER;
END

系统也会不停的开平多信号,这个应该如何解决呢?
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-7-1 13:14 | 显示全部楼层
你是要减仓只执行一次?直到全平后再次开仓。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

6

主题

27

帖子

37

积分

Rank: 2

等级: 标准版

注册:
2021-5-31
曾用名:
 楼主| 发表于 2021-7-1 13:22 | 显示全部楼层
技术009 发表于 2021-7-1 13:14
你是要减仓只执行一次?直到全平后再次开仓。

是的,下20日均线后,减仓一半一次,下60日均线,全部平仓。

如果未下60日均线,重新回上20日均线,再加仓,类似于加回原来的仓位
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-7-1 13:38 | 显示全部楼层
[PEL] 复制代码
cond1:=min(open,close)>ma(close,20);
cond2:=max(open,close)<ma(close,20);
cond3:=max(open,close)<ma(close,60);
ma60:ma(c,60);
MID:MA(CLOSE,20);//布林中轨
UPPER: MID + 2*STD(CLOSE,20);//布林上轨
LOWER: MID - 2*STD(CLOSE,20);//布林下轨

VARIABLE:mark:=1;
if ref(cond1 and o<c ,1) and open>MID and holding=0 THEN
BEGIN
buy(1,25%,limitr,o),PERTRADER;
END


if ref(cond3 and o>c,1)  and close<MID  and holding>=0 THEN
BEGIN
全平:sell(1,0,market);
mark:=1;
END

if ref(cond2 and o>c,1)  and open<MID  and holding>=0 and mark THEN
BEGIN
减仓:sell(1,50%,market),PERTRADER;
mark:=0;
END
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-7-1 13:38 | 显示全部楼层
“是的,下20日均线后,减仓一半一次,下60日均线,全部平仓。

如果未下60日均线,重新回上20日均线,再加仓,类似于加回原来的仓位”
这个的话,你如果二次开仓后  还允许后面再触发减仓?
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 10:51 , Processed in 0.158318 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表