金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3708|回复: 2

麻烦根据下面的源码,编写一个图表程序交易策略。

[复制链接]

4662

主题

4766

帖子

4791

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2023-3-24 08:55 | 显示全部楼层 |阅读模式
请教:麻烦根据下面的源码,编写一个图表程序交易策略。
S:EMA(CLOSE,12)-EMA(CLOSE,26);
L:EMA(DIF,9);
M:2*(S-L);
Z1:S,COLORGREEN,LINETHICK3;
K1:=BACKSET(Z1>REF(Z1,1),2);
K2:=BACKSET(Z1<REF(Z1,1),2);
红S:IF(K1,Z1,DRAWNULL),COLORRED,LINETHICK3;
绿S:IF(K2,Z1,DRAWNULL) ,COLORGREEN,LINETHICK3;

J1:M,COLORGREEN,LINETHICK3;
K6:=BACKSET(J1>REF(J1,1),2);
K7:=BACKSET(J1<REF(J1,1),2);
红M:IF(K6,J1,DRAWNULL),COLORRED,LINETHICK3;
绿M:IF(K7,J1,DRAWNULL),COLORGREEN,LINETHICK3;

VAR1:=(CLOSE-LLV(LOW,60))/(HHV(HIGH,60)-LLV(LOW,60))*100;
K:EMA(VAR1,3);
D:EMA(K,3);
J:3*K-2*D;
J3:J,COLORGREEN,LINETHICK3;
K3:=BACKSET(J3>REF(J3,1),2);
K4:=BACKSET(J3<REF(J3,1),2);
红J:IF(K3,J3,DRAWNULL),COLORRED,LINETHICK3;
绿J:IF(K4,J3,DRAWNULL) ,COLORGREEN,LINETHICK3;

Z2:K,COLORGREEN,LINETHICK3;
K8:=BACKSET(Z2>REF(Z2,1),2);
K9:=BACKSET(Z2<REF(Z2,1),2);
红K:IF(K8,Z2,DRAWNULL),COLORRED,LINETHICK3;
绿K:IF(K9,Z2,DRAWNULL),COLORGREEN,LINETHICK3;

具体要求是:
一、 当红J与红M、或者红J与红S、或者红J与红K,3个中任何一组同时见红,则开多单,如果有空单持仓,则先平仓空单,再开多单。
二、 当绿J与绿M、或者绿J与绿S、或者绿J与绿K,3个中任何一组同时见绿,则开空单,如果有多单持仓,则先平仓多单,再开空单。
三、 数量为10手。
四、 交易时间为21:00-14:59:30,日盘结束前30秒全部平仓,不管是多单还是空单。

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-3-24 09:33 | 显示全部楼层
1、你的这个指标中使用了backset函数,这个函数是未来函数,不能直接使用在交易系统的逐K模式下,只能通过引用的方式。但要注意,可能会造成你图表交易策略的信号闪烁问题,一般图表策略不建议使用未来函数。
2、你的这个指标中未定义DIF,按照MACD指标的定义,会替换为你定义的S变量。L为软件函数,不能作为变量名,把指标中的L改为了L1.
3、你的这个这个指标名称为KK,交易策略的范例参考如下:
INPUT:SS(10,1,100,1);

KK_红S:#KK.红S#;
KK_绿S:#KK.绿S#;
KK_红M:#KK.红M#;
KK_绿M:#KK.绿M#;
KK_红J:#KK.红J#;
KK_绿J:#KK.绿J#;
KK_红K:#KK.红K#;
KK_绿K:#KK.绿K#;

CONPKKD:(VALID(KK_红J)=1 AND VALID(KK_红M)=1) OR (VALID(KK_红J)=1 AND VALID(KK_红S)=1) OR (VALID(KK_红J)=1 AND VALID(KK_红K)=1);
CONPDKK:(VALID(KK_绿J)=1 AND VALID(KK_绿M)=1) OR (VALID(KK_绿J)=1 AND VALID(KK_绿S)=1) OR (VALID(KK_绿J)=1 AND VALID(KK_绿K)=1);

IF CONPKKD THEN BEGIN
   SELLSHORT(HOLDING<0,HOLDING,MARKET);
   BUY(HOLDING=0,SS,MARKET);
END

IF CONPDKK THEN BEGIN
   SELL(HOLDING>0,HOLDING,MARKET);
   BUYSHORT(HOLDING=0,SS,MARKET);
END

IF (ISLASTBAR AND T0TOTIME(TIMETOT0(CLOSETIME(0))-30)<=DYNAINFO(207)) OR (TIME=CLOSETIME(0) AND NOT(ISLASTBAR)) THEN   BEGIN  
   SELL(1,HOLDING,MARKET);           
   SELLSHORT(1,HOLDING,MARKET);         //提前30秒清仓,需要用固定间隔模式
END
截图202303240933562368.png
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

0

主题

1

帖子

1

积分

Rank: 1

等级: 新手上路

注册:
2023-3-12
曾用名:
发表于 2023-3-25 09:47 | 显示全部楼层
收到,谢谢老师费心指点
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-1 04:57 , Processed in 0.203477 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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