金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3183|回复: 13

大神帮忙看下这个盈利加仓哪里不对

[复制链接]

26

主题

117

帖子

117

积分

等级: 免费版

注册:
2023-11-16
曾用名:
发表于 2024-2-22 18:18 | 显示全部楼层 |阅读模式
input : lots(1,1,1000,1);//头寸
input : SLSS(1,1,1000,1);//加仓
input : hld(10,1,1000,1);//获利
input : zsd(30,1,1000,1);//止损
input : qdyd(30,1,1000,1);//移动保护启动点
input : yd(5,1,1000,1);//移动保护
variable:num=0;                            // 全局变量,来控制当天交易次数
cs:=1;
sss1:callstock(stklabel,vtclose,6,-1);
sss2:callstock(stklabel,vtopen,6,0);
tt:=if(holding<>0,openbar,3);
hhh:=ref(hhv(h,tt+1),1);
lll:=ref(llv(l,tt+1),1);
if sss1<sss2 then begin
    sellshort(1,holding,limitr, open);
    if num<cs then
    begin
    buy(holding=0,lots,limitr, open);
    num:=num+1;
    BUY(OPENPROFIT>20,SLSS,limitr, open);
    end
end
if sss1>sss2 then begin
    sell(1,holding,limitr, open);
    if num<cs then
    begin
    buyshort(holding=0,lots,limitr, open);
    BUYSHORT(OPENPROFIT>20,SLSS,limitr, open);
    num:=num+1;
    end
end
if holding >0 then begin//多单止盈
        bccj:=max(avgenterprice+hld*mindiff,open);
        sell(h>=avgenterprice+hld*mindiff,holding,limitr, bccj);
        end
if holding >0 then begin//多单止损
        bccj1:=min(avgenterprice-zsd*mindiff,open);
        sell(l<=avgenterprice-zsd*mindiff,holding,limitr, bccj1);
        end
if holding >0 and hhh>=avgenterprice+mindiff*qdyd and enterbars>0 then begin//多单止损
        bccj2:=min(avgenterprice+yd*mindiff,open);
        sell(l<=avgenterprice+yd*mindiff,holding,limitr, bccj2);
        end

/////////////////      
if holding <0 then begin//空单止盈
        sccj:=min(avgenterprice-hld*mindiff,open);
        sellshort(l<=avgenterprice-hld*mindiff,holding,limitr,sccj);
        end      
if holding <0 then begin//空单止损
        sccj1:=max(avgenterprice+zsd*mindiff,open);
        sellshort(h>=avgenterprice+zsd*mindiff,holding,limitr,sccj1);
        end      
if holding <0 and lll<=avgenterprice-mindiff*qdyd and enterbars>0 then begin//空单止损
        sccj2:=max(avgenterprice-yd*mindiff,open);
        sellshort(h>=avgenterprice-yd*mindiff,holding,limitr,sccj2);
        end              


if time>=185900 then
begin
sell(1,holding,market);
sellshort(1,holding,market);     
end
if time=closetime(0) then num:=0;  

当前持仓:holding,colorred,linethick0;
当前资产:asset,noaxis,colorgray;
盈亏比: payoffrate,colormagenta;
胜率:percentwin,coloryellow;
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-2-23 08:47 | 显示全部楼层
麻烦具体说明问题
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

26

主题

117

帖子

117

积分

等级: 免费版

注册:
2023-11-16
曾用名:
 楼主| 发表于 2024-2-23 09:06 | 显示全部楼层
技术009 发表于 2024-2-23 08:47
麻烦具体说明问题

开仓后盈利20个价位,加仓1手,不知道现在的写法对不对
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-2-23 09:13 | 显示全部楼层
buyshort(openprofit>20,slss,limitr, open);

openprofit 这个函数返回的是金额的。你要按照价差点数来,你直接用:

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

使用道具 举报

26

主题

117

帖子

117

积分

等级: 免费版

注册:
2023-11-16
曾用名:
 楼主| 发表于 2024-2-23 09:32 | 显示全部楼层
技术009 发表于 2024-2-23 09:13
buyshort(openprofit>20,slss,limitr, open);

openprofit 这个函数返回的是金额的。你要按照价差点数来 ...

这个回测的数据有问题
开仓1手目标盈利是30
盈利20加仓1手
的到的结果是两手总盈利40
这个是不对的
怎么解决
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

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

什么意思?没太明白。你这个盈利 你要看平仓位置。是止盈触发了,还是指标平仓触发的。然后根据平仓价格计算下盈利。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

26

主题

117

帖子

117

积分

等级: 免费版

注册:
2023-11-16
曾用名:
 楼主| 发表于 2024-2-23 09:44 | 显示全部楼层
技术009 发表于 2024-2-23 09:40
什么意思?没太明白。你这个盈利 你要看平仓位置。是止盈触发了,还是指标平仓触发的。然后计算下盈利。

...

一手盈利30一手盈利10
平均一手盈利20
现在显示每手盈利40

补充内容 (2024-2-23 09:45):
显示每手盈利30

补充内容 (2024-2-23 09:45):
测试的结果都按第一次开仓计算了
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-2-23 09:47 | 显示全部楼层
给出具体信号位置 或者是回测里开平仓的明细 看下。这个盈利首先要看下开平位置价格算一下的。

另外不是说你策略里设置了20点盈利加仓,实际执行就是20盈利时候加仓,实际盈利加仓时候只会是大于等于20。

回测是按照走完K算信号的,即用一个固定的C去做计算的。 不是说你盈利刚好20就加仓,如果这个K的收盘价是盈利40点(前面K都没满足大于20点的盈利),那么也是会直接加仓的。 总之就是回测上没办法刚好按照你设置的点数去触发信号,因为是按照走完K来算的信号的。

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

使用道具 举报

26

主题

117

帖子

117

积分

等级: 免费版

注册:
2023-11-16
曾用名:
 楼主| 发表于 2024-2-23 09:52 | 显示全部楼层
技术009 发表于 2024-2-23 09:47
给出具体信号位置 或者是回测里开平仓的明细 看下。这个盈利首先要看下开平位置价格算一下的。

另外不是 ...

那这个加仓思路怎么更好的解决呢
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-2-23 09:57 | 显示全部楼层
本帖最后由 技术009 于 2024-2-23 09:59 编辑

用后台程序化。那个可以逐笔回测,能用到更精细的价格。否则在图表程序化的回测信号里,它就使用当前周期K线结束时候的价格算信号。无论是加仓减仓,都是按照这个价格,就没法说刚好盈利或者刚好亏损时候 去执行信号的。
此外你说的那个盈利问题,你没有提供明细情况下,无法确定是不是我这里说到的这个情况。



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-2 10:37 , Processed in 0.132281 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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