金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
12
返回列表 发新帖
楼主: 水煮沉鱼

请大神指点该程序问题出在哪里

[复制链接]

6

主题

23

帖子

23

积分

Rank: 1

等级: 新手上路

注册:
2021-5-31
曾用名:
 楼主| 发表于 2021-6-1 11:00 | 显示全部楼层
请原谅我愚笨,我的意思是,给“平仓记录”这个全局变量赋值的时候,应该需要考虑交易时平仓的条件吧?由于交易时平仓条件较多,怎么把各种平仓条件用代码描述出来,作为前置条件,用以改变“平仓记录”这个变量的赋值呢?
具体来说,就是“平仓条件”出现时,模型就改变变量“平仓记录”的赋值。我不明白的就是如何将前面那个“平仓条件”用代码进行描述,因为这个“平仓条件”有好几种情形。
不知道我有没有描述清楚,还请多多指点。
回复

使用道具 举报

31

主题

7737

帖子

7747

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2021-6-1 12:17 | 显示全部楼层
具体什么平仓条件下平仓的才要全局变量做赋值,这个完全是你自己选择的
[PEL] 复制代码
variable:num=0;
if 平仓条件1 then 
BEGIN
	num:=num+1;
	sell();
END
if 平仓条件2 then 
BEGIN
	sell();
END
if 平仓条件3 then 
BEGIN
	sell();
END
if 平仓条件4 then 
BEGIN
	sell();
END



比如上面这样只在第一个平仓条件平仓的时候才改变值,其他地方就不变,这些都是灵活的你要自己去选择的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

6

主题

23

帖子

23

积分

Rank: 1

等级: 新手上路

注册:
2021-5-31
曾用名:
 楼主| 发表于 2021-6-1 13:25 | 显示全部楼层
谢谢,假如两个独立的条件任意一个触发即平仓,平仓三次后进行真实交易,那么应该是修改成以下这样子吧?

[PEL] 复制代码
variable:num=0;
if 平仓条件1 then
BEGIN
    num:=num+1;
    sell();
END
if 平仓条件2 thennum:=num+1;
BEGIN
    sell();
END
if 平仓条件3 then
BEGIN
    sell();
END
if 平仓条件4 then
BEGIN
    sell();
END

IF[backcolor=rgb(255, 255, 255)][font=Consolas, &quot] [/font][/backcolor]num=3[backcolor=rgb(255, 255, 255)][font=Consolas, &quot] [/font][/backcolor]then[backcolor=rgb(255, 255, 255)][font=Consolas, &quot]  [/font][/backcolor]真实系统下单开关:=1;
num:=0


而下面这段应该就不需要了吧?
[PEL] 复制代码
     IF num>=2 then num:=3;
     IF num=1 then num:=2;
     IF num=0 then num:=1; 




回复

使用道具 举报

6

主题

23

帖子

23

积分

Rank: 1

等级: 新手上路

注册:
2021-5-31
曾用名:
 楼主| 发表于 2021-6-1 13:28 | 显示全部楼层
上面代码直接复制出现问题,这里重新复制一遍:
[PEL] 复制代码
variable:num=0;
if 平仓条件1 then
BEGIN
    num:=num+1;
    sell();
END
if 平仓条件2 thennum:=num+1;
BEGIN
    sell();
END
if 平仓条件3 then
BEGIN
    sell();
END
if 平仓条件4 then
BEGIN
    sell();
END
 
IF num=3 then 真实系统下单开关:=1;
num:=0

回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-6-1 13:31 | 显示全部楼层
[PEL] 复制代码
input:n1(5,1,20,1),n2(20,5,60,1),n3(40,20,250,5),m(20,6,80,2);
VARIABLE:该笔盈亏:=0,模拟持仓:=0,模拟开仓价:=0,模拟平仓价:=0,真实系统下单开关:=0,盈亏记录:=0,MP:=0,多头止损:=0,空头止损:=0,平仓记录:=0;
  
MA5:=ma(c,N1);
MA20:=ma(c,N2);
MA60:=ma(c,n3);
ATR:=MA(TR,20);
  
