金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2331|回复: 6

请老师帮我完善下代码,谢谢啦

[复制链接]

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
发表于 2023-6-18 22:28 | 显示全部楼层 |阅读模式
这是系统自带macd指标,参数也一样。我加粗并以颜色区分红绿柱的上升和下降。
大于零轴用红色,小于零轴用绿色。深色表示下降,浅色表示上升。
红柱=cross(快线,慢线)。
绿柱=cross(慢线,快线)
浅红柱=红柱>ref(红柱,1)
深红住=红柱<ref(红柱,1)
浅绿柱=绿柱>ref(绿柱,1)
深绿柱=绿柱<ref(绿柱,1)
我的系统就是用红绿柱来开平仓,但是里面要用到全局变量计数才能实现,我试了好几次都不成功,所以,我把主体部分macd以及所有用到的变量写好,请老师帮我编写下其余代码,谢谢啦
一:多单开平仓规则:
①绿转红,开多。(如有仓位,平空开多;如无仓位,开多)
持仓3根。
3根平多。
如果不足3根就转深红,或红转绿,那么变色处平多。
②深红转浅红,开多。(只做零轴上,前两次深红转浅红。>=3次深红转浅红不做)。
  每次浅红持仓4根。
  4根浅红收盘平多。
  如果不足4根就转深红,或红转绿,那么变色处平多。
二:空单开平仓规则:(和多单规则相反。)
①红转绿,开空。(如有仓位,平多开空;如无仓位,开空)
持仓3根。
3根平空。
如果不足3根就转浅绿,或绿转红,那么变色处平空。
②浅绿转深绿,开空。(只做零轴下,前两次浅绿转深绿。>=3次浅绿转深绿不做)。
   每次深绿持仓4根。
   4根深绿收盘平空。
   如果不足4根就转浅绿,或绿转红,那么变色处平空。
示意图如下:


//以下是我的代码:
INPUT:SHORT(12,1,100,1),LONG(26,1,100,1),MID(9,1,100,1);

快DIFF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG),LINETHICK1;
慢DIFF:=EMA(快DIFF,5);

慢信DEA:EMA(快DIFF,MID),LINETHICK1;
柱MACD:=(快DIFF-慢信DEA)*2;


柱上涨:=柱MACD>=REF(柱MACD,1) AND 柱MACD >= 0;//柱上涨(浅红)
柱下涨:=柱MACD>=REF(柱MACD,1) AND 柱MACD < 0 ;//柱下涨(浅绿)
柱上跌:=柱MACD<REF(柱MACD,1) AND 柱MACD >= 0;//柱上跌(深红)
柱下跌:=柱MACD<REF(柱MACD,1) AND 柱MACD< 0 ;//柱下跌(深绿)

STICKLINE(柱MACD>=REF(柱MACD,1) AND 柱MACD >= 0 ,0,柱MACD,10,0,RGB(255,128,128));//柱上涨(浅红)
STICKLINE(柱MACD>=REF(柱MACD,1) AND 柱MACD < 0 ,0,柱MACD,10,0,RGB(0,213,0));//柱下涨(浅绿)
STICKLINE(柱MACD<REF(柱MACD,1) AND 柱MACD >= 0 ,0,柱MACD,10,0,RGB(102,51,51));//柱上跌(深红)
STICKLINE(柱MACD<REF(柱MACD,1) AND 柱MACD< 0 ,0,柱MACD,10,0,RGB(0,102,0));//柱下跌(深绿)

//*************以下是开仓平仓用到的变量代码*************************
绿转红:=ref(柱MACD<0,1) AND 柱MACD>0  ;//开始涨
深红转浅红:=ref(柱上跌,1) AND 柱上涨;//零上涨
浅红转深红:=ref(柱上涨,1) AND 柱上跌;//零上跌

红转绿:=ref(柱MACD>0,1) AND 柱MACD<0;//开始跌
深绿转浅绿:=ref(柱下跌,1) AND 柱下涨;//零下涨

浅绿转深绿:=ref(柱下涨,1) AND 柱下跌;//零下跌



补充内容 (2023-6-18 23:06):
//******多单,开仓及平仓条件******

开多1条件:绿转红;//(如有仓位,平空开多;如无仓位,开多)
平多1条件:(浅红转深红 or 红转绿) or (持仓第三根平仓);

开多2条件:深红转浅红//(只开零轴上,前两次,>=3次不开);
平多2条件:(浅红转深红 or 红转绿) or (持仓第4根平仓);


//******空单,开仓及平仓条件******

开空1条件:红转绿;//(如有仓位,平多开空;如无仓位,开空)
平空1条件:深绿转浅绿 or 绿转红 or (持仓第三根平仓);

开空2条件:浅绿转深绿//(只开零轴下,前两次,>=3次不开);
平空2条件:(深绿转浅绿 or 绿转红) or (持仓第4根平仓);

补充内容 (2023-6-18 23:13):
开平仓手数都是1手。
都用市价market。

