金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 随心而飘

请老师帮忙编写一个指标

[复制链接]

28

主题

100

帖子

100

积分

等级: 免费版

注册:
2025-1-2
曾用名:
 楼主| 发表于 2025-1-13 14:21 | 显示全部楼层
持有股票底仓2000手,以昨收盘价为起如基准价。

卖出及平仓条件:

1,如果当前价格比起始基准价上涨9%,则卖出三分之一持仓;上涨15%再卖出三分之一持仓,上涨20%以上,则卖出所有持仓
2、5日均线下穿10均线,全部卖出平仓
3、如果当前价格比起始基准价低于5%,则卖出二分之一持仓; 低于起始基准价10%,则卖出所有持仓。

老师,根据上面条件,我自己编写了,请老师检测下正确吗?谢谢!


INPUT: BASE_PRICE(CLOSE[1]), // 昨收盘价作为起始基准价
       N1(5), N2(10);        // 5日和10日均线周期


MA1: MA(C, N1);
MA2: MA(C, N2);

// 定义持仓量
var holding = 2000;

// 卖出及平仓条件
IF C >= BASE_PRICE * 1.09 AND holding > 0 THEN BEGIN
    SELL("上涨9%", holding / 3, MARKET);
    holding := holding - holding / 3;
END;

IF C >= BASE_PRICE * 1.15 AND holding > 0 THEN BEGIN
    SELL("上涨15%", holding / 3, MARKET);
    holding := holding - holding / 3;
END;

IF C >= BASE_PRICE * 1.20 AND holding > 0 THEN BEGIN
    SELL("上涨20%", holding, MARKET);
    holding := 0;
END;

IF CROSS(MA1, MA2, -1) AND holding > 0 THEN BEGIN
    SELL("5日均线下穿10日均线", holding, MARKET);
    holding := 0;
END;

IF C <= BASE_PRICE * 0.95 AND holding > 0 THEN BEGIN
    SELL("下跌5%", holding / 2, MARKET);
    holding := holding - holding / 2;
END;

IF C <= BASE_PRICE * 0.90 AND holding > 0 THEN BEGIN
    SELL("下跌10%", holding, MARKET);
    holding := 0;
END;
回复

使用道具 举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-1-13 14:48 | 显示全部楼层
// 定义持仓量
variable: flag = 0;

// 卖出及平仓条件
IF C >= BASE_PRICE * 1.09 AND flag = 0 THEN BEGIN
    SELL(1, holding / 3, MARKET);
    flag:=1;
END;

IF C >= BASE_PRICE * 1.15 AND flag=1 THEN BEGIN
    SELL(1, holding / 3, MARKET);
    flag:=2;
END;

IF C >= BASE_PRICE * 1.20 AND flag=2 THEN BEGIN
    SELL(1, hh, MARKET);
    flag:=0;
END;



分批平仓要这么写,用一个变量来记录它走过哪种,这样控制每一个区间只能平仓一次
这个你最好自己思考思考这种设计,比如flag=0平仓后flag就是1了,就不会在走当前这个逻辑,跳到下一个盈利幅度。大致逻辑是这样的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

28

主题

100

帖子

100

积分

等级: 免费版

注册:
2025-1-2
曾用名:
 楼主| 发表于 2025-1-13 14:51 | 显示全部楼层
3、百分比跟踪止损,初始止损价设定为6%:(1)买入的股票下跌6%卖出平仓,(2)如果买入的股票每上涨6%,即止损价比原始买入价提高6%,价格以每日收盘价为准。以此类推

老师,这句话的语法确实错了,应该写成 :  
  
初始止损点设为下跌6% ,(1)买入的股票下跌6%,则卖出所有持仓;

(2)如果买入的股票上涨6%,即止损点比原始买入价提高6%,在这个价位下跌6%触发止损,以此类推,价格以每日收盘价为准。

这个方法能在股票价格上涨时锁定部分利润,并在价格下跌时及时止损,从而有效地管理了风险。
回复

