金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3468|回复: 5

烦请请老师看下哪里写错了

[复制链接]

2

主题

4

帖子

4

积分

Rank: 1

等级: 新手上路

注册:
2022-6-28
曾用名:
发表于 2022-6-28 11:52 | 显示全部楼层 |阅读模式
请老师帮检查一下我的策略,写好后加载图表没有信号,测试螺纹钢加权指数,一个交易信号也没有,我反复检查也不知什么原因,请老师帮忙检查一下哪里出错了。谢谢
策略:1、多单,10日均线上穿60日均线并且某日的收盘价是过去20天的最高收盘价,在日交易收盘前买入开仓      
2、空单,10日均线下穿60日均线并且某日的收盘价是过去20天的最低价,在日交易收盘前卖出开仓
3、 止损:多开以后最高的某一日收盘价减去ATR*2的价格就是止损价格。空开以后最低的某一日收盘价加上ATR*2的价格就是止损价格

INPUT:A(10,0,100,1 );
INPUT:B(60,0,100,1 );
INPUT:M(20,0,200,1 );
INPUT:N(1,1,1000,1 );

//中间变量
MA1:MA(CLOSE,A);
MA2:MA(CLOSE,B);
TR1 : MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR : MA(TR1,M);
H1:=HHV(C,9);
L1:=LLV(C,9);
SS:=N;

//交易条件
KD:=CROSS(MA1,MA2) AND C>H1 ;
KK:=CROSS(MA2,MA1) AND C<L1;
PD:=CROSS(MA2,MA1);
PK:=CROSS(MA1,MA2);

//止损条件
DTZS:=C<(ENTERPRICE-2*ATR);
KTZS:=C>(ENTERPRICE+2*ATR);

//交易系统
SELL(HOLDING>0 AND PD,HOLDING,MARKET);
SELLSHORT(HOLDING<0 AND PK,HOLDING,MARKET);
BUY(HOLDING=0 AND KD,SS,MARKET);
BUYSHORT(HOLDING=0 AND KK,SS,MARKET);

SELL(HOLDING>0 AND DTZS,HOLDING,MARKET);
SELLSHORT(HOLDING<0 AND KTZS,HOLDING,MARKET);

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-6-28 11:57 | 显示全部楼层
C>H1 这个条件永远不会满足的。

H1定义是包含当前C的。所以至多C=H1。
L1类似
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

2

主题

4

帖子

4

积分

Rank: 1

等级: 新手上路

注册:
2022-6-28
曾用名:
 楼主| 发表于 2022-6-28 15:28 | 显示全部楼层
谢谢老师。请问CROSS(MA1,MA2) 金叉后到当前K的最高价,怎么写
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-6-28 15:30 | 显示全部楼层
LEN:BARSLAST(CROSS(MA1,MA2));
HX:HHV(H,LEN);
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

2

主题

4

帖子

4

积分

Rank: 1

等级: 新手上路

注册:
2022-6-28
曾用名:
 楼主| 发表于 2022-6-28 17:26 | 显示全部楼层
老师,改写后,出现CROSS(MA1,MA2)后的第一个信号开多后都会立即平多,然后第二根k再开多。第二个问题是开多平多后,再次开多会出现开多平多再开多平多多个信号。请帮检查哪里出错
INPUT:A(10,0,1000,1 );
INPUT:B(60,0,1000,1 );
INPUT:M(20,0,200,1 );
INPUT:N(1,1,1000,1 );

//中间变量
MA1:MA(CLOSE,A);
MA2:MA(CLOSE,B);
TR1 :=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR :=MA(TR1,M);
H1:=HHV(C,9);
L1:=LLV(C,9);
SS:=N;
HEN:=BARSLAST(CROSS(MA1,MA2));
HX:=HHV(C,HEN);
LEN:=BARSLAST(CROSS(MA2,MA1));
LX:=LLV(C,LEN);


//交易条件
KD:=MA1>MA2 AND C=H1 ;//开多条件
KK:=MA1<MA2 AND C=L1;//开空条件
PD:=CROSS(MA2,MA1);
PK:=CROSS(MA1,MA2);

//止损条件
DTZS:=C<(HX-2*ATR);
KTZS:=C>(LX+2*ATR);

//交易系统
SELL(HOLDING>0 AND PD,HOLDING,MARKET);
SELLSHORT(HOLDING<0 AND PK,HOLDING,MARKET);
BUY(HOLDING=0 AND KD,SS,MARKET);
BUYSHORT(HOLDING=0 AND KK,SS,MARKET);

SELL(HOLDING>0 AND DTZS,HOLDING,MARKET);
SELLSHORT(HOLDING<0 AND KTZS,HOLDING,MARKET);
截图202206281724038208.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-6-29 08:54 | 显示全部楼层
1.先调整下语句顺序
//交易系统
SELL(HOLDING>0 AND PD,HOLDING,MARKET);
SELLSHORT(HOLDING<0 AND PK,HOLDING,MARKET);


多止损:SELL(HOLDING>0 AND DTZS,HOLDING,MARKET);
空止损:SELLSHORT(HOLDING<0 AND KTZS,HOLDING,MARKET);

BUY(HOLDING=0 AND KD,SS,MARKET);
BUYSHORT(HOLDING=0 AND KK,SS,MARKET);

2.
“第二个问题是开多平多后,再次开多会出现开多平多再开多平多多个信号”这些开平都是满足开平条件的,不是代码执行的问题。你开仓条件设置的相对宽松,而这段你看看前面有个高点,并且是金叉后的高点,你的HX此时肯定就是这个高点的值,就算减去2个atr也肯定比你下面那些K的C大的。所以导致开仓了就触发止损了。大概你需要再完善了开平的逻辑。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-1 21:32 , Processed in 0.257799 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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