金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 11855|回复: 33

昨天还是发现有50手的大单

[复制链接]

4646

主题

4744

帖子

4769

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2022-12-28 08:54 | 显示全部楼层 |阅读模式
请教:前面回测发现很多几百手的大单,客服回复说可能是手数有设置为0的情况会产生这样的效果,现在都是用holding,昨天还是发现有50手的大单,下单手数设置的5手,会是哪里出问题了呢,多策略模型,多开平仓条件
明天看下这个,开平仓代码一会开机就发出来,还有我是多条件开多空仓,我的平仓如果放到开平仓外面感觉不会被执行,我的每个开平仓语句前有全局变量设置,不知道对不对,还有我的开仓同时需要有挂单,昨天模拟跟盘挂单没有执行
//开空
variable:flag=0;

if flag=0  then
begin
flag:=1;
end
LEN111:=hhVBARS(h,10);
C2:=REF(h,LEN111);
C22:=REF(C2,1);
//开空::::::::111111111111111111111111111111111111111111111111111111111111111111

if holding<10 and K8 AND   FILTER(k8,10) AND enterbars>0 then
begin
           高空k8多平1:SELL(1,holding,MARKET),ORDERQUEUE;
           高空k8空开1:BUYSHORT(1,ORDVOL,MARKET);
   高空k8挂空:BUYSHORT(K8   and holding<10 ,ORDVOL,LIMITR,c22*MINDIFF);//以前10周期内最高价减5个点开空
  IF C-c22>=ZSDS  THEN BEGIN
  高空k8空损1:SELLSHORT(1,holding,MARKET),ORDERQUEUE;

  flag:=1;
LOWPRICE:=ENTERPRICE;
END
END
//止损

LEN11:=LLVBARS(L,10);
C1:=REF(l,LEN11);
C11:=REF(C1,1);
//11111111111111111111111111111111111111111111111
variable:flag=0;

if flag=0  then
begin
flag:=1;
end
if holding<10 and 空反多1 AND  FILTER(空反多1,10)  then
begin
  IF 空反多1    THEN BEGIN
  
          空反多1平空:SELLSHORT(1=1,holding,MARKET),ORDERQUEUE;
          空反多1多开1:BUY(1=1,ORDVOL,MARKET);
  空反多1挂:BUY(空反多1  and holding<10   ,ORDVOL,LIMITR,C11*MINDIFF);//以前10周期内最高价减5
IF C11-C>=zsds THEN BEGIN
  空反多1多损1:SELL(1,holding,MARKET),ORDERQUEUE;
HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价
  flag:=1;
  END
END

//止损

END


高空k8挂空:BUYSHORT(K8   and holding<10 ,ORDVOL,LIMITR,c22*MINDIFF);//以前10周期内最高价减5个点开空

另外我这个挂单需要能成交,然后当价格下到第一次开仓的价格以下出现做多信号2,就平掉第一次入场单,当出现多空信号3,再加仓。后面就是一直到平仓再做。  老师帮我改下需要改的  谢谢这个白色箭头就是挂单出现的。

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

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-12-28 09:06 | 显示全部楼层
1、那需要检查你的开平仓条件啊,看是否有多个连续的开仓信号,造成了持仓holding达到了50手,然后平仓的候又直接平了holding。
2、这个要调试你的平仓条件,才知道为什么被放在外面不执行这个平仓语句了,肯定是这个平仓条件不满足,才没有执行的。
3、白色箭头是和报单的价格有关系的,报单价格超过了K线的范围,就被认为这个信号是无效信号了,在开平仓语句后面加上忽略价格检查函数IGNORECHECKPRICE。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

107

主题

813

帖子

813

积分

等级: 免费版

注册:
2022-12-12
曾用名:
发表于 2022-12-28 09:13 | 显示全部楼层
第2个是放在外面没有信号,如果放在开仓语句后面会有信号
    第三个具体怎么加可以帮我加一下吗?怕又搞错了
variable:flag=0;

