金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1536|回复: 10

请老师编写个指标

[复制链接]

1

主题

6

帖子

6

积分

Rank: 1

等级: 新手上路

注册:
2025-2-17
曾用名:
发表于 2025-2-19 11:34 | 显示全部楼层 |阅读模式
老师好,正准备从别的软件上转移到金字塔上来,但原来用的是麦语言,对于金字塔的语言不会用,请老师帮我写个策略,我用来测试和对照学习;
1,价格大于60均线和分时线、MACD是红柱、5日均线向上倾斜,             开多单;
2,价格低于30均线和当日开盘价、MACD是绿柱、10均线向下倾斜,       开空单;
3,价格从上向下穿过分时线时并且是多头持仓状态时,                         平多单;
4,价格由下往上穿过分时线时并且是空头持仓状态时,                         平空单;
5,当5日均线向上穿过30日均线时,                                平空单同时开多单;
6,当5日均线从上向下穿过40均线时,                             平多单同时开空单;
7,买开后,从买入价回落20个点,                                 止损平仓;
8,卖开后,从卖出价上涨10个点,                                 止损平仓;
9,开仓多单后,价格跌破开仓的这根K线的最低点时,      止损平仓;
10,开仓空单后,价格涨破开仓的这根K线的最高处时,    止损平仓;
11,第根K线限制开仓平仓各一次;
12,每天22:55分平仓;
13,每天14:55分平仓;

请老师在我对应的序号里编写(每个语句做个注释),各个线条不要隐藏,便于我对照学习和修改,谢谢老师,今天看完后如果学习容易的话就准备买软件了。                              


补充内容 (2025-2-19 10:14):
对了,要即时价模型,价格一达到就开平仓,不要等K线走完了再复核开仓。
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-19 13:15 | 显示全部楼层
INPUT:MA60(60,1,200,5), MA30(30,1,200,5), MA10(10,1,200,5), MA40(40,1,200,5);  // 均线参数
INPUT:P(26,20,40,2), S(12,5,30,3), M(9,2,20,2);  // MACD参数
INPUT:手数(1,1,10000,10);  // 开仓手数参数

// 均线计算
MA5Line := MA(CLOSE, 5);
MA60Line := MA(CLOSE, MA60);
MA30Line := MA(CLOSE, MA30);
MA10Line := MA(CLOSE, MA10);
MA40Line := MA(CLOSE, MA40);

// MACD指标
DIFF := EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  := EMA(DIFF,M);
MACD := 2*(DIFF-DEA);
n1:=todaybar;
dm:=4-INTPART(LOG(C));
结算价:ROUNDS(IF(sum(vol,n1)=0,C,sum(C*vol,n1)/sum(vol,n1)),2+dm),colorred;
// 开多条件:价格大于60均线和分时线、MACD是红柱、5日均线向上倾斜
开多条件 := CLOSE > MA60Line AND CLOSE > 结算价 AND MACD > 0 AND ma(close,5) > ref(ma(close,5),1);

// 开空条件:价格低于30均线和当日开盘价、MACD是绿柱、10均线向下倾斜
开空条件 := CLOSE < MA30Line AND CLOSE < ref(open,todaybar) AND MACD < 0 AND ma(close,10) < ref(ma(close,10),1);

// 平多条件:价格从上向下穿过分时线时并且是多头持仓状态
平多条件 := CROSS(close,结算价) AND HOLDING > 0;

// 平空条件:价格由下往上穿过分时线时并且是空头持仓状态
平空条件 := CROSS(结算价, close) AND HOLDING < 0;

// 均线交叉平多单同时开多单
均线金叉条件 := CROSS(MA5Line, MA30Line);
if 均线金叉条件 then begin
    平空: SELLSHORT(1,HOLDING,MARKET);
    开多: BUY(1,手数, MARKET);
end

// 均线交叉平多单同时开空单
均线死叉条件 := CROSS(MA5Line, MA40Line);
if 均线死叉条件 then begin
    平多: SELL(1,HOLDING,MARKET);
    开空: BUYSHORT(1,手数, MARKET);
end

// 止损平仓:买开后,从买入价回落20个点
止损平多条件 := CLOSE < OPEN - 20*mindiff;
if 开多条件 and HOLDING > 0 then SELL(1,HOLDING,MARKET);

