欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]老师您好,问题请教

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3609人关注过本帖树形打印复制链接

主题:[求助]老师您好,问题请教

帅哥哟,离线,有人找我吗?
FireScript
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/15 9:31:19    Post IP:58.246.57.26[显示全部帖子]

 “信号过滤,盘整、震荡行情不开仓。万分感谢。”这样的描述是无法编写成代码的。
能写出代码的描述必须是有一个完整的详细的逻辑和定义的。 比如说盘整,举个例子 多少周期内价格波动在多少幅度内。像这样详细定义好才行。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/15 13:37:07    Post IP:58.246.57.26[显示全部帖子]

 “平多仓的价格,如果在红色k线区间,回落百分之0.005,实时加多仓
这个平多仓的价格 是指上次平仓价格。相当于你现在还有获取到上次平多时候的价格?


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/15 14:14:11    Post IP:58.246.57.26[显示全部帖子]

 当前价格和上次平仓价格相比,回落或者上涨一定百分比就加仓,加仓次数不限?


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/15 14:31:57    Post IP:58.246.57.26[显示全部帖子]

 HH:=HHV(HIGH,30)/5+HHV(HIGH,30)/5+HHV(HIGH,30)/5+HHV(HIGH,5)/120+HHV   (HIGH,60)/5;
LL:=LLV(LOW,20)/5+LLV(LOW,20)/5+LLV(LOW,20)/5+LLV(LOW,5)/5+LLV(LOW,30)/5;
H1:= IF(H<REF(H,10)&&REF(H,20)<REF(H,2),REF(H,2),0);
L1:= IF(L>REF(L,2)&&REF(L,1)>REF(L,2),REF(L,2),0);
H2:=VALUEWHEN(H1>0,H1);
L2:=VALUEWHEN(L1>0,L1);
K1:=IF(CLOSE>H2,-3,IF(CLOSE<L2,1,0));
K2:=VALUEWHEN(K1<>0,K1);
GG:=IF(K2=1,H2,L2);
GG1:=VALUEWHEN(ISLASTBAR,GG);
TMP1:=K2;
W1:=K2;
W2:=OPEN-CLOSE;
HT:=IF(OPEN>CLOSE,OPEN,CLOSE);
LT:=IF(OPEN<CLOSE,OPEN,CLOSE);

KK:=BARSLAST(CROSS(TMP1,0));
DD:=BARSLAST(CROSS(0,TMP1));

STICKLINE(DD<KK,C,O,8,0),COLORRED;
STICKLINE(DD<KK,H,L,0,0),COLORRED;
STICKLINE(DD>KK,C,O,8,0),COLORGREEN;
STICKLINE(DD>KK,H,L,0,0),COLORGREEN;

VARIABLE:p1:=0,p2:=0;//这2个全局变量,记录最近一次的平多和平空的价格

ss:=2;//手数
jc:CROSS(0,TMP1);
sc:CROSS(TMP1,0);

if ref(jc,0)  then
begin               
sellshort(holding<0,holding,MARKETR);//平空
p2:=EXITPRICE;
buy(holding=0,ss,MARKETR); // 过滤信号 盘整、震荡行情 不开仓  
end

if ref(sc,0)  then
begin
sell(holding>0,holding,MARKETR);//平多
p1:=EXITPRICE;
buyshort(holding=0,ss,MARKETR);// 过滤信号 盘整、震荡行情 不开仓  
end
INPUT:M1(5,5,10,1),M2(10,10,30,1),M3(20,1,50,1);
VOLUME:VOL,;
MA1:MA(VOL,M1);
MA2:MA(VOL,M2);
MA3:MA(VOL,M3);
//多单止盈条件:成交量的MA3大于100000 平多仓
多头止盈:sell(vol>ma3,holding,market);
//空单止盈条件:MA3大于100000 平空仓
空头止盈:sellshort(ma3>vol,holding,market);


//加仓条件,
//平多仓的价格,如果在红色k线区间,回落百分之0.005,实时加多仓
//平空仓的价格,如果在绿色k线区间,反弹百分之0.005,实时加空仓

