金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3346|回复: 10

局部有效

[复制链接]

98

主题

688

帖子

698

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
发表于 2022-11-25 10:50 | 显示全部楼层 |阅读模式
//参数定义
EMA13:=EMA(C,10),COLORWHITE;
EMA21:=EMA(C,21),COLORYELLOW;
EMA34:=EMA(C,34),COLORFF00FF;
EMA60:=MA(C,55),COLORFFCC66;
X1:=(C+L+H)/3;
X2:=EMA(X1,5);
X3:=EMA(X2,4);
STICKLINE(X2>X3 AND C>EMA13,LOW,HIGH,0.1,1),COLORRED;
STICKLINE(X2>X3 AND C>EMA13,CLOSE,OPEN,3,1),COLORRED;
STICKLINE(X2<X3 AND C<EMA13,LOW,HIGH,0.1,1),COLORFFFF52;
STICKLINE(X2<X3 AND C<EMA13,CLOSE,OPEN,3,0),COLORFFFF52;
BUY1:=FILTER(X2>X3 AND C>EMA13,4);
SELL1:=FILTER(X2<X3 AND C<EMA13,4);
//使用系列模式时
//{开多} ENTERLONG:BUY1,TFILTER;
//{平多}EXITLONG:SELL1 ,TFILTER;
//
//{开空}ENTERSHORT:SELL1 ,TFILTER;
//{平空}EXITSHORT:BUY1 ,TFILTER;
//使用逐K线模式时
VARIABLE:DUOKONG=0;
TSFS:=0;     {停损反手,1-反手 0-不反手}
ORDVOL:=1;     {开仓手数}
ZSDS:=10;     {止损点数}
//以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0
VARIABLE:YDZY=1;     {移动止盈总开关,1为开,0为关}
VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价}
VARIABLE:DHCDS=3,KHCDS=3;   {多、空单回撤点数}
VARIABLE:DYLDS=7,KYLDS=7;   {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓}
VARIABLE:Z3B1:=1;     {赚3保1开关}
DUOKONG:=1;
//持有空单
IF HOLDING<0 THEN BEGIN
IF BUY1 THEN BEGIN   //平空单
  空平:SELLSHORT(1,0,MARKET),ORDERQUEUE;
END

//止损
IF C-ENTERPRICE>=ZSDS THEN BEGIN
  空损:SELLSHORT(1,0,MARKET),ORDERQUEUE;
END

//移动止盈
IF YDZY=1 THEN BEGIN
  //每周期判断是否创新低
  IF L<LOWPRICE THEN BEGIN
   LOWPRICE:=L;
  END

  //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
  IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN
   IF L-LOWPRICE>=KHCDS THEN BEGIN  //回撤超过3点
    空赢:SELLSHORT(1,0,MARKET);
   END
  END
END

//赚3保1
IF Z3B1=1 THEN BEGIN
  IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN
   IF ENTERPRICE-L<=1.2 THEN BEGIN
    空保:SELLSHORT(1,0,MARKET);
   END
  END
END
END
//开多单
IF HOLDING=0 THEN BEGIN
IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN
  IF BUY1 THEN BEGIN
   多开:BUY(1=1,ORDVOL,MARKET);
   HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价
  END
END
END
//持有多单
IF HOLDING>0 THEN BEGIN
IF SELL1 THEN BEGIN  {平多单}
  多平:SELL(1,0,MARKET),ORDERQUEUE;
END

//多单管理
//止损
IF ENTERPRICE-C>=ZSDS THEN BEGIN
  多损:SELL(1,0,MARKET),ORDERQUEUE;
END
//移动止盈
IF YDZY=1 THEN BEGIN
  //每周期判断是否创新高
  IF H>HIGHPRICE THEN BEGIN
   HIGHPRICE:=H;
  END

  //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
  IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN
   IF HIGHPRICE-H>=DHCDS THEN BEGIN  //回撤超过3点
    多赢:SELL(1,0,MARKET);
   END
  END
