以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  麻烦您修改一下金字塔程序  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=184169)

--  作者:qq代人发帖
--  发布时间:2021/2/2 15:25:09
--  麻烦您修改一下金字塔程序
请教:麻烦您修改一下金字塔程序     
  CROSS(0,TMP1),LOW,BPK,TFILTER;//绿柱变红柱时,第一根红柱的收盘价提前3秒,先平空仓反手开多仓8手
  CROSS(TMP1,0),HIGH,SPK,TFILTER;//红柱变绿柱时,第一根绿柱的收盘价提前3秒,先平多仓反手开空仓8手
 L<OPEN-10,BP,ALLOWREPEAT;//{开空仓的价格,下跌10个止盈,平空仓};
 H>OPEN+10,SP,ALLOWREPEAT;//{开多仓的价格,上涨10个点止盈,平多仓} 
 //麻烦老师修改:开仓8手,盈10个点止盈平仓2手,盈20个点再平2手,盈30个点再平2手,盈50个点反手2手
 //最新价达到条件出信号1秒下单,允许同一根k线出现多个止盈信号,多次止盈,谢谢老师。
--  作者:FireScript
--  发布时间:2021/2/2 15:30:00
--  
 1.“绿柱变红柱时,第一根红柱的收盘价提前3秒” 红柱绿柱代码呢?贴下完整代码好吧。否则我写了也没法测试。
2.“最新价达到条件出信号1秒下单”什么叫出信号1秒下单?

--  作者:wz888999
--  发布时间:2021/2/2 16:35:18
--  

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;

  CROSS(0,TMP1),LOW,BPK,TFILTER;//绿柱变红柱时,第一根红柱的收盘价提前3秒,先平空仓反手开多仓8手
  CROSS(TMP1,0),HIGH,SPK,TFILTER;//红柱变绿柱时,第一根绿柱的收盘价提前3秒,先平多仓反手开空仓8手
 L<OPEN-10,BP,ALLOWREPEAT;//{开空仓的价格,下跌10个止盈,平空仓};
 H>OPEN+10,SP,ALLOWREPEAT;//{开多仓的价格,上涨10个点止盈,平多仓} 
 //麻烦老师修改:开仓8手,盈10个点止盈平仓2手,盈20个点再平2手,盈30个点再平2手,盈50个点反手2手
 //最新价达到条件出信号1秒下单,允许同一根k线出现多个止盈信号,多次止盈,谢谢老师。



--  作者:FireScript
--  发布时间:2021/2/2 16:51:37
--  
 "第一根红柱的收盘价提前3秒"这个解释下。是指K线走完之前提前3秒下单还是什么?
--  作者:FireScript
--  发布时间:2021/2/2 16:58:49
--  
 “ L<OPEN-10,BP,ALLOWREPEAT;//{开空仓的价格,下跌10个止盈,平空仓};

这个代码字面逻辑是:最低价比开盘价低10个点就平空仓。你需要的是这个逻辑?还是需要单纯的10个点止盈。你这个代码和你文字描述的逻辑是冲突的 我不知道你到底需要哪个。

--  作者:FireScript
--  发布时间:2021/2/2 17:00:35
--  
 “最新价达到条件出信号1秒下单”出信号之后1秒吗?
--  作者:wz888999
--  发布时间:2021/2/2 17:11:10
--  
 L<OPEN-10,BP,ALLOWREPEAT;//{开空仓的价格,下跌10个止盈,平空仓};”.老师,这个是我在金字塔找到的函数,不知道哪个函数更能够实现,因为我刚刚接触金字塔,不熟悉函数,意思就是开空仓的价格,盈10个点立刻止盈平仓,需要单纯的10个点止盈    
 “最新价达到条件出信号1秒下单”出信号之后1秒吗?  ,出信号立刻下单,意思是不用等出信号后一秒才下单,

--  作者:wz888999
--  发布时间:2021/2/2 19:08:10
--  
第一根红柱的收盘价提前3秒"这个解释下。是指K线走完之前提前3秒下单还是什么?                         
 //是的,K线走完之前提前3秒下单,//信号不要出现闪烁,如果不能实现,就走完k线开盘价下单//                                       
//止盈与反手就不要等待走完k线才下单,例如开多仓的成本价4000点,当最新价涨到4012点时,已经达到平仓条件,对手价先平2手多单,如果最新价涨到4022点时,再平2手多单,
//如果信号反转,红色k线变成绿色k线了,先平原来持仓剩下的所有多仓,再开8手空仓,等待下一个信号,这样循环,谢谢老师









--  作者:FireScript
--  发布时间:2021/2/3 10:49:52
--  
 交易模式必须选择固定轮询,否则无法实现K线走完前3秒下单。这个提前3秒下单 在回测里面是体现不出来的,只有实际运行程序化才能看到效果。

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:=8;//手数
jc:CROSS(0,TMP1);
sc:CROSS(TMP1,0);

abb:time0-timetot0(dynainfo(207));//K线结束倒计时间
timecd:(not(ISLASTBAR)  or (ISLASTBAR and abb<=3));//最新K结束前3秒或当时是历史K
if jc and timecd then
begin
sellshort(holding<0,holding,market);
buy(holding=0,ss,market);   
end

if sc and timecd then
begin
sell(holding>0,holding,market);
buyshort(holding=0,ss,market);   
end


if c-AVGENTERPRICE>=10*MINDIFF then sell(1,holding,market);//10个点止盈
if AVGENTERPRICE-c>=10*MINDIFF then  sellshort(1,holding,market);



--  作者:wz888999
--  发布时间:2021/2/3 15:40:32
--  
老师您好,刚才测试了程序运行,持仓达到止盈条件不能及时止盈平仓,有时盈利的单到信号反转平仓,变成亏损单。

请重新修改  红色k线变绿色k线时,先平多仓,再开空仓,走完k线下单,开盘价下单8手
/////////////绿色k线变红色k线时,先平空仓,再开多仓,走完k线下单,开盘价下单8手
////////////开多仓或者空仓,如果持仓的价格盈利10个点的时候,先止盈立刻平2手,如果再盈10个点,再止盈平仓2手,如果再盈利15个点,再止盈平仓2手,
////////////如果再盈20个点,反手2手。,这些思路就类似波段止盈与趋势止盈。如果达不到平仓条件,信号反转走完k线时,平所有剩下的个别持仓或者所有持仓

/////这些开平仓条件,金字塔程序都能够实现
,就是不知道怎样截图上传上来