pcd1:(p1-c)/p1<=0.005/100;//最新价比上次平多价格回落0.005% 加仓
pcd2:(c-p2)/p2>=0.005/100;//最新价比上次平多价格上涨0.005% 平仓
多头加仓:buy(DD<KK and pcd1,1,market);
空头加仓:buyshort(DD>KK and pcd2,1,market);


代码如上。但是这个加仓条件太宽松了,基本上会一直加仓的。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/15 14:45:38    Post IP:58.246.57.26[显示全部帖子]

  这个不行。你开仓都是反手的。你一旦平仓了,立刻就是反手。加仓肯定是在开仓后的。你这个只能改成说是开仓后仅加仓一次。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/15 15:51:05    Post IP:58.246.57.26[显示全部帖子]

 HH:=HHV(HIGH,30)/5+HHV(HIGH,30)/5+HHV(HIGH,30)/5+HHV(HIGH,5)/120+HHV   (HIGH,60)/5;
LL:=LLV(LOW,20)/5+LLV(LOW,20)/5+LLV(LOW,20)/5+LLV(LOW,5)/5+LLV(LOW,30)/5;
H1:= IF(H<REF(H,10)&&REF(H,20)<REF(H,2),REF(H,2),0);
L1:= IF(L>REF(L,2)&&REF(L,1)>REF(L,2),REF(L,2),0);
H2:=VALUEWHEN(H1>0,H1);
L2:=VALUEWHEN(L1>0,L1);
K1:=IF(CLOSE>H2,-3,IF(CLOSE<L2,1,0));
K2:=VALUEWHEN(K1<>0,K1);
GG:=IF(K2=1,H2,L2);
GG1:=VALUEWHEN(ISLASTBAR,GG);
TMP1:=K2;
W1:=K2;
W2:=OPEN-CLOSE;
HT:=IF(OPEN>CLOSE,OPEN,CLOSE);
LT:=IF(OPEN<CLOSE,OPEN,CLOSE);

KK:=BARSLAST(CROSS(TMP1,0));
DD:=BARSLAST(CROSS(0,TMP1));

STICKLINE(DD<KK,C,O,8,0),COLORRED;
STICKLINE(DD<KK,H,L,0,0),COLORRED;
STICKLINE(DD>KK,C,O,8,0),COLORGREEN;
STICKLINE(DD>KK,H,L,0,0),COLORGREEN;

VARIABLE:p1:=0,p2:=0,mark1:=0,mark2:=0;//这2个全局变量,记录最近一次的平多和平空的价格

ss:=2;//手数
jc:CROSS(0,TMP1);
sc:CROSS(TMP1,0);

if ref(jc,0)  then
begin               
sellshort(holding<0,holding,MARKETR);//平空
buy(holding=0,ss,MARKETR); // 过滤信号 盘整、震荡行情 不开仓  
mark1:=1;
end

if ref(sc,0)  then
begin
sell(holding>0,holding,MARKETR);//平多
buyshort(holding=0,ss,MARKETR);// 过滤信号 盘整、震荡行情 不开仓  
mark2:=1;
end

INPUT:M1(5,5,10,1),M2(10,10,30,1),M3(20,1,50,1);
VOLUME:VOL,;
MA1:MA(VOL,M1);
MA2:MA(VOL,M2);
MA3:MA(VOL,M3);
//多单止盈条件:成交量的MA3大于100000 平多仓
if ma3>100000 and holding>0 then
begin
多头止盈:sell(ma3>100000,holding,market);    
p1:=EXITPRICE;
p2:=0;
end

//空单止盈条件:MA3大于100000 平空仓
if  ma3<100000 and holding<0 then
begin
空头止盈:sellshort(ma3<100000,holding,market);
p2:=EXITPRICE;
p1:=0;
end



//加仓条件,
//平多仓的价格,如果在红色k线区间,回落百分之0.005,实时加多仓
//平空仓的价格,如果在绿色k线区间,反弹百分之0.005,实时加空仓

