- 精华
- 0
- 在线时间
- 1023 小时
- UID
- 38411
- 积分
- 669
- 帖子
- 160
- 阅读权限
- 60
- 注册时间
- 2011-5-8
- 最后登录
- 2023-10-4
- 精华
- 0
- UID
- 38411
- 积分
- 669
- 帖子
- 160
- 主题
- 17
- 阅读权限
- 60
- 注册时间
- 2011-5-8
- 最后登录
- 2023-10-4
|
1.当K先向上突破80,再次向下突破80,卖平开
2.当卖平开,仓后画一条止损线:5日最高价,以此价固定不变直到下一个条件信号出现
3.当收盘价突破止损线,反手平仓开多,在此之后出现的(K先突破80,再次向下突破80)都视为无效,而是用收盘价跌破10日均线作为条件平多仓。
1.当K先向下跌破20,再次向上突破20,买平开
2.当买平开,仓后画一条止损线:5日最低价,以此价固定不变直到下一个条件信号出现
3.当收盘价跌破止损线,反手平仓开空,在此之后出现的(K先向下跌破20,再次向上突破20),都视为无效,而是用收盘价突破10日均线作为条件平空仓。
我编的怎么没信号?
Params
Numeric N(11);
Numeric P1(3);
Numeric P2(3);
numeric lots(1);
Vars
Numeric Trend(0);//开仓标记,-1空单,1多单
Numeric mySAR0(0); //反手持仓标记,0无反手持仓。1为反手持仓
Numeric valueH(0); //传递止损点的中间变量
Numeric valueL(0);
NumericSeries myRSV;
NumericSeries kx;
NumericSeries DX;
BoolSeries myB;
BoolSeries myS;
BOOL B_stop;
BOOL S_stop;
Numeric mystopH;
Numeric mystopL;
NumericSeries myH;
NumericSeries myL;
Bool stopB;
Bool stopS;
BoolSeries CON1;
BoolSeries CON2;
BoolSeries CON3;
BoolSeries CON4;
Begin
// 过滤集合竞价
If((BarType==1 or BarType==2) && BarStatus == 2 && date!=date[1] && high==low) return;
If(BarType==0 && BarStatus == 2 && CurrentTime<=0.09 && high==low) return;
If ( Date!=Date[1] && CurrentBar>=2) ;
{
myRSV=SummationFC(CLOSE-LowestFC(LOW,N))/SummationFC(HighestFC(HIGH,N)-LowestFC(LOW,N))*100;
Kx= AverageFC(myRSV,P1);
DX= AverageFC(Kx,P2);
myH=Highest(H,5);
myL=Lowest(L,5);
//原始开仓信号
myB=CrossUnder(myRSV,20);
myS=CrossOver(myRSV,80);
}
IF(MarketPosition!=-1&&myS && mysar0==0)
{
Trend= -1; //空标志
SetGlobalVar(3,TREND);
}else
IF(MarketPosition!=1&&myB &&mysar0==0)
{
Trend= 1; //多标志
SetGlobalVar(4,TREND);
}
if( Time > 0.0910 && Time<0.1450)
CON1=CrossUnder(myRSV,80)&& TREND==GetGlobalVar(3) && mysar0==0 ;
if (CON1[1]) // 原始空平开信号,SAR0标记为0
{
SellShort(LOTS,OPEN-MinMove*PriceScale);
valueH:=myH;
SetGlobalVar(1, valueH);
mySAR0=0;
Commentary("条件1开空");
}ELSE
CON2=CrossOver(myRSV,20) && TREND==GetGlobalVar(4) && mysar0==0;
if (CON2[2])// 原始买平开信号,SAR0标记为0
{
BUY(LOTS,OPEN+MinMove*PriceScale);
valueL=myL;
SetGlobalVar(2, valueL);
mysar0=0;
Commentary("条件1开多");
}
valueH:=GetGlobalVar(1); //止损点取5日高点
valueL:=GetGlobalVar(2); //止损点取5日低点
mystopH:=valueH; // 设定空单止损点
mystopL:=valueL; // 设定多单止损点
//止损反手信号
B_stop:=CrossOver(C[1],mystopH); //空头止损并反手
S_stop:=CrossOver(mystopL,C[1]); //多头止损并反手
stopB:=CrossOver(C[1],Average(C[1],10));//反手的空单平仓
stopS:=CrossOver(Average(C[1],10),C[1]);//反手的多单平仓
//进入策略逻辑的条件转换
CON3=( MarketPosition==1 &&S_stop && mySAR0==0 ) ;
if (CON3 ) // (多单标记 且 无反手持仓),多头止损并反手,SAR0标记为1
{
SellShort(LOTS,OPEN-MinMove*PriceScale);
mySAR0=1;
}ELSE
if (MarketPosition==-1 and stopB ) //反手空单平仓,SAR0归0
{
BuyToCover(LOTS,OPEN+MinMove*PriceScale);
mysar0=0;
}ELSE
CON4=MarketPosition==-1 and B_stop && mySAR0==0 ;
if (CON4 ) // (空单标记 且 无反手持仓),空头止损并反手,SAR0标记为1
{
BUY(LOTS,OPEN+MinMove*PriceScale);
mySAR0=1;
} ELSE
if (MarketPosition==1 and mysar0==1 && stopS ) //反手仓多单平仓,SAR0归0
{
SELL(LOTS,OPEN-MinMove*PriceScale);
mySAR0=0;
}Else
If((Date[-1]!=InvalidInteger && Date!=Date[-1])||(Date[-1]==InvalidInteger && Date < CurrentDate))
{
Sell(0,Close);
BuyToCover(0,Close);
}Else
If(Date==CurrentDate && Time==0.1455 && CurrentTime>=0.1459)
{
Sell(0,Close);
BuyToCover(0,Close);
}
end
\ |
|