金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1283|回复: 8

多头策略 DD-link / 空头策略 KK-link 时间网格

[复制链接]

3

主题

76

帖子

76

积分

等级: 免费版

注册:
2021-7-16
曾用名:
发表于 2025-2-3 08:35 | 显示全部楼层 |阅读模式
本帖最后由 技术006 于 2025-2-3 09:47 编辑

多头策略 DD-link / 空头策略 KK-link 时间网格
[PEL] 复制代码
//+++++++++++++++++++++KK_LINK++++++++++++++++
//WARNING_DISABLE:9;
{===========================================================================================}
INPUT:T0(3,2,240,1),BMIN(1,1,100,1),BMAX(40,1,100,1);
HOLDING0:=IF(HOLDING<>DAYHOLDING,DAYHOLDING,HOLDING);
AVGENTERPRICE0:=IF(AVGENTERPRICE<>AVGENTERPRICE,AVGENTERPRICE,AVGENTERPRICE);
{===========================================================================================}
{1
TR0:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),NOAXIS;//,LINETHICK0;
ATR0:MA(TR0,14),NOAXIS;//,LINETHICK0;

TR1:=MAX(MAX((REF(HIGH,1)-REF(LOW,1)),ABS(REF(CLOSE,2)-REF(HIGH,1))),ABS(REF(CLOSE,2)-REF(LOW,1))),NOAXIS;//,LINETHICK0;
ATR1:MA(TR1,14),NOAXIS;//,LINETHICK0;
{===========================================================================================}

OPEND:="$OPEN#DAY";
CLOSED:="$CLOSE#DAY";
HIGHD:="$HIGH#DAY";
LOWD:="$LOW#DAY";
VOLD:="$VOL#DAY";

BZJ0:=ROUND( ( REF(CLOSED,0) * MULTIPLIER * (TACCOUNT(41)+TACCOUNT(42))/2 ) ),NOAXIS,LINETHICK0;
FY0:=OPENPROFIT,NOAXIS;//,LINETHICK0;

保0:BZJ0,NOAXIS,LINETHICK0;
浮0:FY0,NOAXIS,LINETHICK0;

ZCK0:=ROUND( ( (( CASH(0)+CASH(1) )/2) * (BMIN/100) ) / BZJ0 ),NOAXIS,LINETHICK0;
ZCK1:=ROUND( ( (( CASH(0)+CASH(1) )/2) * (BMAX/100) ) / BZJ0 ),NOAXIS,LINETHICK0;
基:ZCK0,NOAXIS,LINETHICK0;
极:ZCK1,NOAXIS,LINETHICK0;

//ZCB0:=( (CASH(0)+CASH(1))/2 )/(ASSET),NOAXIS,LINETHICK0;
//比:ZCB0,NOAXIS,LINETHICK0;

JYF0:=GEGCHARGE('',REF(CLOSED,0),1,0)*2,NOAXIS,LINETHICK0;
费:JYF0,NOAXIS,LINETHICK0;

MMC0:=( (DYNAINFO(34)-DYNAINFO(28)) )*MULTIPLIER,NOAXIS,LINETHICK0;
差:MMC0,NOAXIS,LINETHICK0;