pcd1:=p1<>0 and  (p1-c)/p1<=0.005/100;//最新价比上次平多价格回落0.005% 加仓
pcd2:=p2<>0 and (c-p2)/p2>=0.005/100;//最新价比上次平多价格上涨0.005% 平仓
if DD<KK and pcd1 and holding=0 and mark1 then
begin
多头加仓:buy(DD<KK and pcd1,1,market);
p1:=0;
mark1:=0;
end

if DD>KK and pcd2 and holding=0 and mark2 then
begin
空头加仓:buyshort(DD>KK and pcd2,1,market);
p2:=0;
mark2:=0;
end

持仓:holding





命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/15 15:52:35    Post IP:58.246.57.26[显示全部帖子]

我本地测试看了下。但是我觉得你这里啊 有些条件设置的会导致一些奇怪的现象。比如初始的止盈,很可能开仓K之间满足了。然后满足了止盈后,后面的加仓又跟上了。这个就比较尴尬了。  因为你初始止盈的条件是和价格无关的。纯粹看成交量了。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/16 9:30:14    Post IP:58.246.57.26[显示全部帖子]

 VARIABLE:p1:=0,p2:=0;//记录上次是平多止盈还是平空止盈


HH:=HHV(HIGH,30)/5+HHV(HIGH,30)/5+HHV(HIGH,30)/5+HHV(HIGH,5)/120+HHV   (HIGH,60)/5;
LL:=LLV(LOW,20)/5+LLV(LOW,20)/5+LLV(LOW,20)/5+LLV(LOW,5)/5+LLV(LOW,30)/5;
H1:= IF(H<REF(H,10)&&REF(H,20)<REF(H,2),REF(H,2),0);
L1:= IF(L>REF(L,2)&&REF(L,1)>REF(L,2),REF(L,2),0);
H2:=VALUEWHEN(H1>0,H1);
L2:=VALUEWHEN(L1>0,L1);
K1:=IF(CLOSE>H2,-3,IF(CLOSE<L2,1,0));
K2:=VALUEWHEN(K1<>0,K1);
GG:=IF(K2=1,H2,L2);
GG1:=VALUEWHEN(ISLASTBAR,GG);
TMP1:=K2;
W1:=K2;
W2:=OPEN-CLOSE;
HT:=IF(OPEN>CLOSE,OPEN,CLOSE);
LT:=IF(OPEN<CLOSE,OPEN,CLOSE);

KK:=BARSLAST(CROSS(TMP1,0));
DD:=BARSLAST(CROSS(0,TMP1));

STICKLINE(DD<KK,C,O,8,0),COLORRED;
STICKLINE(DD<KK,H,L,0,0),COLORRED;
STICKLINE(DD>KK,C,O,8,0),COLORGREEN;
STICKLINE(DD>KK,H,L,0,0),COLORGREEN;

ss:=2;//手数
jc:CROSS(0,TMP1);
sc:CROSS(TMP1,0);

if ref(jc,0)  then
begin               
sellshort(holding<0,holding,MARKETR);//平空
buy(holding=0,ss,MARKETR); // 过滤信号 盘整、震荡行情 不开仓  
end

if ref(sc,0)  then
begin
sell(holding>0,holding,MARKETR);//平多
buyshort(holding=0,ss,MARKETR);// 过滤信号 盘整、震荡行情 不开仓  
end


if OPENPROFITPER>=5 then //浮动盈利达到5% 就平仓
begin
if holding>0 then
begin
sell(holding>0,holding,MARKETR);//平多
p1:=EXITPRICE;
p2:=0;    
end

if holding<0 then
begin
sellshort(holding<0,holding,MARKETR);//平空    
p2:=EXITPRICE;
p1:=0;
end
    
end


pcd1:=p1<>0 and (p1-c)/p1>=0.03;//在前面止盈平仓价格基础上回落3%再次开多仓入场
pcd2:=p2<>0 and (c-p2)/p2>=0.03;//在前面止盈平仓价格基础上上涨3%再次开空仓入场


if pcd1 and holding=0 then 多头加仓:buy(1,1,market);
if pcd2 and holding=0 then 空头加仓:buyshort(1,1,market);
持仓:holding




命数如织,当如磐石。
 回到顶部