示意图

示意图
回复

使用道具 举报

37

主题

9981

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-6-19 09:43 | 显示全部楼层
截图202306190942577192.png
每次浅红持仓4根,是连续4根浅红?还是累计4根浅红
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
 楼主| 发表于 2023-6-19 10:37 | 显示全部楼层
技术006 发表于 2023-6-19 09:43
每次浅红持仓4根,是连续4根浅红?还是累计4根浅红

是连续4根的
如果不到4根,就转深红,或者转绿,那么变色处平多



补充内容 (2023-6-19 10:38):
空单也是一样,连续4根
回复

使用道具 举报

37

主题

9981

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-6-19 12:48 | 显示全部楼层
下面是多头部分的处理,你看下是不是你要的。如果是的话,再具体处理空头部分。确认无误后,你也可以仿照实现空头部分。
[PEL] 复制代码
INPUT:SHORT(12,1,100,1),LONG(26,1,100,1),MID(9,1,100,1);

快DIFF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG),LINETHICK1;
慢DIFF:=EMA(快DIFF,5);

慢信DEA:EMA(快DIFF,MID),LINETHICK1;
柱MACD:=(快DIFF-慢信DEA)*2;


柱上涨:=柱MACD>=REF(柱MACD,1) AND 柱MACD >= 0;//柱上涨(浅红)
柱下涨:=柱MACD>=REF(柱MACD,1) AND 柱MACD < 0 ;//柱下涨(浅绿)
柱上跌:=柱MACD<REF(柱MACD,1) AND 柱MACD >= 0;//柱上跌(深红)
柱下跌:=柱MACD<REF(柱MACD,1) AND 柱MACD< 0 ;//柱下跌(深绿)

STICKLINE(柱MACD>=REF(柱MACD,1) AND 柱MACD >= 0 ,0,柱MACD,15,0,RGB(255,128,128));//柱上涨(浅红)
STICKLINE(柱MACD>=REF(柱MACD,1) AND 柱MACD < 0 ,0,柱MACD,15,0,RGB(0,213,0));//柱下涨(浅绿)
STICKLINE(柱MACD<REF(柱MACD,1) AND 柱MACD >= 0 ,0,柱MACD,15,0,RGB(102,51,51));//柱上跌(深红)
STICKLINE(柱MACD<REF(柱MACD,1) AND 柱MACD< 0 ,0,柱MACD,15,0,RGB(0,102,0));//柱下跌(深绿)

//*************以下是开仓平仓用到的变量代码*************************
绿转红:=ref(柱MACD<0,1) AND 柱MACD>0  ;//开始涨
深红转浅红:=ref(柱上跌,1) AND 柱上涨;//零上涨
浅红转深红:=ref(柱上涨,1) AND 柱上跌;//零上跌

红转绿:=ref(柱MACD>0,1) AND 柱MACD<0;//开始跌
深绿转浅绿:=ref(柱下跌,1) AND 柱下涨;//零下涨

浅绿转深绿:=ref(柱下涨,1) AND 柱下跌;//零下跌


//******多单,开仓及平仓条件******

//多①绿转红,开多。(如有仓位,平空开多;如无仓位,开多)
开多1条件:绿转红;//(如有仓位,平空开多;如无仓位,开多)

if 开多1条件=1 then  BEGIN
        SELLSHORT(HOLDING<0,HOLDING,MARKET);
        开多1:buy(HOLDING=0,1,MARKET);
end




//多②深红转浅红,开多。(只做零轴上,前两次深红转浅红。>=3次深红转浅红不做)。
//当深红转浅红大于3次以后,第4,5,6.....n次深红转浅红交替时,都会触发浅红转深红平仓条件。所以只限制在第四次开仓.否者sum_Dark_Light=4 改成sum_Dark_Light>3

//统计红色区域的k线数量,用于计算这个区域内发生过多少次浅红转成深红
allbar:SUMBARS(绿转红,1);
深红转浅红次数:SUM(深红转浅红=1,allbar);

IF 深红转浅红次数=4 and ref(深红转浅红次数,1)=3 then  BEGIN
        开多2:buy(HOLDING=0,1,MARKET);
end

//持仓3根。
//第3根平多。
//如果不足3根就转深红,或红转绿,那么变色处平多。
//  每次浅红持仓4根。
//  第4根浅红收盘平多。
//  如果不足4根就转深红,或红转绿,那么变色处平多。
绿转红第三根:(SUM(柱MACD>=REF(柱MACD,1)AND 柱MACD >= 0,3)=3 and ref(绿转红,2)=1);
连续浅红四根:SUM(柱MACD>=REF(柱MACD,1)AND 柱MACD >= 0,4)=4;

IF 绿转红第三根=1 or 浅红转深红=1 or 红转绿=1 OR 连续浅红四根 THEN BEGIN
        平多:sell(HOLDING>0,1,MARKET);        