//ZXBD:=DYNAINFO(208)*MULTIPLIER,NOAXIS,LINETHICK0;
//XS:( IF(JYF>=MMC,JYF,MMC)-IF(MMC>=JYF,JYF,MMC) )/IF(JYF>=MMC,JYF,MMC),NOAXIS,LINETHICK0;
//DC:(1+ROUND(IF(XS<=1,1,XS)))*( (DYNAINFO(34)-DYNAINFO(28)) ),NOAXIS,LINETHICK0;
{===========================================================================================}
仓:HOLDING0,NOAXIS,LINETHICK0;
资:ASSET,NOAXIS,LINETHICK0;
金:CASH(0),NOAXIS,LINETHICK0;
净:NETPROFIT,NOAXIS,COLORYELLOW,LINETHICK0;
浮:OPENPROFIT,NOAXIS,LINETHICK0;
幅:OPENPROFITPER,NOAXIS,LINETHICK0;
撤:MAXDRAWDOWN,NOAXIS,LINETHICK0;
幅0:MAXDRAWDOWNPCT,NOAXIS,LINETHICK0;
亏:GROSSLOSS,NOAXIS,LINETHICK0;
盈:BESTTRADE,NOAXIS,LINETHICK0;
回:ANNUALRETURNRATER,NOAXIS,LINETHICK0;
年:ANNUALRETURNRATE,NOAXIS,LINETHICK0;
风:=PROFITRISKRATIO,NOAXIS,LINETHICK0;
次:=TOTALDAYTRADE,NOAXIS,LINETHICK0;
{=================================================================}
HMIN:=ZCK0;
HMAX:=ZCK1;
H1:=HMIN;
H2:=H1*2;
H3:=H1*3;
{==============================================================================}
{==========================================================================================}
ZQ1:=IF(DATATYPE=1,1,0);
ZQ3:=IF(DATATYPE=17,3,0);
ZQ5:=IF(DATATYPE=2,5,0);
ZQ10:=IF(DATATYPE=18,10,0);
ZQ15:=IF(DATATYPE=3,15,0);
ZQ30:=IF(DATATYPE=4,30,0);
ZQ60:=IF(DATATYPE=5,60,0);
ZQF:=IF(DATATYPE=13,DATATYPEMORE(2),0);
ZQH:=IF(DATATYPE=11,DATATYPEMORE(1)*60,0);
ZQ:=ZQ1+ZQ3+ZQ5+ZQ10+ZQ15+ZQ30+ZQ60+ZQF+ZQH,NOAXIS;
CYC:=BARSLAST(DATE<>REF(DATE,1))+1,NOAXIS;
JY:=IF(HIGH+LOW-OPEN-CLOSE=0,0,1),NOAXIS;
TK:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-10*100,NOAXIS;
TS:=TIME>=CLOSETIME(0)-10*100,NOAXIS;
F:="ZQ";
OPENMIN1:="$OPEN#MINF";
OPENDAY:="$OPEN#DAY";
OPENSTART:=IF(OPENMIN1=OPENDAY,1,0);
OST:=FILTER(OPENSTART,CYC);
KPJY:= OST>=1 AND TK>=1 AND JY=1 AND CYC>=1;
SPJY:= TS=1;
{====================================================================================================}
//SELL(SPJY,HOLDING0,THISCLOSE);{CLOSE}
//BUY(KPJY,1,THISCLOSE);{OPEN}
//收盘:SELLSHORT(SPJY,HOLDING0,THISCLOSE);{CLOSE}
//开盘:BUYSHORT(KPJY,HMIN,THISCLOSE);{OPEN}
{============================================================================================}
//INPUT:N(1,1,240,1);
D:=T0;//RAND(9)+5,NOAXIS,LINETHICK0;
隔:D,NOAXIS,LINETHICK0;
D1:=IF(D<=2,2,D),NOAXIS,LINETHICK0;
D2:=RET(OPENMINUTES(CURRENTTIME),1),NOAXIS,LINETHICK0;
D3:=RET(OPENMINUTES(TIME),1),NOAXIS,LINETHICK0;
日:D2,NOAXIS,LINETHICK0;
分:D3,NOAXIS,LINETHICK0;
{===================================================================================}
X0:=IF(HIGH+LOW-OPEN-CLOSE=0,0,1),NOAXIS,LINETHICK0;
X1:=REF(X0,1),NOAXIS,LINETHICK0;
{==================================================================================}
A1:=OPENMINUTES(TIME)/D,NOAXIS,LINETHICK0;
A2:=INTPART(A1),NOAXIS,LINETHICK0;
A3:=FRACPART(A1),NOAXIS,LINETHICK0;
A4:=(A2/A3),NOAXIS,LINETHICK0;
A5:=(A2-D),NOAXIS,LINETHICK0;
A6:=IF((A4-A5)=D,1,0),NOAXIS,LINETHICK0;
{====================================================================================}
BSELL:=IF(AVGENTERPRICE0=0,OPEN,AVGENTERPRICE0)-OPEN,NOAXIS;
本 :BSELL,COLORBLUE,NOAXIS;//,LINETHICK0;
本0:IF(AVGENTERPRICE=0,OPEN,AVGENTERPRICE),COLORRED;//,NOAXIS;//,LINETHICK0;
B0:=1*(DYNAINFO(34)-DYNAINFO(28)),NOAXIS,LINETHICK0;
B1:=IF(B0<=0,MINDIFF,B0),NOAXIS,LINETHICK0;
小:B1,NOAXIS,LINETHICK0;
{=====================================================================================}
{
FY1:FY0/BZJ0/1,NOAXIS;//,LINETHICK0;
FY2:FY0/BZJ0/2,NOAXIS;//,LINETHICK0;
FY3:FY0/BZJ0/3,NOAXIS;//,LINETHICK0;
FY4:FY0/BZJ0/4,NOAXIS;//,LINETHICK0;
FY5:FY0/BZJ0/5,NOAXIS;//,LINETHICK0;
FY6:FY0/BZJ0/6,NOAXIS;//,LINETHICK0;
// FILTER((FY0>BZJ0),ENTERBARS)

{==============================================================================}

KPK:=01 AND (BSELL>B1*7) AND X1;
控平空:SELLSHORT(KPK,(HOLDING0/H3),THISCLOSE),NOAXIS,LINETHICK0;
{==============================================================================}
//开盘:BUYSHORT( HOLDING0=0 AND (D2+D3)=D2+2,H1,THISCLOSE),NOAXIS,LINETHICK0;
随机开空:BUYSHORT( HOLDING0=0 AND X1 AND A6,H1,THISCLOSE),NOAXIS,LINETHICK0;
{==============================================================================}
控加空0:BUYSHORT(-01>HOLDING0>-02 AND (BSELL+B1*05)<-B1*07 AND X1 AND A6,H2,THISCLOSE),NOAXIS,LINETHICK0;
控加空1:BUYSHORT(-02>HOLDING0>-03 AND (BSELL+B1*07)<-B1*11 AND X1 AND A6,H3,THISCLOSE),NOAXIS,LINETHICK0;
控加空2:BUYSHORT(-03>HOLDING0>-05 AND (BSELL+B1*11)<-B1*13 AND X1 AND A6,H1,THISCLOSE),NOAXIS,LINETHICK0;
控加空3:BUYSHORT(-05>HOLDING0>-07 AND (BSELL+B1*13)<-B1*17 AND X1 AND A6,H2,THISCLOSE),NOAXIS,LINETHICK0;
控加空4:BUYSHORT(-07>HOLDING0>-11 AND (BSELL+B1*17)<-B1*19 AND X1 AND A6,H3,THISCLOSE),NOAXIS,LINETHICK0;
控加空5:BUYSHORT(-11>HOLDING0>-13 AND (BSELL+B1*19)<-B1*13 AND X1 AND A6,H1,THISCLOSE),NOAXIS,LINETHICK0;
控加空6:BUYSHORT(-13>HOLDING0>-17 AND (BSELL+B1*13)<-B1*17 AND X1 AND A6,H2,THISCLOSE),NOAXIS,LINETHICK0;
控加空7:BUYSHORT(-17>HOLDING0>-19 AND (BSELL+B1*17)<-B1*19 AND X1 AND A6,H3,THISCLOSE),NOAXIS,LINETHICK0;
控加空8:BUYSHORT(-19>HOLDING0>-23 AND (BSELL+B1*19)<-B1*23 AND X1 AND A6,H1,THISCLOSE),NOAXIS,LINETHICK0;
控加空9:BUYSHORT(-23>HOLDING0>-29 AND (BSELL+B1*23)<-B1*29 AND X1 AND A6,H2,THISCLOSE),NOAXIS,LINETHICK0;
{==============================================================================}
{
JK:=#DD-LINK.KPD()#;
加空0:BUYSHORT(JK=1 AND X1 AND A6,H1,THISCLOSE),NOAXIS,LINETHICK0;
{==============================================================================}
{
控平空0:SELLSHORT(IF( HOLDING0<-HMAX/3,1,0) AND FILTER((BSELL>B1*0),ENTERBARS) AND X1,HOLDING0/H3,THISCLOSE),NOAXIS,LINETHICK0;
控平空1:SELLSHORT(IF( HOLDING0<-HMAX,2,0) AND FILTER((BSELL>B1*0),ENTERBARS) AND X1,HOLDING0/H3,THISCLOSE),NOAXIS,LINETHICK0;

{=========================================================================================}

//开盘0:BUYSHORT( HOLDING0=0 AND (D2+D3)=D2+1,H1,THISCLOSE),NOAXIS,LINETHICK0;
//收盘清仓0:SELLSHORT((D2-D3)=1 ,HOLDING0,THISCLOSE),NOAXIS,LINETHICK0;

//收盘清仓:SELLSHORT(SPJY ,HOLDING0,THISCLOSE),NOAXIS,LINETHICK0;

{==============================================================================}









{============================================================================}
//开盘全平:SELL((D2+D3)=D2+1,HOLDING,MARKETR),NOAXIS,LINETHICK0;
//开多:BUY(X1 AND A6,1,MARKETR),NOAXIS,LINETHICK0;
//加多:BUY(B1<0 AND A6,1,MARKETR),NOAXIS,LINETHICK0;
//控平多:SELL(B1>=5,HOLDING/2,MARKETR),NOAXIS,LINETHICK0;
//收盘清仓:SELL((D2-D3)<=1 ,HOLDING,MARKETR),NOAXIS,LINETHICK0;
{=============================================================================}
//开盘全平:SELL((D2+D3)=D2+1,HOLDING,THISCLOSE),ORDERQUEUE,NOAXIS,LINETHICK0;
//开多:BUY(X1 AND A6,1,THISCLOSE),ORDERQUEUE,NOAXIS,LINETHICK0;
//加多:BUY(B1<0 AND A6,1,THISCLOSE),ORDERQUEUE,NOAXIS,LINETHICK0;
//控平多:SELL(B1>=5,HOLDING/2,THISCLOSE),ORDERQUEUE,NOAXIS,LINETHICK0;
//收盘清仓:SELL((D2-D3)<=1 ,HOLDING,THISCLOSE),ORDERQUEUE,NOAXIS,LINETHICK0;
{=============================================================================}



补充内容 (2025-2-3 18:00):

//+++++++++++++++++++DD-LINK+++++++++++++++++++++++++++

//WARNING_DISABLE:9;
{===========================================================================================}
INPUT:T0(3,2,240,1),BMIN(1,1,100,1),BMAX(40,1,100,1);
HOLDING0:=IF(HOLDING<>DAYHOLDING,DAYHOLDING,HOLDING);
AVGENTERPRICE0:=IF(AVGENTERPRICE<>AVGENTERPRICE,AVGENTERPRICE,AVGENTERPRICE);
{===========================================================================================}
{
TR0:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),NOAXIS;//,LINETHICK0;
ATR0:MA(TR0,14),NOAXIS;//,LINETHICK0;

TR1:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),NOAXIS;//,LINETHICK0;
ATR1:REF(MA(TR1,14),1),NOAXIS;//,LINETHICK0;
{===========================================================================================}
OPEND:="$OPEN#DAY";
CLOSED:="$CLOSE#DAY";
HIGHD:="$HIGH#DAY";
LOWD:="$LOW#DAY";
VOLD:="$VOL#DAY";

BZJ0:=ROUND( ( REF(CLOSED,0) * MULTIPLIER * (TACCOUNT(41)+TACCOUNT(42))/2 ) ),NOAXIS,LINETHICK0;
FY0:=OPENPROFIT,NOAXIS;//,LINETHICK0;
保0:BZJ0,NOAXIS,LINETHICK0;
浮0:FY0,NOAXIS,LINETHICK0;

ZCK0:=ROUND( ( (( CASH(0)+CASH(1) )/2) * (BMIN/100) ) / BZJ0 ),NOAXIS,LINETHICK0;
ZCK1:=ROUND( ( (( CASH(0)+CASH(1) )/2) * (BMAX/100) ) / BZJ0 ),NOAXIS,LINETHICK0;
基:ZCK0,NOAXIS,LINETHICK0;
极:ZCK1,NOAXIS,LINETHICK0;

ZCB0:=( (CASH(0)+CASH(1))/2 )/(ASSET),NOAXIS,LINETHICK0;
比:=ZCB0,NOAXIS,LINETHICK0;

JYF0:=GEGCHARGE('',REF(CLOSED,0),1,0)*2,NOAXIS,LINETHICK0;
费:JYF0,NOAXIS,LINETHICK0;

MMC0:=( (DYNAINFO(34)-DYNAINFO(28)) )*MULTIPLIER,NOAXIS,LINETHICK0;
差:MMC0,NOAXIS,LINETHICK0;

ZXBD:=DYNAINFO(208)*MULTIPLIER,NOAXIS,LINETHICK0;
//XS:( IF(JYF>=MMC,JYF,MMC)-IF(MMC>=JYF,JYF,MMC) )/IF(JYF>=MMC,JYF,MMC),NOAXIS,LINETHICK0;
//DC:(1+ROUND(IF(XS<=1,1,XS)))*( (DYNAINFO(34)-DYNAINFO(28)) ),NOAXIS,LINETHICK0;

{===========================================================================================}
仓:HOLDING0,NOAXIS,LINETHICK0;
资:ASSET,NOAXIS,LINETHICK1;
金:CASH(0),NOAXIS,LINETHICK0;
净:NETPROFIT,NOAXIS,COLORYELLOW,LINETHICK0;
浮:OPENPROFIT,NOAXIS,LINETHICK0;
幅:OPENPROFITPER,NOAXIS,LINETHICK0;
撤:MAXDRAWDOWN,NOAXIS,LINETHICK0;
幅0:MAXDRAWDOWNPCT,NOAXIS,LINETHICK0;
亏:GROSSLOSS,NOAXIS,LINETHICK0;
盈:BESTTRADE,NOAXIS,LINETHICK0;
回:ANNUALRETURNRATER,NOAXIS,LINETHICK0;
年:ANNUALRETURNRATE,NOAXIS,LINETHICK0;
风:=PROFITRISKRATIO,NOAXIS,LINETHICK0;
次:=TOTALDAYTRADE,NOAXIS,LINETHICK0;
{++++++++++++++++++++++++++++++++++}
HMIN:=ZCK0;
HMAX:=ZCK1;
H1:=HMIN;
H2:=H1*2;
H3:=H1*3;
{=============================================================================}
ZQ1:=IF(DATATYPE=1,1,0);
ZQ3:=IF(DATATYPE=17,3,0);
ZQ5:=IF(DATATYPE=2,5,0);
ZQ10:=IF(DATATYPE=18,10,0);
ZQ15:=IF(DATATYPE=3,15,0);
ZQ30:=IF(DATATYPE=4,30,0);
ZQ60:=IF(DATATYPE=5,60,0);
ZQF:=IF(DATATYPE=13,DATATYPEMORE(2),0);
ZQH:=IF(DATATYPE=11,DATATYPEMORE(1)*60,0);
ZQ:=ZQ1+ZQ3+ZQ5+ZQ10+ZQ15+ZQ30+ZQ60+ZQF+ZQH,NOAXIS;
CYC:=BARSLAST(DATE<>REF(DATE,1))+1,NOAXIS;
JY:=IF(HIGH+LOW-OPEN-CLOSE=0,0,1),NOAXIS;
TK:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-10*100,NOAXIS;
TS:=TIME>=CLOSETIME(0)-10*100,NOAXIS;
F:="ZQ";
OPENMIN1:="$OPEN#MINF";
OPENDAY:="$OPEN#DAY";
OPENSTART:=IF(OPENMIN1=OPENDAY,1,0);
OST:=FILTER(OPENSTART,CYC);
KPJY:=HOLDING0=0 AND OST>=1 AND TK>=1 AND JY=1 AND CYC>=1;
SPJY:= TS=1;
{====================================================================================================}
//收盘:SELL(SPJY,HOLDING0,THISCLOSE);{CLOSE}
//开盘:BUY(KPJY,HMIN,THISCLOSE);{OPEN}
//SELLSHORT(SPJY,DAYHOLDING,THISCLOSE);{CLOSE}
//BUYSHORT(KPJY,1,THISCLOSE);{OPEN}
{============================================================================================}
//INPUT:N(1,1,100,1);
D:=T0;//10;//RAND(9)+5,NOAXIS,LINETHICK0;
隔:=D,NOAXIS,LINETHICK0;
D1:=IF(D<=2,2,D),NOAXIS,LINETHICK0;
D2:=RET(OPENMINUTES(CURRENTTIME),1),NOAXIS,LINETHICK0;
D3:=RET(OPENMINUTES(TIME),1),NOAXIS,LINETHICK0;
日:=D2,NOAXIS;//,LINETHICK0;
分:=D3,NOAXIS;//,LINETHICK0;
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
X0:=IF(HIGH+LOW-OPEN-CLOSE=0,0,1),NOAXIS,LINETHICK0;
X1:=REF(X0,1),NOAXIS,LINETHICK0;
{++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
A1:=OPENMINUTES(TIME)/D,NOAXIS,LINETHICK0;
A2:=INTPART(A1),NOAXIS,LINETHICK0;
A3:=FRACPART(A1),NOAXIS,LINETHICK0;
A4:=(A2/A3),NOAXIS,LINETHICK0;
A5:=(A2-D),NOAXIS,LINETHICK0;
A6:=IF((A4-A5)=D,1,0),NOAXIS,LINETHICK0;
{===========================================================================+}
BBUY:=OPEN-IF(AVGENTERPRICE0=0,OPEN,AVGENTERPRICE0),NOAXIS;
本 :=BBUY,NOAXIS,COLORBLUE;//,LINETHICK0;
本0:IF(AVGENTERPRICE=0,OPEN,AVGENTERPRICE),COLORRED;//,NOAXIS;//,LINETHICK0;
{============================================================}
B0:=1*(DYNAINFO(34)-DYNAINFO(28)),NOAXIS,LINETHICK0;
B1:=IF(B0<=0,MINDIFF,B0),NOAXIS,LINETHICK0;
差:=B1,NOAXIS;//,LINETHICK0;

{++++++++++++++++++++++++++++++++++++++}
{
FY1:FY0/BZJ0/1,NOAXIS;//,LINETHICK0;
FY2:FY0/BZJ0/2,NOAXIS;//,LINETHICK0;
FY3:FY0/BZJ0/3,NOAXIS;//,LINETHICK0;
FY4:FY0/BZJ0/4,NOAXIS;//,LINETHICK0;
FY5:FY0/BZJ0/5,NOAXIS;//,LINETHICK0;
FY6:FY0/BZJ0/6,NOAXIS;//,LINETHICK0;
//   FILTER((FY0>BZJ0),ENTERBARS)

{++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}

KPD:=01 AND BBUY>B1*7 AND X1;
控平多:SELL(KPD ,HOLDING0/H3,THISCLOSE),NOAXIS,LINETHICK0;
//控平多:SELL( HOLDING0>0 AND FY0>=BZJ0 AND X1,(HOLDING0)/H3,THISCLOSE),NOAXIS,LINETHICK0;
{===========================================================================}
//开盘:SELL((D2+D3)=D2+1,HOLDING,MARKETR),NOAXIS,LINETHICK0;
随机开多:BUY(  HOLDING0=0 AND X1 AND A6,BMIN,THISCLOSE),NOAXIS,LINETHICK0;
{===========================================================================}
控加多0:BUY(01<HOLDING0<02 AND (BBUY+B1*05)<-B1*07 AND X1 AND A6,H2,THISCLOSE),NOAXIS,LINETHICK0;
控加多1:BUY(02<HOLDING0<03 AND (BBUY+B1*07)<-B1*11 AND X1 AND A6,H3,THISCLOSE),NOAXIS,LINETHICK0;
控加多2:BUY(03<HOLDING0<05 AND (BBUY+B1*11)<-B1*13 AND X1 AND A6,H1,THISCLOSE),NOAXIS,LINETHICK0;
控加多3:BUY(05<HOLDING0<07 AND (BBUY+B1*13)<-B1*17 AND X1 AND A6,H2,THISCLOSE),NOAXIS,LINETHICK0;
控加多4:BUY(07<HOLDING0<11 AND (BBUY+B1*17)<-B1*19 AND X1 AND A6,H3,THISCLOSE),NOAXIS,LINETHICK0;
控加多5:BUY(11<HOLDING0<13 AND (BBUY+B1*19)<-B1*23 AND X1 AND A6,H1,THISCLOSE),NOAXIS,LINETHICK0;
控加多6:BUY(13<HOLDING0<17 AND (BBUY+B1*23)<-B1*29 AND X1 AND A6,H2,THISCLOSE),NOAXIS,LINETHICK0;
控加多7:BUY(17<HOLDING0<19 AND (BBUY+B1*29)<-B1*31 AND X1 AND A6,H3,THISCLOSE),NOAXIS,LINETHICK0;
控加多8:BUY(19<HOLDING0<23 AND (BBUY+B1*31)<-B1*37 AND X1 AND A6,H1,THISCLOSE),NOAXIS,LINETHICK0;
控加多9:BUY(23<HOLDING0<29 AND (BBUY+B1*37)<-B1*41 AND X1 AND A6,H2,THISCLOSE),NOAXIS,LINETHICK0;
{===========================================================================}
{
JD:=#KK-LINK.KPK(1)#;
加多0:BUY(JD=1 AND X1 AND A6,H2,THISCLOSE),NOAXIS,LINETHICK0;
{===========================================================================}
{
控平多0:SELL(IF( HOLDING0>HMAX/3,1,0) AND FILTER((BBUY>B1*0),ENTERBARS) AND X1,HOLDING0/H2,THISCLOSE),NOAXIS,LINETHICK0;
控平多1:SELL(IF( HOLDING0>HMAX/2,1,0) AND FILTER((BBUY>B1*0),ENTERBARS) AND X1,HOLDING0/H2,THISCLOSE),NOAXIS,LINETHICK0;
//控平多3:SELL(IF( HOLDING0>HMAX/1,1,0) AND FILTER((BBUY>B1*0),ENTERBARS) AND X1,HOLDING0/H2,THISCLOSE),NOAXIS,LINETHICK0;

{=============================================================================}


{===============================================================================}
//开盘0:SELL((D2+D3)=D2+1,HOLDING,MARKETR),NOAXIS,LINETHICK0;
//收盘清仓0:SELL( (D2-D3)=1 ,HOLDING0,THISCLOSE),NOAXIS,LINETHICK0;

//收盘清仓:SELL( SPJY ,HOLDING0,THISCLOSE),NOAXIS,LINETHICK0;
{======================================================================================}











{++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
//开盘全平:SELL((D2+D3)=D2+1,HOLDING,MARKETR),NOAXIS,LINETHICK0;
//开多:BUY(X1 AND A6,1,MARKETR),NOAXIS,LINETHICK0;
//加多:BUY(B1<0 AND A6,1,MARKETR),NOAXIS,LINETHICK0;
//控平多:SELL(B1>=5,HOLDING/2,MARKETR),NOAXIS,LINETHICK0;
//收盘清仓:SELL((D2-D3)<=1 ,HOLDING,MARKETR),NOAXIS,LINETHICK0;
{============================================================================}

{===========================================================================}
//开盘全平:SELL((D2+D3)=D2+1,HOLDING,THISCLOSE),ORDERQUEUE,NOAXIS,LINETHICK0;
//开多:BUY(X1 AND A6,1,THISCLOSE),ORDERQUEUE,NOAXIS,LINETHICK0;
//加多:BUY(B1<0 AND A6,1,THISCLOSE),ORDERQUEUE,NOAXIS,LINETHICK0;
//控平多:SELL(B1>=5,HOLDING/2,THISCLOSE),ORDERQUEUE,NOAXIS,LINETHICK0;
//收盘清仓:SELL((D2-D3)<=1 ,HOLDING,THISCLOSE),ORDERQUEUE,NOAXIS,LINETHICK0;
{============================================================================}


//DATAPERIAD
//BUY(X1 AND OPENMINUTES(TIME)=0,1,THISCLOSE);
{
//SELL(X AND ENTERBARS=2,0,THISCLOSE),NOAXIS,LINETHICK0;
//固定止损部分************************

//止盈
IF OPEN-AVGENTERPRICE>100*MINDIFF THEN BEGIN
SELL(1,HOLDING,THISCLOSE);
END

//止损
IF AVGENTERPRICE-OPEN>10*MINDIFF THEN BEGIN
SELL(1,HOLDING,THISCLOSE);
END
//BUYSHORT(A6,1,THISCLOSE),NOAXIS,LINETHICK0;
//SELLSHORT(ENTERBARS=9,0,THISCLOSE),NOAXIS,LINETHICK0;
}

//A:(TIMETOT0(DYNAINFO(207)+D)-REF(TIME0,1)),NOAXIS,LINETHICK0;

//CD1:(HOLDING=0) OR ENTERBARS=5,NOAXIS,LINETHICK0;
//CD2:(HOLDING=0) OR EXITBARS=5,NOAXIS,LINETHICK0;

//BUY(CD1,1,THISCLOSE);
//SELL(CD2,1,THISCLOSE);
//BUYSHORT(CD,1,MARKET);

//移动止损部分************************
//求出持仓以来的最高价或最低价,通过与当前价做比较,判断资金回落的幅度
//DTYDZS:=(HHV(H,ENTERBARS)-CLOSE)/AVGENTERPRICE>=0.01;
//KTYDZS:=(CLOSE-LLV(L,ENTERBARS))/AVGENTERPRICE>=0.01;
//SELL(DTYDZS,0,THISCLOSE);
//SELLSHORT(KTYDZS,0,THISCLOSE);

//PJ:IF(AVGENTERPRICE=0,OPEN,AVGENTERPRICE)-OPEN,NOAXIS;
//PJ:AVGENTERPRICE,NOAXIS;

{
KD:=;          //开多条件
PD:=;          //平多条件
KK:=;          //开空条件
PK:=;          //平空条件


平空:SELLSHORT(PK,1,THISCLOSE);                  //平空信号
开多:BUY(KD AND HOLDING=0,1,THISCLOSE);          //开多信号
平多:SELL(PD,1,THISCLOSE);                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE);     //开空信号

}
{
信号语句排列规则——先平后开
“费率设置”按钮——用于合理设置模型“费率”,以便在图形上正确输出如下帐户信息:

持仓:HOLDING,LINETHICK0;
资产:ASSET,NOAXIS;
可用现金:CASH(0),LINETHICK0;

您可以在查看菜单->交易系统模板 中设置自己需要的模板
}
回复

使用道具 举报

3

主题

76

帖子

76

积分

等级: 免费版

注册:
2021-7-16
曾用名:
 楼主| 发表于 2025-2-6 10:24 | 显示全部楼层


这是一个使用EasyLanguage编写的交易策略代码片段。该策略涉及多个方面,包括开仓、平仓、加仓等操作,并且包含了一些自定义的指标和条件判断。以下是对这段代码的简要分析:

1. **变量和指标**:
   - `KP` 和 `KD` 可能是自定义的指标或函数,用于判断市场趋势或过滤信号。
   - `B1` 可能是一个布尔变量,用于在特定条件下触发交易操作。

2. **开仓和平仓**:
   - **开盘全平**:在特定的时间点(由 `D2 + D3 = D2 + 1` 决定)平掉所有头寸。
   - **开多**:当满足条件 `X1 AND A6` 时,开一个长仓。
   - **加多**:如果市场处于特定状态(由 `B1 < 0 AND A6` 决定),则增加持仓量。
   - **控平多**:当 `B1 >= 5` 时,平掉一半的头寸。

3. **时间条件**:
   - 使用了 `D2` 和 `D3` 来判断特定的时间点,例如开盘或收盘时触发操作。

4. **其他功能**:
   - 包含了一些注释掉的代码片段,这可能意味着策略在开发过程中进行了多次调整。
   - 使用了 `ORDERQUEUE` 参数来控制订单队列的执行方式。

### 建议和注意事项

1. **回测和验证**:确保该策略在历史数据上进行过充分的回测,并且表现稳定。
2. **风险管理**:检查是否有适当的止损和止盈机制,以控制潜在的亏损。
3. **优化参数**:某些参数(如 `B1 >= 5`)可能需要根据不同的市场条件进行调整。
4. **代码简洁性**:由于代码中包含了大量注释掉的部分,建议清理代码以提高可读性和维护性。

如果您有任何具体问题或需要进一步的解释,请随时提问!
回复

使用道具 举报

3

主题

76

帖子

76

积分

等级: 免费版

注册:
2021-7-16
曾用名:
 楼主| 发表于 2025-2-6 10:36 | 显示全部楼层
<think>
嗯,我看到用户上传了一个EasyLanguage代码片段,看起来像是期货或者股票的自动交易策略。里面有很多注释和不同的部分,比如开仓、平仓、止损、移动止损等等。

首先,我应该理解这段代码的大致结构。开始的时候,有一些变量定义,比如KD、PD、KK、PK,这可能分别代表开多、平多、开空、平空的条件。然后有一些信号语句,按照“先平后开”的顺序排列,这样可以避免同时开仓和平仓导致的问题。

接下来,我注意到代码中有很多注释部分,有些是关于固定止损和移动止损的。比如,止盈条件如果开仓价与平均入场价格的差异超过一定范围,就会平仓。同样,止损也有类似的机制。这说明用户非常重视风险管理。

还有一个部分是在设置交易时段,比如在特定时间开仓或者平仓,这可能是为了避开市场的不活跃时段或者捕捉某些交易机会。此外,有一些关于订单队列和执行方式的设置,使用THISCLOSE表示以当前收盘价执行。

我还看到用户提到了“ORDERQUEUE”,这可能意味着他们希望在多个信号发生时,按照顺序执行,而不是同时执行。这对于避免滑点和保证交易准确性很重要。

有些地方看起来像是模板注释,指导用户如何设置模型的费率,以及如何查看持仓、资产和可用现金等信息。这些都是构建一个完整交易系统的必要部分。

总体来看,这段代码似乎是一个基础的趋势跟踪策略,结合了

补充内容 (2025-2-6 10:39):
总体来看,这段代码似乎是一个基础的趋势跟踪策略,结合了多种风险控制机制,比如止损、止盈和移动止损,以限制潜在的损失。用户可能是在尝试构建一个稳健的自动交易系统,同时也在学习如何优化和调整这些参数。

接下来,我应该考虑如何帮助用户进一步分析或优化这段代码。也许他们需要解释某些函数的用法,或者想了解如何添加更多的条件来改善策略表现。此外,还可以建议他们如何进行回测,以及如何根据回测结果调整策略参数。

另外,我还注意到有些部分是注释掉的,这可能意味着用户正在尝试不同的方法,或者还在开发过程中。因此,在回答时应该考虑这些可能性,并给出适当的建议,比如代码结构、潜在的问题...

model: Ollama (deepseek-r1:70b), time: 10:39
回复

使用道具 举报

3

主题

76

帖子

76

积分

等级: 免费版

注册:
2021-7-16
曾用名:
 楼主| 发表于 2025-2-6 10:50 | 显示全部楼层


您提供的是一个EasyLanguage编程语言的交易策略片段,用于自动化交易系统。这段代码包含了多个部分,包括开仓、平仓、止损和移动止损等功能。以下是对这段代码的分步解释:

1. **变量定义**:
   - `KD`、`PD`、`KK` 和 `PK` 分别代表开多、平多、开空和平空的条件。

2. **信号语句排列规则**:
   - 交易系统中,信号需要按照“先平后开”的顺序执行,以避免同时触发多个信号导致的问题。例如,先执行平仓,再执行开仓。

3. **固定止损和止盈机制**:
   - **止盈**:如果开仓价高于平均入场价格超过一定比例(这里是100*MINDIFF),则全部平仓。
   - **止损**:如果平均入场价格低于开仓价超过一定比例(这里是10*MINDIFF),则全部平仓。

4. **移动止损机制**:
   - 计算持仓以来的最高价和最低价,与当前价格比较,判断价格回落幅度是否达到阈值(这里是1%),如果达到,则平仓。

5. **订单执行设置**:
   - 使用 `ORDERQUEUE` 确保多个信号按顺序执行,而不是同时执行。
   - 使用 `THISCLOSE` 指定以当前收盘价执行交易。

6. **持仓和资产信息显示**:
   - 显示持仓量、资产和可用现金,便于监控交易系统的状态。

7. **其他功能**:
   - 包括开多、平多、开空、平空等基本交易操作。
   - 使用 `BUY` 和 `SELL` 函数分别执行买入和卖出操作,使用 `BUYSHORT` 和 `SELLSHORT` 执行做空和平空操作。

8. **注释部分**:
   - 提供了一些可能的功能模板,如固定止损、移动止损等,可以根据需要选择是否启用。

### 总结
这段代码构建了一个完整的自动交易系统,涵盖了开仓、平仓、风险管理等多个方面。通过合理的信号排列和风险控制措施,能够有效地管理交易风险。如果您有具体的问题或需要进一步优化,可以提供更多细节,我将帮助您分析和改进策略。
回复

使用道具 举报

3

主题

76

帖子

76

积分

等级: 免费版

注册:
2021-7-16
曾用名:
 楼主| 发表于 2025-2-11 16:20 | 显示全部楼层
20250211

DD-LINK KK-LINK.zip

62.01 KB, 下载次数: 985

回复

使用道具 举报

8

主题

34

帖子

34

积分

Rank: 1

等级: 新手上路

注册:
2021-6-29
曾用名:
发表于 2025-2-18 11:06 | 显示全部楼层
看不懂
回复

使用道具 举报

3

主题

76

帖子

76

积分

等级: 免费版

注册:
2021-7-16
曾用名:
 楼主| 发表于 2025-3-25 18:19 | 显示全部楼层
<think>
好的,我现在要分析用户提供的期货交易策略的代码,并回答相关问题。首先,我需要仔细阅读这段代码,理解其逻辑和结构。然后,用户可能需要了解策略的基本原理、潜在风险、优化方向以及可能的改进措施。

首先,这段代码看起来是使用某种期货交易语言编写的,可能类似易语言或其他期货策略语言。代码中包含了多个买入和卖出的条件判断,特别是针对“控加空”和“控平空”的情况。策略主要集中在做空方向,通过多个层次的加仓和平仓条件来管理头寸。

接下来,我需要解析关键部分。例如:

1. **初始开仓条件**:在“开空”部分,条件可能是X1和A6同时满足。X1和A6可能代表某些技术指标或时间条件。比如,X1可能是某个指标信号,A6可能是时间相关的条件,比如在开盘后特定时间。

2. **加仓逻辑**:策略中有多个“控加空X”条目,每个条目根据当前持仓量和盈亏情况决定是否加仓。例如,当持仓小于某个负值(如-HMAX/3),且盈亏(BSELL)超过一定比例(如B1的某个倍数)时,触发加仓。这里需要注意持仓量的计算方式和盈亏的计算是否正确。

3. **平仓逻辑**:“控平空”条件似乎是在盈亏达到一定正数(B1的倍数)时部分平仓。例如,当BSELL(当前盈亏)超过B1的某个倍数时,按比例平仓。但需要确认BSELL的定义是否准确,是否代表盈利还是亏损,以及B1的具体数值。

接下来,我需要考虑潜在的问题:

- **条件判断的准确性**:例如,X1和A6的定义是否明确,是否存在逻辑错误。比如,A6是否是时间条件,是否在合适的时间触发。

- **持仓管理**:策略中的加仓和平仓比例是否合理?例如,每个控加空X的条件是否会导致过度加仓,尤其是当市场不利时,可能导致风险累积。

- **变量定义的正确性**:比如,BSELL是否代表当前的盈亏?如果是亏损,那么条件BSELL > B1*0可能在盈利时触发平仓,这需要确认。

- **逻辑冲突**:是否存在多个条件同时触发的情况?例如,加仓和平仓条件是否在某些情况下相互冲突,导致订单冲突或无法执行。

- **测试与回测**:策略是否经过充分的历史数据回测?是否有考虑滑点、手续费等因素的影响?

可能的改进方向:

- **风险控制**:增加止损机制,防止亏损过大。

- **参数优化**:调整加仓和平仓的比例参数,如H1、H2、H3等,可能通过优化找到更合适的数值。

- **条件过滤**:增加过滤条件,比如趋势判断,避免逆势操作。

- **代码逻辑简化**:检查是否有冗余的条件或可以合并的逻辑,提高代码效率。

用户的问题可能涉及策略的优缺点、如何优化,或者具体代码段的解释。例如,用户可能问:“这段代码的主要策略是什么?”,“有哪些潜在风险需要注意?”,“如何改进这个策略?”等。

现在,我需要将这些分析整理成结构化的回答,涵盖策略概述、潜在问题、改进方向以及可能的优化建议。同时,确保语言通俗易懂,避免过多技术术语,但保持准确性。
</think>

### 对期货交易策略代码的分析与建议

---

#### **1. 策略概述**
该策略以**做空(空头)**为核心,通过分层加仓和动态平仓管理头寸,主要特点如下:

- **初始开仓条件**:  
  在满足 `X1`(可能为技术信号,如价格跌破均线)和 `A6`(可能为时间条件,如开盘后特定时段)时,开空仓。

- **加仓逻辑**:  
  根据当前持仓量和盈利情况分层次加仓:  
  - 当持仓亏损扩大(如 `BSELL`(当前盈亏)低于一定阈值)时,逐步增加空头头寸。  
  - 每个层次的加仓条件涉及持仓量(如 `-HOLDING0 < -HMAX/3`)和亏损程度(如 `BSELL + B1*系数 < -B1*另一系数`)。

- **平仓逻辑**:  
  - **部分平仓**:当盈利达到一定比例(如 `BSELL > B1*倍数`)时,按比例平仓(如 `HOLDING0/H3`)。  
  - **强制清仓**:在特定时间点(如 `A6`条件触发)或极端亏损时可能强制平仓。

---

#### **2. 潜在风险与问题**

##### **A. 变量定义的模糊性**
- **BSELL 的定义**:  
  代码中 `BSELL` 的含义需明确。若其表示当前持仓的盈利,则 `控加空` 条件中的 `BSELL + B1*系数 < ...` 可能存在逻辑错误。例如,若策略意图在亏损时加仓,则需确认 `BSELL` 是否为负值。

- **参数未定义**:  
  `B1`、`H1`、`H2`、`H3` 等参数的具体数值未说明,可能导致策略效果不可预测。

##### **B. 风险失控风险**
- **过度加仓**:  
  若市场持续上涨(空头不利),策略可能因多次加仓导致巨额亏损。例如,`控加空X` 条件可能未设置止损,风险呈指数级放大。

- **平仓条件不足**:  
  策略缺少止损机制,仅依赖盈利平仓,无法在亏损扩大时及时退出。

##### **C. 逻辑冲突与效率问题**
- **条件重叠**:  
  多个加仓条件(如 `控加空0` 到 `控加空X`)可能同时触发,导致重复下单或冲突。

- **时间条件依赖**:  
  `A6` 若为时间敏感条件(如开盘后5分钟),需确保其与服务器时间同步,否则可能错失机会或误触发。

##### **D. 回测与实盘差异**
- **忽略交易成本**:  
  策略未考虑手续费、滑点或保证金占用,可能高估收益。

- **历史局限性**:  
  若未经过充分回测(如极端行情、新闻事件影响),策略可能对当前市场无效。

---

#### **3. 改进方向与优化建议**

##### **A. 明确变量与参数**
- **定义关键变量**:  
  清晰说明 `BSELL`(例如 `当前持仓盈亏 = (开仓价 - 当前价) * 合约乘数`)、`B1`(如 `B1 = 初始止损比例 * 保证金`)等,确保逻辑一致性。

- **参数化配置**:  
  将 `H1`、`H2` 等比例参数外部化,便于回测时调整(如通过 Excel 输入参数组合)。

##### **B. 强化风险控制**
- **止损机制**:  
  添加止损条件,例如:  
  ```  
  如果 (BSELL < -最大允许亏损) 则 平仓  
  ```

- **仓位限制**:  
  设置最大持仓量(如 `HOLDING0 < -HMAX` 时禁止加仓)。

##### **C. 逻辑简化与优化**
- **合并重复条件**:  
  将相似的加仓条件合并为循环结构,例如:  
  ```  
  for (i = 0; i < 层数; i++) {  
      如果 (当前亏损 > 第i层触发条件) 则 加仓  
  }  
  ```

- **动态参数调整**:  
  根据市场波动率调整加仓幅度(如高波动时减少每层比例)。

##### **D. 测试与验证**
- **多时段回测**:  
  测试不同行情(如趋势市、震荡市、极端波动)下的表现,并计算盈亏比、夏普比率。

- **模拟交易**:  
  在模拟盘中验证策略,观察订单执行效率和滑点影响。

##### **E. 代码结构优化**
- **模块化设计**:  
  将条件判断、执行逻辑分开,便于维护。例如:  
  ```  
  函数 计算加仓量(当前持仓, 盈亏) {  
      返回 计算后的加仓比例  
  }  
  ```

- **添加注释与文档**:  
  为关键逻辑添加注释,说明设计意图(如“控加空X:在亏损20%时加仓10%”)。

---

#### **4. 总结**
该策略通过分层加仓和动态平仓试图捕捉空头行情,但需注意以下几点:  
1. **风险控制**:必须加入止损和仓位限制,避免极端亏损。  
2. **参数优化**:通过回测确定 `B1`、`H1` 等参数的合理值。  
3. **逻辑清晰化**:简化条件判断,减少冲突,提升执行效率。  

在完善上述问题后,可进一步结合其他指标(如RSI、MACD)增强策略的市场适应性。  

---

如需更具体的代码实现或参数设定建议,请提供变量定义和策略背景信息。
回复

使用道具 举报

3

主题

76

帖子

76

积分

等级: 免费版

注册:
2021-7-16
曾用名:
 楼主| 发表于 2025-3-25 18:40 | 显示全部楼层
<think>
嗯,我现在需要分析用户提供的交易系统代码,并给出一个详细的分析报告。首先,我需要仔细阅读这段代码,理解每个部分的功能和逻辑。看起来这是一个基于某种交易系统的策略,可能用于期货或股票交易。用户希望我像一个专家一样分析这个代码,指出优缺点、潜在问题,并提出改进建议。同时,用户希望我用中文描述,结构清晰,分点列出。

首先,我应该先通读整个代码,识别主要部分。代码中有很多注释掉的行,可能有些是之前尝试的策略,但当前生效的可能只有未被注释的部分。需要确定哪些语句是实际在用的,哪些被注释掉了。

从代码结构来看,主要的交易信号由开多、加多、控平多、收盘清仓等部分组成。例如,开多的条件是X1 AND A6,加多的条件是B1<0 AND A6,控平多的条件是B1>=5,收盘清仓的条件是(D2-D3)<=1。不过,大部分的语句都被注释掉了,可能实际生效的只有未被注释的部分。

接下来,我需要逐个分析各个部分。首先看看变量定义部分,比如X1、A6、B1、D2、D3等,但代码中没有看到这些变量的定义,可能是在其他地方定义的,或者用户可能没有提供完整的代码。这可能会导致分析的困难,因为变量的定义对策略的理解至关重要。不过,我需要假设这些变量是已定义的,并尝试根据上下文推断它们的含义。

例如,X1可能是某种市场条件,如价格突破某个指标,或者成交量信号。A6可能是其他条件的组合,比如趋势指标。B1可能是一个参数,例如移动止损的距离或盈利水平。D2和D3可能与日期或时间有关,比如收盘时间判断。

接下来,看开多的部分:开多的条件是X1 AND A6,开仓1手,以市价成交。这说明当X1和A6都成立时,系统会开多仓。但需要明确X1和A6的具体含义才能进一步分析。

加多的条件是B1<0 AND A6,同样开仓1手。这里B1可能是一个动态参数,比如当前盈利/亏损值,当B1小于0(即亏损)时继续加仓,这可能带来风险,因为加仓在亏损时可能会加剧损失。

控平多的条件是B1>=5,卖出持仓的一半。这里可能指的是当盈利达到5个单位(比如点数或百分比)时,平掉一半仓位锁定利润。但需要确认B1的具体定义是否合理。

收盘清仓的条件是(D2-D3)<=1,卖出全部持仓。这可能涉及到收盘时间的判断,比如在市场收盘前1分钟清仓,但具体D2和D3的定义不明,可能存在逻辑错误。

此外,代码中有许多注释掉的止损止盈部分,比如固定止损和移动止损的条件,但未被启用。这可能意味着当前策略缺乏止损机制,潜在风险较高。

另外,注意到在控平多和加多的条件中,B1的使用可能存在逻辑问题。例如,加多在B1<0时加仓,而控平多在B1>=5时平仓,这可能形成一种动态调整的策略,但需要确保参数设置合理,否则可能导致过度交易或亏损扩大。

还有一些变量如HHV(H, ENTERBARS)和LLV(L, ENTERBARS),这些是最高价和最低价的函数,可能用于移动止损,但未被启用。如果这些止损机制被注释掉,那么策略可能缺乏保护机制。

另一个需要注意的是,代码中的注释部分提到了持仓、资产和可用现金的显示,但实际交易语句可能只有一部分被启用,需要检查是否有遗漏的关键条件。

现在,我需要总结出策略的主要逻辑:

1. 开多:当X1和A6条件满足时,开仓1手。
2. 加多:在亏损(B1<0)且A6成立时,加仓1手。
3. 控平多:当盈利足够(B1>=5)时,卖出一半仓位。
4. 收盘清仓:在特定时间(D2-D3<=1)平仓。
5. 注释掉的止损止盈可能未被使用,存在风险。

接下来分析优缺点:

优点可能包括:
- 灵活的仓位调整,通过加仓和减仓来管理风险和利润。
- 在盈利时部分平仓锁定利润,可能优化收益。

缺点或潜在问题:
- 缺乏明确的止损机制,可能导致亏损无限扩大。
- 加多条件在亏损时继续加仓,可能加剧风险。
- 变量定义不明确,可能导致策略执行不符合预期。
- 时间条件如收盘清仓的判断可能存在逻辑错误(比如D2和D3的定义不明确)。
- 注释掉的止损部分可能未被激活,存在隐患。

改进建议:
1. 明确定义所有变量,确保参数合理且可调整。
2. 添加止损机制,例如固定止损或跟踪止损。
3. 重新评估加多条件,避免在亏损时过度加仓。
4. 检查时间条件,确保收盘清仓的逻辑正确。
5. 测试策略的历史表现,优化参数。
6. 增加风险管理模块,如最大持仓量或止损点。

另外,需要考虑代码中的语法或逻辑错误。例如,控平多卖出一半仓位,但未指定是总仓位的50%还是当前仓位的一部分,可能需要明确。

此外,注释掉的代码部分可能包含有用的策略组件,应该考虑是否需要启用或调整。

总结来说,该策略的核心是基于条件的开仓、加仓和平仓,但缺乏必要的风险控制,并且变量定义不明确可能影响策略的可靠性。改进方向应集中在风险管理和参数明确化上。
</think>

### 交易系统代码分析报告

---

#### **1. 策略概述**
该交易系统的核心逻辑基于条件触发的开仓、加仓、减仓和平仓操作,主要功能包括:
- **开多仓**:当条件 `X1` 和 `A6` 满足时,开仓1手。
- **加多仓**:当条件 `B1 < 0` 且 `A6` 满足时,追加1手。
- **控平多仓**:当 `B1 >= 5` 时,平掉当前仓位的50%。
- **收盘清仓**:在特定时间(`D2 - D3 <= 1`)平掉全部持仓。

但代码中存在大量注释内容(如止损/止盈逻辑未启用),且部分关键变量(如 `X1`, `A6`, `B1`, `D2`, `D3`)未定义,需假设其含义或可能存在逻辑漏洞。

---

#### **2. 优缺点分析**

##### **优点**
1. **仓位动态调整**:
   - **控平多仓**:在盈利时部分平仓锁定利润,可能优化收益。
   - **加多仓机制**:在特定条件下(如亏损时)追加仓位,试图通过加仓摊低成本。

2. **收盘清仓**:
   - 若 `D2` 和 `D3` 定义合理(如收盘时间),可在收盘前自动平仓,避免隔夜风险。

3. **灵活性**:
   - 策略可通过调整变量定义(如 `X1`, `A6`)适配不同市场环境。

---

##### **缺点与潜在问题**
1. **缺乏止损机制**:
   - **未启用固定止损**:注释中的止损逻辑(如 `Fixed Stop-Loss`)未被激活,可能导致亏损无限扩大。
   - **加仓风险**:在亏损时(`B1 < 0`)追加仓位,可能加剧资金风险。

2. **变量定义不明确**:
   - 关键条件(如 `X1`, `A6`, `B1`)未定义,可能导致逻辑混乱或执行结果不可预测。
   - `D2 - D3 <= 1` 的时间条件未明确,可能因变量定义错误导致平仓时机不当(如提前或延迟)。

3. **加仓逻辑矛盾**:
   - **追加仓位的合理性**:若 `B1 < 0` 是亏损指标,此时加仓可能违反风险管理原则(如“不要逆势加仓”)。

4. **控平多仓的执行风险**:
   - 若 `B1` 代表盈利点数,`B1 >= 5` 时平仓50%,可能因参数设置不当(如数值过小)导致过早锁定利润。

5. **代码逻辑缺陷**:
   - 部分条件可能存在语法或逻辑错误(如未指定平仓方向或手数单位)。
   - 注释内容可能包含更成熟的风险控制策略,但未被启用。

---

#### **3. 改进建议**

##### **1. 明确定义变量与参数**
- **变量定义**:明确 `X1`, `A6`, `B1`, `D2`, `D3` 的具体含义(如 `X1` 可能是价格突破某均线,`A6` 是趋势指标,`B1` 是当前盈利点数)。
- **参数优化**:通过历史回测,调整 `B1` 的阈值(如 `>= 10`),避免过早平仓。

##### **2. 强化风险管理**
- **止损机制**:
  - **固定止损**:设定最大允许亏损(如 `Max_Loss = -5%`)。
  - **跟踪止损**:在盈利后设置动态止损(如 `Stop_Loss = Entry_Price - 2%`)。
- **头寸管理**:
  - 限制单次开仓手数(如不超过总资金的1%)。
  - 禁止在亏损时加仓(移除 `B1 < 0` 的加仓条件)。

##### **3. 优化时间条件**
- **收盘清仓**:
  - 明确 `D2` 和 `D3` 的定义(如 `D2 = Current_Time`, `D3 = Close_Time`),确保逻辑为 `当前时间 < 收盘时间` 时平仓。

##### **4. 启用注释中的有效逻辑**
- **止盈触发**:
  - 激活注释中的止盈条件(如 `Profit >= 10%` 时平仓),平衡盈利保护与机会风险。

##### **5. 测试与回测**
- **历史回测**:
  - 验证策略在不同市场周期(如趋势、震荡)中的表现。
  - 检查参数敏感性(如 `B1` 阈值对盈亏的影响)。
- **压力测试**:
  - 模拟极端行情(如黑天鹅事件),评估止损机制的有效性。

##### **6. 代码逻辑修正**
- **明确平仓方向与手数**:
  ```python
  # 控平多仓时明确操作方向
  if B1 >= 5:
      close_percent = 0.5  # 平仓50%
      current_pos = position.size
      close_size = current_pos * close_percent
      sell(close_size)
  ```

---

#### **4. 总结**
该策略在动态仓位管理和收盘清仓逻辑上具备一定潜力,但需解决以下核心问题:
- **变量定义模糊**可能导致策略失效;
- **缺乏止损**和**逆势加仓**可能引发重大风险;
- **参数未优化**可能降低收益。

通过明确变量、强化风控、启用注释中的有效逻辑并进行充分回测,可显著提升策略的可靠性和盈利能力。
回复

使用道具 举报

3

主题

76

帖子

76

积分

等级: 免费版

注册:
2021-7-16
曾用名:
 楼主| 发表于 2025-3-25 18:54 | 显示全部楼层

交流想法而已,不要当真就好了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 23:07 , Processed in 0.138647 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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