开多条件:MA5>MA20 AND MA20>MA60 and C>REF(HHV(MAX(O,C),m),1);
开空条件:MA5<MA20 AND MA20<MA60 and  C<REF(LLV(MIN(O,C),m),1);
 
  
//模拟交易
 IF 开多条件 and 模拟持仓=0 and 真实系统下单开关<>1 then
 BEGIN
    模拟开仓价:=c;
    模拟持仓:=1;
    多头止损:=c-0.8*atr;
 END
  
if c<多头止损 and 模拟持仓=1 then
  BEGIN
    模拟平仓价:=c;
    该笔盈亏:=模拟平仓价-模拟开仓价;
    模拟持仓:=0;
    多头止损:=0;
    IF 平仓记录=3 then  真实系统下单开关:=1;
    IF 平仓记录>=2 then 平仓记录:=3;
    IF 平仓记录=1 then 平仓记录:=2;
    IF 平仓记录=0 then 平仓记录:=1;
    模拟开仓价:=0;
    模拟平仓价:=0;

  END
    
  
if 开空条件  and 模拟持仓=0 and 真实系统下单开关<>1 then BEGIN
    模拟开仓价:=c;
    模拟持仓:=-1;
    空头止损:=c+0.8*atr;
 
END
  if c>空头止损 and 模拟持仓=-1 then BEGIN
    模拟平仓价:=c;
    该笔盈亏:=模拟开仓价-模拟平仓价;
    模拟持仓:=0;
    空头止损:=0;
    IF 平仓记录=3 then  真实系统下单开关:=1;
    IF 平仓记录>=2 then 平仓记录:=3;
    IF 平仓记录=1 then 平仓记录:=2;
    IF 平仓记录=0 then 平仓记录:=1;
    模拟开仓价:=0;
    模拟平仓价:=0;
  END
  
//真实交易
IF  开多条件  and 真实系统下单开关=1 THEN BEGIN;
    MP:=0;
    BUY(1,50%,NEXTOPEN),PERTRADER;
    多头止损:=c-0.8*atr;
     
END
   
IF   开空条件 and 真实系统下单开关=1 THEN BEGIN
    MP:=0;
    BUYSHORT(1,50%,NEXTOPEN),PERTRADER;
    空头止损:=c+0.8*atr;
END
  
IF HOLDING>0 AND c<多头止损 THEN 多止损:SELL(1,ABS(HOLDING),NEXTOPEN);
IF HOLDING<0 AND c>空头止损 THEN 空止损:SELLSHORT(1,ABS(HOLDING),NEXTOPEN);
  
IF OPENPROFIT>MP THEN MP:=OPENPROFIT;
  
IF  (MP/ABS(HOLDING))>=(C*MULTIPLIER*0.1*0.5) THEN BEGIN
    IF ((MP-OPENPROFIT)/MP)>=(30*0.01) THEN BEGIN
       多止盈1:SELL(HOLDING>0,ABS(HOLDING),NEXTOPEN);
       空止盈1:SELLSHORT(HOLDING<0,ABS(HOLDING),NEXTOPEN); 
    END
END
  
IF  (MP/ABS(HOLDING))>=(C*MULTIPLIER*0.1*1.2) THEN BEGIN
    IF ((MP-OPENPROFIT)/MP)>=(50*0.01) THEN BEGIN
       多止盈2:SELL(HOLDING>0,ABS(HOLDING),NEXTOPEN);
       空止盈2:SELLSHORT(HOLDING<0,ABS(HOLDING),NEXTOPEN); 
       END
END
  
资金:ASSET,NOAXIS;



其实不需要处理多少代码。就是把原先虚拟开平仓部分,平仓地方进行修改下即可。注意这里平多平空是不区分的。只要是平仓 平仓纪录都变化。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

31

主题

7737

帖子

7747

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2021-6-1 13:32 | 显示全部楼层
没有错,你要自己去想办法理解num控制的作用
他就是相当于一个记录开关一样,要想办法自己灵活吃透他。
所谓全局变量本质就是一个数字,你自己去控制好他就行了
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

6

主题

23

帖子

23

积分

Rank: 1

等级: 新手上路

注册:
2021-5-31
曾用名:
 楼主| 发表于 2021-6-1 13:50 | 显示全部楼层
谢谢各位技术大大指导
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 06:55 , Processed in 0.211286 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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