金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2982|回复: 9

交易策略梳理

[复制链接]

75

主题

191

帖子

191

积分

等级: 免费版

注册:
2023-4-11
曾用名:
发表于 2023-4-26 13:44 | 显示全部楼层 |阅读模式
感谢老师前两天的耐心讲解,通过对老师提供的策略代码的实际测试,发现实现情况并不是策略代码所表达的意思,多多少少有些偏差,可能是我描述不清,现在想对策略重新梳理,先完成如下需求:
固定止损止盈
1、开仓后,自动实现固定止损,为开仓价的  -20 个变动单位(这里需要和持仓均价比校,如果和开仓信号当根K线比较,会有很大偏差);
2、开仓后,自动实现固定止赢,为开仓位的 +20 个变动单位(这里需要和持仓均价比校,如果和开仓信号当根K线比较,会有很大偏差);

移动止损
1、开仓后,自动实现移动止损,初始位为开仓价的 -30  个变动单位,随着最大盈利上移作相应的变动。例如最大盈利出现过6个变动价位,移动止损就移动6个变动价位,如果最大盈利出现过20个变动价位,同理移动止损就移动20个变动价位。

标识线输出:
固定止损位;
固定止盈位;
移动止损位;

请老师帮忙实现多空平仓策略,谢谢!
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-4-26 14:36 | 显示全部楼层
固定的可以,这样收盘价和持仓均价做差值么,以多头为例。空头就改下盈亏计算方式,以及平仓语句就行了:
//止盈
IF C-AVGENTERPRICE>20*MINDIFF THEN BEGIN
SELL(1,HOLDING,MARKET);
END


//止损
IF AVGENTERPRICE-C>20*MINDIFF THEN BEGIN
SELL(1,HOLDING,MARKET);
END
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-4-26 14:40 | 显示全部楼层
本帖最后由 技术009 于 2023-4-26 14:42 编辑

“开仓后,自动实现移动止损,初始位为开仓价的 -30  个变动单位,随着最大盈利上移作相应的变动。例如最大盈利出现过6个变动价位,移动止损就移动6个变动价位,如果最大盈利出现过20个变动价位,同理移动止损就移动20个变动价位。”
通常都是最高盈利回落一定幅度,平仓。你如果按照最高盈利作为回撤幅度,等于是要回落到持仓线就平仓了?
你可以参考下这个策略范例:
金字塔决策交易系统 - BBS (weistock.com)

这个就是从最高盈利回撤平仓的思路。是按照百分百来的。按你这里的话,那差不多就是回撤100%或者90% 这种。

另外就是如果你是大周期不是很建议在图表上做止盈止损逻辑。


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

使用道具 举报

75

主题

191

帖子

191

积分

等级: 免费版

注册:
2023-4-11
曾用名:
 楼主| 发表于 2023-4-26 22:56 | 显示全部楼层
技术009 发表于 2023-4-26 14:40
“开仓后,自动实现移动止损,初始位为开仓价的 -30  个变动单位,随着最大盈利上移作相应的变动。例如最大 ...

[PEL] 复制代码
input:N(5,1,100,1);
//参数定义

DK:=STKINDI('','AA.DK',0,1) AND HOLDING>=0;
KK:=STKINDI('','AA.KK',0,1) AND HOLDING<=0;
 