// 止损平仓:卖开后,从卖出价上涨10个点
止损平空条件 := CLOSE > OPEN + 10*mindiff;
if 开空条件 and HOLDING < 0 then BUYSHORT(1,HOLDING,MARKET);

// 止损平仓:开仓多单后,价格跌破开仓的这根K线的最低点
止损平多条件2 := CLOSE < REF(LOW,enterbars) AND HOLDING > 0;
if 开多条件 and HOLDING > 0 then SELL(1,HOLDING,MARKET);

// 止损平仓:开仓空单后,价格涨破开仓的这根K线的最高点
止损平空条件2 := CLOSE > REF(HIGH,enterbars) AND HOLDING < 0;
if 开空条件 and HOLDING < 0 then BUYSHORT(1,HOLDING,MARKET);

// 每天22:55分和14:55分平仓
IF time=225500 or time=145500 THEN BEGIN
    SELL(1,HOLDING,MARKET);
    SELLSHORT(1,HOLDING,MARKET);
END

// 下单模块
if 开多条件 and HOLDING = 0 then BUY(1,手数, MARKET); // 开多
if 开空条件 and HOLDING = 0 then BUYSHORT(1,手数, MARKET); // 开空
if 平多条件 then SELL(1,HOLDING,MARKET); // 平多
if 平空条件 then SELLSHORT(1,HOLDING,MARKET); // 平空
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

6

帖子

6

积分

Rank: 1

等级: 新手上路

注册:
2025-2-17
曾用名:
 楼主| 发表于 2025-2-19 13:23 | 显示全部楼层
好的,谢谢老师
回复

使用道具 举报

1

主题

6

帖子

6

积分

Rank: 1

等级: 新手上路

注册:
2025-2-17
曾用名:
 楼主| 发表于 2025-2-19 13:35 | 显示全部楼层
老师,要写上手里有持仓了的,在没有平仓的情况下,不再开新仓。  因为现在测试了一下,是同一根K线里开了多单后又平仓,然后在下一根K线也也是这样的,几乎每根K线都这样的,请老师检查 一下。
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-19 13:40 | 显示全部楼层
INPUT:MA60(60,1,200,5), MA30(30,1,200,5), MA10(10,1,200,5), MA40(40,1,200,5);  // 均线参数
INPUT:P(26,20,40,2), S(12,5,30,3), M(9,2,20,2);  // MACD参数
INPUT:手数(1,1,10000,10);  // 开仓手数参数

// 均线计算
MA5Line := MA(CLOSE, 5);
MA60Line := MA(CLOSE, MA60);
MA30Line := MA(CLOSE, MA30);
MA10Line := MA(CLOSE, MA10);
MA40Line := MA(CLOSE, MA40);

// MACD指标
DIFF := EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  := EMA(DIFF,M);
MACD := 2*(DIFF-DEA);
n1:=todaybar;
dm:=4-INTPART(LOG(C));
结算价:ROUNDS(IF(sum(vol,n1)=0,C,sum(C*vol,n1)/sum(vol,n1)),2+dm),colorred;
// 开多条件:价格大于60均线和分时线、MACD是红柱、5日均线向上倾斜
开多条件 := CLOSE > MA60Line AND CLOSE > 结算价 AND MACD > 0 AND ma(close,5) > ref(ma(close,5),1);

// 开空条件:价格低于30均线和当日开盘价、MACD是绿柱、10均线向下倾斜
开空条件 := CLOSE < MA30Line AND CLOSE < ref(open,todaybar) AND MACD < 0 AND ma(close,10) < ref(ma(close,10),1);

// 平多条件:价格从上向下穿过分时线时并且是多头持仓状态
平多条件 := CROSS(close,结算价) AND HOLDING > 0;