if flag=0  then
begin
flag:=1;
end
LEN111:=hhVBARS(h,10);
C2:=REF(h,LEN111);
C22:=REF(C2,1);
//开空::::::::111111111111111111111111111111111111111111111111111111111111111111

if holding<10 and K8 AND   FILTER(k8,10) AND enterbars>0 then
begin
           高空k8多平1:SELL(1,holding,MARKET),ORDERQUEUE;
           高空k8空开1:BUYSHORT(1,ORDVOL,MARKET);
   高空k8挂空:BUYSHORT(K8   and holding<10 ,ORDVOL,LIMITR,c22*MINDIFF);//以前10周期内最高价减5个点开空
  IF C-c22>=ZSDS  THEN BEGIN
  高空k8空损1:SELLSHORT(1,holding,MARKET),ORDERQUEUE;

  flag:=1;
LOWPRICE:=ENTERPRICE;
END
END
//止损

补充内容 (2022-12-28 09:14):
我的每个开仓前面都加了这个 会不会有问题?
variable:flag=0;

if flag=0  then
begin
flag:=1;
end   

补充内容 (2022-12-28 09:16):
然后同一个商品有仓位了怎么限制不再开仓,比如说我开仓手数5手,达到10手就不再开仓其他信号 怎么处理?不然还会遇到大单
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-12-28 09:26 | 显示全部楼层
你全局变量的使用方式是完全错误的,是没理解根本逻辑。你上面的写法 和没有使用全局变量没区别。


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

使用道具 举报

38

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-12-28 09:32 | 显示全部楼层
你这写的都是些什么玩意!


1. 建议你自己整理下自己的交易思路。
2.你超过限制手数,很多条件压根就不可能成立,例如当持有多头时holding>0,根本不会平多开空
f holding<10 and K8 AND   FILTER(k8,10) AND enterbars>0 then

3. 你自己手数超出限制,必然是其他地方的代码造成的。自己在发生手数超出的位置上,输出各个开平仓条件的结果逐一排查。逻辑错误只能这么排查。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

107

主题

813

帖子

813

积分

等级: 免费版

注册:
2022-12-12
曾用名:
发表于 2022-12-28 09:36 | 显示全部楼层
//开空
variable:flag=0;

if flag=0  then
begin
flag:=1;
end
LEN111:=hhVBARS(h,10);
C2:=REF(h,LEN111);
C22:=REF(C2,1);
//开空::::::::111111111111111111111111111111111111111111111111111111111111111111

if holding<10 and K8 AND   FILTER(k8,10) AND enterbars>0 then
begin
           高空k8多平1:SELL(1,holding,MARKET),ORDERQUEUE;
           高空k8空开1:BUYSHORT(1,ORDVOL,MARKET);
   高空k8挂空:BUYSHORT(K8   and holding<10 ,ORDVOL,LIMITR,c22*MINDIFF);//以前10周期内最高价减5个点开空
  IF C-c22>=ZSDS  THEN BEGIN
  高空k8空损1:SELLSHORT(1,holding,MARKET),ORDERQUEUE;

  flag:=1;
LOWPRICE:=ENTERPRICE;
END
END
//止损

LEN11:=LLVBARS(L,10);
C1:=REF(l,LEN11);
C11:=REF(C1,1);
//11111111111111111111111111111111111111111111111
variable:flag=0;

if flag=0  then
begin
flag:=1;
end
if holding<10 and 空反多1 AND  FILTER(空反多1,10)  then
begin
  IF 空反多1    THEN BEGIN
  
          空反多1平空:SELLSHORT(1=1,holding,MARKET),ORDERQUEUE;
          空反多1多开1:BUY(1=1,ORDVOL,MARKET);
  空反多1挂:BUY(空反多1  and holding<10   ,ORDVOL,LIMITR,C11*MINDIFF);//以前10周期内最高价减5
IF C11-C>=zsds THEN BEGIN
  空反多1多损1:SELL(1,holding,MARKET),ORDERQUEUE;
HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价
  flag:=1;
  END
END

//止损

END