END
//赚3保1
IF Z3B1=1 THEN BEGIN
  IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN
   IF H-ENTERPRICE<=1.2 THEN BEGIN
    多保:SELL(1,0,MARKET);
   END
  END
END
END
//开空单
IF HOLDING=0 THEN BEGIN
IF DUOKONG=1 OR DUOKONG=3 THEN BEGIN
  IF SELL1 THEN BEGIN
   空开:BUYSHORT(1=1,ORDVOL,MARKET);
   LOWPRICE:=ENTERPRICE;
  END
END
END

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;



实现开仓后N周期使用有效,超过时间周期则不生效。谢谢

回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-11-25 10:52 | 显示全部楼层
请具体描述下,不是很明白你所谓有效和无效时指什么呢
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

98

主题

688

帖子

698

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2022-11-25 10:57 | 显示全部楼层
就是开仓后N周期内有效;

代码可靠程度检查一下;
回复

使用道具 举报

0

主题

509

帖子

509

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2022-11-25 11:07 | 显示全部楼层
什么叫N周期内有效,这个不明白
开仓后周期内有效,这是什么意思呢
回复

使用道具 举报

98

主题

688

帖子

698

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2022-11-25 14:58 | 显示全部楼层
现在才看到哈

就是对移动止损 止盈加个时间限制,在开仓后多久时间内有效,时间以外就不需要移动止损 、移动止盈了。
回复

使用道具 举报

0

主题

509

帖子

509

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2022-11-25 15:21 | 显示全部楼层
enterbars<30
把这个作为条件加到移动止损的条件中去就行了

这个条件就是表示开仓历时要小于30
回复

使用道具 举报

0

主题

8

帖子

8

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2022-11-25 15:50 | 显示全部楼层
1、多头和空头的赚3保1这段移动止盈的代码未发现有逻辑问题。
2、参考6楼,用enterbars来控制是否来执行赚3保1这段代码就可以,以空头赚三保一的代码为例,修改如下。多头的赚三保一也再同样的位置添加该条件即可。
  //赚3保1
IF Z3B1=1 AND ENTERBARS<30 THEN BEGIN
  IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN
   IF ENTERPRICE-L<=1.2 THEN BEGIN
    空保:SELLSHORT(1,0,MARKET);
   END
  END
END
回复

使用道具 举报

98

主题

688

帖子

698

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2022-11-25 22:35 | 显示全部楼层
IF HOLDING=0 THEN BEGIN
IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN
  IF BUY1 THEN BEGIN
   多开:BUY(1=1,ORDVOL,MARKET);
   HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价
  END
END
END

1.END 有什么要求吗?  有时候能和前面的BEGIN一一对应,有的时候会多出一个END。

2. IF DUOKONG=1 OR DUOKONG=2  不理解为什么这么写?什么意思呢这里

//赚3保1
IF Z3B1=1 THEN BEGIN
  IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN
   IF ENTERPRICE-L<=1.2 THEN BEGIN
    空保:SELLSHORT(1,0,MARKET);
   END
  END
END
END
//开多单

这里就多一个END
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-11-25 22:56 | 显示全部楼层
多出来就说明自己写错了
这种检查还请用户自己完成了

IF DUOKONG=1 OR DUOKONG=2  

这个要问写这个程序的人,变量代表的具体含义写程序的人理解
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

98

主题

688

帖子

698

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2022-11-25 23:00 | 显示全部楼层
多出一个END  检测也能通过?


老师请联系全文   讲解一下 IF DUOKONG=1 OR DUOKONG=2  的含义

//以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0
VARIABLE:YDZY=1;     {移动止盈总开关,1为开,0为关}
VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价}
VARIABLE:DHCDS=3,KHCDS=3;   {多、空单回撤点数}
VARIABLE:DYLDS=7,KYLDS=7;   {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓}
VARIABLE:Z3B1:=1;     {赚3保1开关}
DUOKONG:=1;
//持有空单
IF HOLDING<0 THEN BEGIN
IF BUY1 THEN BEGIN   //平空单
  空平:SELLSHORT(1,0,MARKET),ORDERQUEUE;
END

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 21:43 , Processed in 0.275215 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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