等级: 免费版
- 注册:
- 2024-1-6
- 曾用名:
|
//*************** 1. 基础条件 ********************
K开仓基价X:=OPEN; D开仓基价X:=OPEN;
DIFF:=REF(EMA(CLOSE,12),1) - REF(EMA(CLOSE,26),1);
DEA:=REF(EMA(DIFF,9),1);
MACD:=2*(DIFF-DEA);
MACD卖出条件:=REF(MACD,4)>=REF(MACD,3) AND REF(MACD,1)<REF(MACD,2);
MACD买入条件:=REF(MACD,4)<=REF(MACD,3) AND REF(MACD,1)>REF(MACD,2);
MACD下跌条件:=REF(MACD,4)>=REF(MACD,3) AND REF(MACD,3)>REF(MACD,2);
MACD上涨条件:=REF(MACD,4)<=REF(MACD,3) AND REF(MACD,3)<REF(MACD,2);
MA3:=EMA(C,3);
MA20:=EMA(C,20);
MA5:=EMA(C,5);
MA30:=EMA(C,30);
MA10:=EMA(C,10);
MA40:=EMA(C,40);
MD买点1:=CROSS(MA3,MA5); MD卖点1:=CROSS(MA5,MA3);
MD买点2:=CROSS(MA3,MA10); MD卖点2:=CROSS(MA10,MA3);
MD买点3:=CROSS(MA3,MA20); MD卖点3:=CROSS(MA20,MA3);
MD买点4:=CROSS(MA3,MA30); MD卖点4:=CROSS(MA30,MA3);
MD买点5:=CROSS(MA3,MA40); MD卖点5:=CROSS(MA40,MA3);
MD卖点:=MD卖点1 OR MD卖点2 OR MD卖点3 OR MD卖点4 OR MD卖点5;
MD买点:=MD买点1 OR MD买点2 OR MD买点3 OR MD买点4 OR MD买点5;
//*************** 2. 多头策略 ********************
{bs基本买开执行a}
短线买开仓价A:=D开仓基价X+1*mindiff;
短线买止损价A:=REF(LLV(L,1),2) - 1*mindiff;
短线买止盈价A:=D开仓基价X+4*mindiff;
BS买开执行A1:=MD买点 AND MACD买入条件 AND (OPEN>=REF(L,2) AND OPEN<=REF(H,1));
BS买开执行A2:=MD买点 AND MACD下跌条件 AND (OPEN>=REF(L,2) AND OPEN<=REF(H,1));
BS买开执行A组:=BS买开执行A1 OR BS买开执行A2;
{bs基本买开执行b}
短线买开仓价B:=D开仓基价X+1*mindiff;
短线买止损价B:=REF(LLV(L,1),2)- 1*mindiff;
短线买止盈价B:=D开仓基价X+6*mindiff;
BS买开执行B1:=MD买点 AND MACD买入条件 AND (OPEN>=REF(L,2) AND OPEN<=REF(H,1));
BS买开执行B2:=MD买点 AND MACD下跌条件 AND (OPEN>=REF(L,2) AND OPEN<=REF(H,1));
BS买开执行B组:=BS买开执行B1 OR BS买开执行B2;
//*************** 3. 空头策略 ********************
{bs基本卖开执行a}
短线卖开仓价A:=K开仓基价X-1*mindiff;
短线卖止损价A:=REF(HHV(H,1),2)+1*mindiff;
短线卖止盈价A:=K开仓基价X-4*mindiff;
BS卖开执行A1:=MD卖点 AND MACD卖出条件 AND OPEN<=REF(H,1);
BS卖开执行A2:=MD卖点 AND MACD上涨条件 AND OPEN<=REF(H,1);
BS卖开执行A组:=BS卖开执行A1 or BS卖开执行A2;
{bs基本卖开执行b}
短线卖开仓价B:=K开仓基价X-1*mindiff;
短线卖止损价B:=REF(HHV(H,1),2)+1*mindiff;
短线卖止盈价B:=K开仓基价X-8*mindiff;
BS卖开执行B1:=MD卖点 AND MACD卖出条件 AND OPEN<=REF(H,1) AND REF(H,1)<=REF(H,2);
BS卖开执行B2:=MD卖点 AND MACD上涨条件 AND OPEN<=REF(H,1) AND REF(H,1)<=REF(H,2);
BS卖开执行B组:=BS卖开执行B1 or BS卖开执行B2;
//*************** 实际报价 ********************
买开仓价A:=D开仓基价X;
买止损价A:=D开仓基价X-4*mindiff;
买止盈价A:=D开仓基价X+4*mindiff;
买开仓价B:=D开仓基价X+1*mindiff;
买止损价B:=买开仓价B-4*mindiff;
买止盈价B:=买开仓价B+3*mindiff;
卖开仓价A:=K开仓基价X;
卖止损价A:=卖开仓价A+3*mindiff;
卖止盈价A:=卖开仓价A-3*mindiff;
卖开仓价B:=K开仓基价X-1*mindiff;
卖止损价B:=卖开仓价B+3*mindiff;
卖止盈价B:=卖开仓价B-3*mindiff;
//后台要求:
//1. 实际成交后 , 不管设计信号最终形成与否,即闪点形成的成交价也按 3或4跳止盈或止损。以实际开仓价为中心傻瓜固定止损止盈
//2. 一个K线只能开一次仓, 避免信号闪烁时候反复加仓
//3. 信号K线(包括闪烁的信号)结束后,10秒内撤单或者立即撤单。
//4.收盘前7分钟不开新仓
//*************** 4. 后台交易执行 ********************
//****持仓管理*****
globalvariable:B_01:=0,B_opn_01:=0,B_tkp_01:=0,B_stp_01:=0,B_stp_brk_01:=0,B_idx_01:=0,
B_02:=0,B_opn_02:=0,B_tkp_02:=0,B_stp_02:=0,B_stp_brk_02:=0,B_idx_02:=0,
s_01:=0,s_opn_01:=0,s_tkp_01:=0,s_stp_01:=0,s_stp_brk_01:=0,s_idx_01:=0,
s_02:=0,s_opn_02:=0,s_tkp_02:=0,s_stp_02:=0,s_stp_brk_02:=0,s_idx_02:=0;
R_C1:=REF(C,1);
//*************** 多头 后台********************
//****平仓*****
//------------------多单:
//@多单:止盈
if b_01=1 and close>=b_tkp_01 and tbuyholdingex('','',1)>0 then
begin
DA盈:tsell(1,1,lmt,close);
b_01:=0;
end
if b_02=1 and close>=b_tkp_02 and tbuyholdingex('','',1)>0 then
begin
DB盈:tsell(1,1,lmt,close);
b_02:=0;
end
//@多单:价格limitr 止损
if b_01=1 AND R_C1<B_STP_01 and tbuyholdingex('','',1)>0 then
begin
DA损:tsell(1,1,lmt,close);
b_01:=0;
end
if b_02=1 AND R_C1<B_STP_02 and tbuyholdingex('','',1)>0 then
begin
DB损:tsell(1,1,lmt,close);
b_02:=0;
end
//****开仓*****
//@多单:开仓
if BS买开执行A组 and b_01=0 and tbuyholdingex('','',2)=0 and remainingtime(closetime(0))>15*60 then
begin
DA:tbuy(1,1,lmt,买开仓价A); //执行买开
b_01:=1; //状态 表示1手多单已经是持仓状态了
b_opn_01:=买开仓价A; //开仓
b_tkp_01:=买止盈价A; //止盈
b_stp_01:=买止损价A; //价格止损
b_idx_01:=barpos; //开仓k线 记录哪一个开仓k线
end
if BS买开执行B组 and b_02=0 and tbuyholdingex('','',2)=0 and remainingtime(closetime(0))>15*60 then
begin
DB:tbuy(1,1,lmt,买开仓价B);
b_02:=1;
b_opn_02:=买开仓价B;
b_tkp_02:=买止盈价B;
b_stp_02:=买止损价B;
b_idx_02:=barpos;
end
//*************** 空头 ********************
//****平仓*****
//------------------空单:
//@空单:止盈
if s_01=1 and close<=s_tkp_01 and tsellholdingex('','',1)>0 then
begin
KA盈:tsellshort(1,1,lmt,close);
s_01:=0;
end
if s_02=1 and close<=s_tkp_02 and tsellholdingex('','',1)>0 then
begin
KB盈:tsellshort(1,1,lmt,close);
s_02:=0;
end
//@空单:limitr价格止损
r_c1:=ref(c,1);
if s_01=1 AND R_C1>S_STP_01 and tsellholdingex('','',1)>0 then
begin
KA损:tsellshort(1,1,lmt,open);
s_01:=0;
end
if s_02=1 AND R_C1>S_STP_02 and tsellholdingex('','',1)>0 then
begin
KB损:tsellshort(1,1,lmt,open);
s_02:=0;
end
//****开仓*****
//@空单:开仓
if BS卖开执行A组 and s_01=0 and tsellholdingex('','',2)=0 and remainingtime(closetime(0))>15*60 then
begin
KA:tbuyshort(BS卖开执行A组,1,lmt,卖开仓价A);
s_01:=1;
s_opn_01:=卖开仓价A;
s_tkp_01:=卖止盈价A;
s_stp_01:=卖止损价A;
s_idx_01:=barpos;
end
if BS卖开执行B组 and s_02=0 and tsellholdingex('','',2)=0 and remainingtime(closetime(0))>15*60 then
begin
KB:tbuyshort(BS卖开执行B组,1,lmt,卖开仓价B);
s_02:=1;
s_opn_02:=卖开仓价B;
s_tkp_02:=卖止盈价B;
s_stp_02:=卖止损价B;
s_idx_02:=barpos;
end
//2. 收盘前2分钟自动全部平仓,
if remainingtime(closetime(0))<2*60 then begin
tsellshort(tsellholdingex('','',1)>0,tsellholdingex('','',1),mkt);
tsell(tbuyholdingex('','',1)>0,tbuyholdingex('','',1),mkt);
end
//3. 收盘前7分钟不开新仓,需要补充
LJ:STRCAT(STRCAT('C:\调试日志\',STKLABEL),'.TXT');
IF ISLASTBAR THEN BEGIN
DEBUGFILE(LJ,'多头持仓='&NUMTOSTR(TBUYHOLDINGEX('','',2),0)&' 空头持仓='&NUMTOSTR(TSELLHOLDINGEX('','',2),0)&' 最新价='&NUMTOSTR(C,2)&' 前收='&NUMTOSTR(R_C1,2),1);
DEBUGFILE(LJ,'开多条件1='&NUMTOSTR(BS买开执行A组,0)&' 开多条件2='&NUMTOSTR(BS买开执行B组,0)&' 开多标记1='&NUMTOSTR(B_01,0)&' 开多标记2='&NUMTOSTR(B_02,0),1);
DEBUGFILE(LJ,'买开仓价A='&NUMTOSTR(B_OPN_01,2)&' 买止盈价A='&NUMTOSTR(B_TKP_01,2)&' 买止损价A='&NUMTOSTR(B_STP_01,2),1);
DEBUGFILE(LJ,'买开仓价B='&NUMTOSTR(B_OPN_02,2)&' 买止盈价B='&NUMTOSTR(B_TKP_02,2)&' 买止损价B='&NUMTOSTR(B_STP_02,2),1);
DEBUGFILE(LJ,'卖开仓价A='&NUMTOSTR(S_OPN_01,2)&' 卖止盈价A='&NUMTOSTR(S_TKP_01,2)&' 卖止损价A='&NUMTOSTR(S_STP_01,2),1);
DEBUGFILE(LJ,'卖开仓价B='&NUMTOSTR(S_OPN_02,2)&' 卖止盈价B='&NUMTOSTR(S_TKP_02,2)&' 卖止损价B='&NUMTOSTR(S_STP_02,2),1);
DEBUGFILE(LJ,'-------------------------------------------------------',1);
END
|
|