补充内容 (2022-12-28 09:39):
这里的全局变量跟挂单问题能不能帮我改一下, 这里一个空开一多开,空开前先平多,在开空,同时挂多单。多开前先平空,再开空,再挂空单。  另外能不能一个品种限制总的持仓数量?那样就不会造成多的条件加仓
回复

使用道具 举报

107

主题

813

帖子

813

积分

等级: 免费版

注册:
2022-12-12
曾用名:
发表于 2022-12-28 09:46 | 显示全部楼层
技术006 发表于 2022-12-28 09:32
你这写的都是些什么玩意!

我的开仓条件有多个,但是想只要有持仓达到多少就不再同一个品种开仓就好了,上面一个是平多开空 一个平空开多, 不知道哪里出现问题。   开仓手数是5手,总的能限制10手,后面只要大于10就不再开仓   enterbars>0 这个是不在同一个K线开平仓  FILTER(k8,10)  这个是10日内过滤开仓信号 避免同一个位置重复开仓
回复

使用道具 举报

38

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-12-28 09:46 | 显示全部楼层
本帖最后由 技术006 于 2022-12-28 09:52 编辑

和全局变量没有丁点关系,而且你全局变量有没有对这段代码都没有任何逻辑上的影响。
你这个代码逻辑错误和条件冗余一大堆,只能你自己根据自己的实际思路去排查处理。

手数超出要么是其他地方的开平造成的,要么就是你下单数量的变化造成的, 排查方法在楼上已经告知了,你自己定位下
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

107

主题

813

帖子

813

积分

等级: 免费版

注册:
2022-12-12
曾用名:
发表于 2022-12-28 10:03 | 显示全部楼层
技术006 发表于 2022-12-28 09:46
和全局变量没有丁点关系,而且你全局变量有没有对这段代码都没有任何逻辑上的影响。
你这个代码逻辑错误和 ...

怎么刚才发的不见了
回复

使用道具 举报

107

主题

813

帖子

813

积分

等级: 免费版

注册:
2022-12-12
曾用名:
发表于 2022-12-28 10:08 | 显示全部楼层
variable:flag=0;

if flag=0  then
begin
flag:=1;
end
《《《《《《《《《《《《《《《上面这个全局变量可以不要吗?  还有其他的开平仓条件  
if holding<10 and 空反多1 AND  FILTER(空反多1,10)  then
begin
  IF 空反多1    THEN BEGIN    //<<<<<<<<<<<<<<<<<<<<这里是满足空反多1的条件,同时过滤10日再次出现空反多1的条件出现信号
  
          空反多1平空:SELLSHORT(1=1,holding,MARKET),ORDERQUEUE;
          空反多1多开1:BUY(1=1,ORDVOL,MARKET);
  空反多1挂:BUY(空反多1  and holding<10   ,ORDVOL,LIMITR,C11*MINDIFF);//以前10周期内最高价减5
  //《《《《《《《《《《《《《《《《《《上面是先平空  再开空  同时再挂空单   三个执行语句。
IF C11-C>=zsds THEN BEGIN
  空反多1多损1:SELL(1,holding,MARKET),ORDERQUEUE;    《《《《《《《《《这里是价格超过成交前10日内的最低点平仓
HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价
  flag:=1;
  END
END

//止损

END

补充内容 (2022-12-28 10:16):
我这里有多个这种类型的开多空仓条件,每个都差不多这种样子并列,每个开仓手数5手,单条限制10手,一平多一开空一挂空或者一平空一开多一挂多。我现在需要处理的是所有的开仓有个总的限制数量20手

补充内容 (2022-12-28 10:18):
超过持仓20手,所有条件不再开仓,不再加仓,直到全部平仓再开仓,因为图表交易不能开反仓,小于20手按条件可以加仓。

补充内容 (2022-12-28 10:19):
中间需要达到某个条件减仓 需要写在哪里?

补充内容 (2022-12-28 10:20):
另外就是我这个挂单成交以后,价格下来到一定条件需要减仓 该怎么写
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-29 19:00 , Processed in 0.112303 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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