使用道具 举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-1-13 14:52 | 显示全部楼层
如果买入的股票上涨6%,即止损点比原始买入价提高6%,在这个价位下跌6%触发止损,以此类推,价格以每日收盘价为准
还是没理解
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

28

主题

100

帖子

100

积分

等级: 免费版

注册:
2025-1-2
曾用名:
 楼主| 发表于 2025-1-13 14:53 | 显示全部楼层
2、开仓买入的股票涨幅超过16%以上冲高回落4.5%,则卖出所有持仓;


这句话是回撤平仓
回复

使用道具 举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-1-13 14:55 | 显示全部楼层
如果买入的股票上涨6%,即止损点比原始买入价提高6%,在这个价位下跌6%触发止损,以此类推,价格以每日收盘价为准
还是没理解

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

使用道具 举报

28

主题

100

帖子

100

积分

等级: 免费版

注册:
2025-1-2
曾用名:
 楼主| 发表于 2025-1-13 15:02 | 显示全部楼层
打比方说,100元买入,不跌反涨,涨到了6%,变成106元了,以后止损就是以106元为基准,106元跌6%,即平仓卖出
回复

使用道具 举报

28

主题

100

帖子

100

积分

等级: 免费版

注册:
2025-1-2
曾用名:
 楼主| 发表于 2025-1-13 15:09 | 显示全部楼层

老师,我自己编写下面条件,请老师检查一下,是否正确

持有底仓2000手的卖出及平仓条件:

1,如果当前价格比起始基准价上涨9%,则卖出三分之一持仓;上涨15%再卖出三分之一持仓,上涨20%以上,则卖出所有持仓
2、5日均线下穿10均线,全部卖出平仓
3、如果当前价格比起始基准价低于5%,则卖出二分之一持仓; 低于起始基准价10%,则卖出所有持仓


INPUT: BASE_PRICE(CLOSE[1]), // 昨收盘价作为起始基准价
       N1(5), N2(10);        // 5日和10日均线周期

// 计算均线
MA1: MA(C, N1);
MA2: MA(C, N2);

// 定义持仓量
var holding = 2000;

// 卖出及平仓条件
IF C >= BASE_PRICE * 1.09 AND holding > 0 THEN BEGIN
    SELL("上涨9%", holding / 3, MARKET);
    holding := holding - holding / 3;
END;

IF C >= BASE_PRICE * 1.15 AND holding > 0 THEN BEGIN
    SELL("上涨15%", holding / 3, MARKET);
    holding := holding - holding / 3;
END;

IF C >= BASE_PRICE * 1.20 AND holding > 0 THEN BEGIN
    SELL("上涨20%", holding, MARKET);
    holding := 0;
END;

IF CROSS(MA1, MA2, -1) AND holding > 0 THEN BEGIN
    SELL("5日均线下穿10日均线", holding, MARKET);
    holding := 0;
END;

IF C <= BASE_PRICE * 0.95 AND holding > 0 THEN BEGIN
    SELL("下跌5%", holding / 2, MARKET);
    holding := holding - holding / 2;
END;

IF C <= BASE_PRICE * 0.90 AND holding > 0 THEN BEGIN
    SELL("下跌10%", holding, MARKET);
    holding := 0;
END;
回复

使用道具 举报

28

主题

100

帖子

100

积分

等级: 免费版

注册:
2025-1-2
曾用名:
 楼主| 发表于 2025-1-13 15:31 | 显示全部楼层
老师,我现在最迫切需要的是编写一些较好的实用的止损止盈条件。
手中持有一大堆股票,在元旦期间外出旅游,没有看盘,结果股市大跌,错过止损时机,损失惨重!
所以现在匆忙求助老师帮助编写完善止损策略。
至于真正要量化交易,得花大功夫研究,也不一定能行。谢谢老师啦!
回复

使用道具 举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-1-13 15:32 | 显示全部楼层
分批平仓上面不是写了吗
你先看下啊,先去了解这样的使用

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 21:29 , Processed in 0.126514 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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