//多单开仓模块****************************************************************************** 
//开多单
  IF DK AND HOLDING=0 THEN BEGIN [color=#ff0000]//老师,这个地方HODING=0用了多种方式还是限定不了开仓手数,我想只开一手,但是系统不停加仓,请问什么原因?[/color]
   多开:BUY(1,1,LIMIT,c);
  END
  
 //多单止损
   IF AVGENTERPRICE-C>15*MINDIFF AND HOLDING>0 THEN BEGIN
   多单固定止损:SELL(1,TODAYHOLDING,MARKET);[color=#ff00]//老师,这个地方不管用HODING还是用TODAYHODING,都不能有效进行平仓,请问什么原因?[/color]
END
DDGD:AVGENTERPRICE-C,NODRAW;

//多单移动止盈模块****************************************************************************** 
variable:maxprofit=0;//有仓位时最大获利幅度
input:N(5,1,100,1);

//判断当前持仓状态下的最大盈利
win:=0;
win2:=0;

//多单更新记录的部分
if holding > 0 and enterbars > 0 and win>30*MINDIFF then
begin
  win:=(c-AVGENTERPRICE)/enterprice*100; //记录最大盈利
  if win>maxprofit then
    maxprofit:=win;

  win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end


//出现最高盈利后,回落到盈利的N%平仓出场.
多移动止赢:SELL(win2 >= 90 and openprofit > 0, 0,limit,c);

//**********************************************************************************************************************************
//**********************************************************************************************************************************


//空单开仓模块****************************************************************************** 
//开空单
  IF KK=1 AND HOLDING=0 THEN BEGIN  [color=#ff00]//老师,这个地方HODING=0用了多种方式还是限定不了开仓手数,我想只开一手,但是系统不停加仓,请问什么原因?[/color]
   空开:BUYSHORT(1,1,LIMIT,c);
  END

 //空单止损
  IF C-AVGENTERPRICE>15*MINDIFF AND HOLDING<0 THEN BEGIN
  空单固定止损:SELLSHORT(1,TODAYHOLDING,MARKET);  [color=#ff00]//老师,这个地方不管用HODING还是用TODAYHODING,都不能有效进行平仓,请问什么原因?[/color]
END

KDGD:C-AVGENTERPRICE,NODRAW;

//空单移动止盈模块****************************************************************************** 
variable:maxprofit=0;//有仓位时最大获利幅度
input:N(5,1,100,1);

//判断当前持仓状态下的最大盈利
win:=0;
win2:=0;

//空单更新记录的部分
if holding < 0 and enterbars > 0 and win>30*mindiff then
begin
  win:=(AVGENTERPRICE-c)/enterprice*100; //记录最大盈利
  if win > maxprofit then
    maxprofit:=win;

win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end

空移动止盈:SELLshort(win2 >= 90 and openprofit > 0, 0,limit,c);


//请老师帮忙看一下这个开平仓控制为什么是失效的,另外请帮检查下移动止损的策略编写的是否正确。
回复

使用道具 举报

3

主题

731

帖子

772

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2023-4-27 08:06 | 显示全部楼层
汇聚 发表于 2023-4-26 22:56
[mw_shl_code=pel,true]
input:N(5,1,100,1);
//参数定义

引用公式AA的代码贴出来看下。单独这种条件逻辑,在条件不闪烁的情况下,是不会反复加仓的。关于加仓现象,你这边最终看到的是账户栏的持仓?图表中显示的开平标记时什么状态?
IF DK AND HOLDING=0 THEN BEGIN
   多开:BUY(1,1,LIMIT,c);
  END

回复

使用道具 举报

75

主题

191

帖子

191

积分

等级: 免费版

注册:
2023-4-11
曾用名:
 楼主| 发表于 2023-4-27 09:16 | 显示全部楼层
admin 发表于 2023-4-27 08:06
引用公式AA的代码贴出来看下。单独这种条件逻辑,在条件不闪烁的情况下,是不会反复加仓的。关于加仓现象 ...

这个无法粘出,朋友给找的一个,但是完全加密的,只有开仓调用,我看到的是帐户栏的持仓,出现加仓的情况一般是在信号闪烁时出现的。有办法调试吗?
回复

使用道具 举报

37

主题

9975

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-4-27 09:28 | 显示全部楼层
那需要您观察下图表上的信号,看下历史信号是不是存在变化。可以在语句后面输出持仓:HOLDING;的结果。
观察点:1看下holding有没有加仓的数量(比如每次只开,看看持仓是不是有大于2的情况)如果没有,看看holding会不会总在0和正负1之间跳动
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

75

主题

191

帖子

191

积分

等级: 免费版

注册:
2023-4-11
曾用名:
 楼主| 发表于 2023-4-27 09:48 | 显示全部楼层
技术006 发表于 2023-4-27 09:28
那需要您观察下图表上的信号,看下历史信号是不是存在变化。可以在语句后面输出持仓:HOLDING;的结果。
观 ...

老师看一下测试情况 截图202304270948263763.jpg

回复

使用道具 举报

3

主题

731

帖子

772

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2023-4-27 09:57 | 显示全部楼层
不用管它,只要观察一个经常触发的品种即可。单独上面提供的开仓代码,只要信号不闪烁,是不会存在重复开仓的。
重点观察下重复开仓前后holding的变化即可。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-4-27 10:03 | 显示全部楼层
DK:=STKINDI('','AA.DK',0,1,-1) AND HOLDING>=0;
KK:=STKINDI('','AA.KK',0,1,-1) AND HOLDING<=0;

调用前一个K结束时候的条件,然后实际运行用轮训间隔模式。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 14:40 , Processed in 0.112509 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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