END
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
 楼主| 发表于 2023-6-19 21:34 | 显示全部楼层
技术006 发表于 2023-6-19 12:48
下面是多头部分的处理,你看下是不是你要的。如果是的话,再具体处理空头部分。确认无误后,你也可以仿照实 ...

哦,谢谢老师。
绿转红开仓对着,所有平仓都对着。
只是深红转浅红开仓哪里意思弄反了。
我意思是深红转浅红,第一次和第二次做,,第三次以后的都不做。


编写意思弄反了.png
回复

使用道具 举报

37

主题

9981

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-6-20 08:19 | 显示全部楼层
[PEL] 复制代码
INPUT:SHORT(12,1,100,1),LONG(26,1,100,1),MID(9,1,100,1);
 
快DIFF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG),LINETHICK1;
慢DIFF:=EMA(快DIFF,5);
 
慢信DEA:EMA(快DIFF,MID),LINETHICK1;
柱MACD:=(快DIFF-慢信DEA)*2;
 
 
柱上涨:=柱MACD>=REF(柱MACD,1) AND 柱MACD >= 0;//柱上涨(浅红)
柱下涨:=柱MACD>=REF(柱MACD,1) AND 柱MACD < 0 ;//柱下涨(浅绿)
柱上跌:=柱MACD<REF(柱MACD,1) AND 柱MACD >= 0;//柱上跌(深红)
柱下跌:=柱MACD<REF(柱MACD,1) AND 柱MACD< 0 ;//柱下跌(深绿)
 
STICKLINE(柱MACD>=REF(柱MACD,1) AND 柱MACD >= 0 ,0,柱MACD,15,0,RGB(255,128,128));//柱上涨(浅红)
STICKLINE(柱MACD>=REF(柱MACD,1) AND 柱MACD < 0 ,0,柱MACD,15,0,RGB(0,213,0));//柱下涨(浅绿)
STICKLINE(柱MACD<REF(柱MACD,1) AND 柱MACD >= 0 ,0,柱MACD,15,0,RGB(102,51,51));//柱上跌(深红)
STICKLINE(柱MACD<REF(柱MACD,1) AND 柱MACD< 0 ,0,柱MACD,15,0,RGB(0,102,0));//柱下跌(深绿)
 
//*************以下是开仓平仓用到的变量代码*************************
绿转红:=ref(柱MACD<0,1) AND 柱MACD>0  ;//开始涨
深红转浅红:=ref(柱上跌,1) AND 柱上涨;//零上涨
浅红转深红:=ref(柱上涨,1) AND 柱上跌;//零上跌
 
红转绿:=ref(柱MACD>0,1) AND 柱MACD<0;//开始跌
深绿转浅绿:=ref(柱下跌,1) AND 柱下涨;//零下涨
 
浅绿转深绿:=ref(柱下涨,1) AND 柱下跌;//零下跌
 
 
//******多单,开仓及平仓条件******
 
//多①绿转红,开多。(如有仓位,平空开多;如无仓位,开多)
开多1条件:绿转红;//(如有仓位,平空开多;如无仓位,开多)
 
if 开多1条件=1 then  BEGIN
        SELLSHORT(HOLDING<0,HOLDING,MARKET);
        开多1:buy(HOLDING=0,1,MARKET);
end
 
 
 
 
//多②深红转浅红,开多。(只做零轴上,前两次深红转浅红。>=3次深红转浅红不做)。
//当深红转浅红大于3次以后,第4,5,6.....n次深红转浅红交替时,都会触发浅红转深红平仓条件。所以只限制在第四次开仓.否者sum_Dark_Light=4 改成sum_Dark_Light>3
 
//统计红色区域的k线数量,用于计算这个区域内发生过多少次浅红转成深红
allbar:SUMBARS(绿转红,1);
深红转浅红次数:SUM(深红转浅红=1,allbar);
 
IF 深红转浅红次数<3 and ref(深红转浅红次数,1)<>深红转浅红次数 then  BEGIN
        开多2:buy(HOLDING=0,1,MARKET);
end
 
//持仓3根。
//第3根平多。
//如果不足3根就转深红,或红转绿,那么变色处平多。
//  每次浅红持仓4根。
//  第4根浅红收盘平多。
//  如果不足4根就转深红,或红转绿,那么变色处平多。
绿转红第三根:(SUM(柱MACD>=REF(柱MACD,1)AND 柱MACD >= 0,3)=3 and ref(绿转红,2)=1);
连续浅红四根:SUM(柱MACD>=REF(柱MACD,1)AND 柱MACD >= 0,4)=4;
 
IF 绿转红第三根=1 or 浅红转深红=1 or 红转绿=1 OR 连续浅红四根 THEN BEGIN
        平多:sell(HOLDING>0,1,MARKET);        
END
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
 楼主| 发表于 2023-6-20 10:15 | 显示全部楼层
谢谢老师
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-15 01:12 , Processed in 0.117307 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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