金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1664|回复: 2

代码

[复制链接]

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
发表于 2023-7-30 16:00 | 显示全部楼层 |阅读模式
老师帮忙写个反向的,一模一样的。这个换来换去怕搞错了··· 就下面的代码增加空方进去用平多开空 平空开多的方法    谢谢。


variable:gsum=0;   //gsum绿柱总和
variable:glong=0;  //glong最长绿柱
variable:glow=0;   //glow绿柱区域最低价
//中间变量
//MACD指标
DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);
DEA  := EMA(DIFF,9);
MACD := 2*(DIFF-DEA);

gnum:=barslast(ref(macd>0,1) and macd<0);     //红转绿
bnum:=barslast(ref(macd<0,1) and macd>0);    //绿转红
if ref(macd,1)>0 and macd<0 then
begin
   gsum:=0;                                                            //绿柱开始,清0
   glong:=0;                                                          //绿柱开始,清0
   glow:=low;                                                      //绿柱开始,初始化
end
if macd<0 then
begin
   gsum:=gsum+macd;                                          //累加
   if abs(macd)>abs(glong) then glong:=macd; //如果绿柱更长,则记录
   if low<glow then glow:=low;                           //如果价格更低,则记录
end
numb:=max(gnum,bnum)+1;
//交易条件
con1:=abs(gsum)<abs(ref(gsum,numb));      //面积小于前一波--面积没创新低
con2:=abs(glong)<abs(ref(glong,numb));    //柱子长度小于前一波----长度没创新低
con3:=glow<ref(glow,numb);                     //价格小于前一波-----价格创新低
//下单模块
//当绿柱开始收缩时(熊市即将结束,可能反转向上(或低位盘整)),如果出现低背离,则少量建仓

if all(macd<0,3) and ref(macd,1)<macd and ref(macd,1)<ref(macd,2) then
begin
   if con1 and con2 and con3 then buy(HOLDING<2,2,market);       //低背离,面积没创新低,长度没创新低,价格创新低
end
//绿柱消失、红柱开始放出时(下跌行情(或低位盘整)已经结束),如果出现低背离,则加仓
if ref(macd<0,1) and macd>0 then
begin
    if con1 and con2 and con3  then 加:buy(HOLDING<2,2,market);    //低背离,面积没创新低,长度没创新低,价格创新低
end
//如果下破零轴,平仓离场
if  CROSS(0,MACD) and diff<0 then sell(holding>0,holding,market);


回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-7-31 10:20 | 显示全部楼层
[PEL] 复制代码
variable:rsum=0;   //rsum红柱总和
variable:rlong=0;  //rlong最长红柱
variable:rh=0;   //rlow红柱区域最低高价
//中间变量
//macd指标
diff := ema(close,12) - ema(close,26);
dea  := ema(diff,9);
macd := 2*(diff-dea);

gnum:=barslast(ref(macd>0,1) and macd<0);     //红转绿
bnum:=barslast(ref(macd<0,1) and macd>0);    //绿转红
if ref(macd,1)<0 and macd>0 then
begin
   rsum:=0;                                                           
   rlong:=0;                                                          
   rh:=h;                                                      
end
if macd>0 then
begin
   rsum:=rsum+macd;                                          //累加
   if abs(macd)>abs(rlong) then rlong:=macd; //如果柱更长,则记录
   if h>rh then rh:=h;                          
end
numb:=max(gnum,bnum)+1;
//交易条件
con1:=abs(rsum)<abs(ref(rsum,numb));      //面积小于前一波--面积
con2:=abs(rlong)<abs(ref(rlong,numb));    //柱子长度小于前一波
con3:=rh>ref(rh,numb);                     //价格大于前一波-----价格创新高
//下单模块
//当绿柱开始收缩时(熊市即将结束,可能反转向上(或低位盘整)),如果出现低背离,则少量建仓

if all(macd>0,3) and ref(macd,1)>macd and ref(macd,1)>ref(macd,2) then
begin
   if con1 and con2 and con3 then buyshort(abs(holding)<2,2,market);       
end

if ref(macd>0,1) and macd<0 then
begin
    if con1 and con2 and con3  then 加:buyshort(abs(holding)<2,2,market);    
end

if  cross(macd,0) and diff>0 then sellshort(holding<0,holding,market);



反向差不多是这样的。剩下的你自行调整下即可。con1和con2你自行考虑下是否需要修改下定义方式。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2023-7-31 10:46 | 显示全部楼层
技术009 发表于 2023-7-31 10:20
[mw_shl_code=pel,true]variable:rsum=0;   //rsum红柱总和
variable:rlong=0;  //rlong最长红柱
variabl ...

好的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 19:14 , Processed in 0.151551 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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