// 平空条件:价格由下往上穿过分时线时并且是空头持仓状态
平空条件 := CROSS(结算价, close) AND HOLDING < 0;
// 下单模块
if 开多条件 and HOLDING = 0 then BUY(1,手数, marketr); // 开多
if 开空条件 and HOLDING = 0 then BUYSHORT(1,手数, marketr); // 开空
if 平多条件 then SELL(1,HOLDING,marketr); // 平多
if 平空条件 then SELLSHORT(1,HOLDING,marketr); // 平空
// 均线交叉平多单同时开多单
均线金叉条件 := CROSS(MA5Line, MA30Line);
if 均线金叉条件 then begin
    平空: SELLSHORT(1,HOLDING,marketr);
    开多: BUY(holding=0,手数, marketr);
end

// 均线交叉平多单同时开空单
均线死叉条件 := CROSS(MA5Line, MA40Line);
if 均线死叉条件 then begin
    平多: SELL(1,HOLDING,marketr);
    开空: BUYSHORT(holding=0,手数, marketr);
end

// 止损平仓:买开后,从买入价回落20个点
止损平多条件 := CLOSE < enterprice - 20*mindiff;
if 止损平多条件 and HOLDING > 0 then SELL(1,HOLDING,marketr);

// 止损平仓:卖开后,从卖出价上涨10个点
止损平空条件 := CLOSE > enterprice + 10*mindiff;
if 止损平空条件 and HOLDING < 0 then sellSHORT(1,HOLDING,marketr);

// 止损平仓:开仓多单后,价格跌破开仓的这根K线的最低点
止损平多条件2 := CLOSE < REF(LOW,enterbars) AND HOLDING > 0;
if 止损平多条件2 and HOLDING > 0 then SELL(1,HOLDING,marketr);

// 止损平仓:开仓空单后,价格涨破开仓的这根K线的最高点
止损平空条件2 := CLOSE > REF(HIGH,enterbars) AND HOLDING < 0;
if 止损平空条件2 and HOLDING <=0 0 then sellshort(1,HOLDING,marketr);

// 每天22:55分和14:55分平仓
IF time=225500 or time=145500 THEN BEGIN
    SELL(1,HOLDING,marketr);
    SELLSHORT(1,HOLDING,marketr);
END

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

使用道具 举报

1

主题

6

帖子

6

积分

Rank: 1

等级: 新手上路

注册:
2025-2-17
曾用名:
 楼主| 发表于 2025-2-19 13:59 | 显示全部楼层
技术008 发表于 2025-2-19 13:40
INPUT:MA60(60,1,200,5), MA30(30,1,200,5), MA10(10,1,200,5), MA40(40,1,200,5);  // 均线参数
INPUT:P( ...

请老师再帮我画一条开盘价的线,就是每天的开盘价会一直显示在页面上的,白色线
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-19 14:00 | 显示全部楼层
a:valuewhen(todaybar=1,open)
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

6

帖子

6

积分

Rank: 1

等级: 新手上路

注册:
2025-2-17
曾用名:
 楼主| 发表于 2025-2-21 16:59 | 显示全部楼层
谢谢老师,请帮我写一些语句:

1,5日均线向上穿过10日均线;10日均线向下穿过60日均线;

2,价格由上向下穿过当日开盘价;价格从下往上穿过当日开盘价;

3,当价格跌破开仓的那根K线最低点5个价位并且多头持仓时、止损;

4,当价格上破开仓的那根K线最高点10个价位并且空头持仓时、止损;

5,前一根K线是阳线;  前一根K线是阴线;

请老师帮我按顺序编写一下,我留作编写时的语句备用。谢谢!

补充内容 (2025-2-21 17:03):
6,价格大于当日开盘价;价格小于当日开盘价;
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-21 17:01 | 显示全部楼层
建议用户自己试着编写,上诉代码基本就是均线系统,和一楼例子非常近似
建议用户自己先行编写
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

6

帖子

6

积分

Rank: 1

等级: 新手上路

注册:
2025-2-17
曾用名:
 楼主| 发表于 2025-2-21 17:05 | 显示全部楼层
技术008 发表于 2025-2-21 17:01
建议用户自己试着编写,上诉代码基本就是均线系统,和一楼例子非常近似
建议用户自己先行编写

请帮我写一下:价格大于当日开盘价和小于当日开盘价这个语句,那个语句我改得不对。

补充内容 (2025-2-21 17:10):
就是第2条和第6条,那个语句我根据1楼的写法,结果写得不对,还请老师给写一下,谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-17 04:58 , Processed in 0.177008 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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