- 精华
- 0
- 在线时间
- 10 小时
- UID
- 197558
- 积分
- 19
- 帖子
- 5
- 阅读权限
- 10
- 注册时间
- 2014-11-23
- 最后登录
- 2020-7-4
- 精华
- 0
- UID
- 197558
- 积分
- 19
- 帖子
- 5
- 主题
- 4
- 阅读权限
- 10
- 注册时间
- 2014-11-23
- 最后登录
- 2020-7-4
|
Vars
Numeric a;// 循环用参数
Numeric aa(0);// 循环用参数
Numeric b(0);// 计数用参数
Numeric bb(0);// 计数用参数
Numeric ba(0);// 计数用参数
Numeric bd(0);// 计数用参数
NumericSeries Ma60;//60日均线
NumericSeries Ma90;//90日均线
NumericSeries Ma1600;//1600日均线
NumericSeries Ma4800;//1600日均线
NumericSeries Ma7200;//1600日均线
Numeric buymoney(0);//买花的总钱数
Numeric sellmoney(0);//卖花的总钱数
Numeric lirun;//卖花的总钱数
Numeric PositionProfit; //获得当前持仓位置的浮动盈亏
Numeric MinPoint; // 一个最小变动单位, 也就是一跳
Numeric DT(0); // 定义多头状态
Numeric GD(0); // 定义过渡状态
Numeric DTYL(0); // 定义过渡状态
Numeric HC20(0); // 定义回踩20线
Numeric HC90(0); // 定义回踩90线
Numeric CurrentEntries; // 定义当前开仓次数
Numeric MarketPosition; // 定义持仓状态
Numeric CurrentContracts;//定义当前持仓量 多头2 返回2 空头3返回-3
Numeric MINN(0);//比小用的中间变量
Numeric MAXX(0);//比大用的中间变量
Begin
Ma60 = AverageFC(Close,60);//(60)天移动平均
Ma90 = AverageFC(Close,90);//(90)天移动平均
Ma1600 = AverageFC(Close,1600);//(60)天移动平均
Ma4800 = AverageFC(Close,4800);//(90)天移动平均
Ma7200 = AverageFC(Close,7200);//(60)天移动平均
PlotNumeric("MA1",Ma60);
PlotNumeric("MA2",Ma90);
PlotNumeric("MA3",Ma1600);
PlotNumeric("MA4",Ma4800);
PlotNumeric("MA5",Ma7200);
MAXX=Max(Ma4800,Ma7200);
MINN=MIN(Ma4800,Ma7200);
for a=1 to 40
{
If( Low[a]>Max(Ma1600,MAXX)) b=b+1; // 当开盘价、收盘价均高于short天均线 且 当开盘价、收盘价均高于long天均线
If(b==40) DT=1;
}
for a=6 to 12
{
If(High[a]>Min(Ma60,ma90)) aa=1; // 当开盘价、收盘价均高于short天均线 且 当开盘价、收盘价均高于long天均线
}
for a=1 to 5
{If(High[a]<Min(Ma60,ma90)) bb=bb+1; // 当开盘价、收盘价均高于short天均线 且 当开盘价、收盘价均高于long天均线
}
If(aa==1&&bb==5&&PositionProfit>0) DTYL=1;//定义 在多头趋势穿越盈利
If(C<ma1600&& C>max(ma4800,ma7200)) HC20=1;//定义 在多头趋势中回踩2H 20线
If( C<min(ma1600,MINN) ) HC90=1;//定义回踩2H 20 60 90最小的那根线
for a=1 to 120
{
If(HIGH[a]<Max(Ma1600,MAXX) ) ba=ba+1; // 当开盘价、收盘价均高于short天均线 且 当开盘价、收盘价均高于long天均线
}
for a=1 to 120
{
If(LOW[a]>MIN(Ma1600,MINN) ) bd=bd+1; // 当开盘价、收盘价均高于short天均线 且 当开盘价、收盘价均高于long天均线
}
If(ba==120&&bd==120) SetGlobalVar(0,2); //设置第一个全局变量为1
GD=GetGlobalVar(0);
If( DT==1 && CurrentEntries<=0 && PositionProfit==0) Buy(1,open);//当处于多头趋势,并且盈利次数小于等于0并且持仓为0 开仓,只开一次
If( HC20==1 && CurrentEntries<=1 && PositionProfit==0) Buy(1,open);//当处于多头趋势,并且盈利次数小于等于1并且持仓为0 开仓。当第一次回踩2h 20线做多 盈利后平仓 次数盈利次数变为2 交易停止 以后即使再跌穿20线 也不开仓了
If( HC90==1 && CurrentEntries<=1 && MarketPosition==1) Buy(1,open);//当处于多头趋势,并且盈利次数小于1并且持仓为1开仓 持有多仓的意思是之前回踩20线 没能涨起来赚钱出来 或者2h 刚转势 没转好 又跌下来了 做这个回踩60就是为了摊薄成本 及时平仓出来
If( DTYL==1 && PositionProfit>0) sell(CurrentContracts,0);//在3分钟k下穿60 90线的情况下,盈利即走,有几手多平几手
//If( GD==2 && PositionProfit>0) sell(CurrentContracts,0);//只要过渡状态出现过,这里出现过就算,不赔钱就出来。
If( CurrentContracts==2&&PositionProfit>0) sell(CurrentContracts,0);//触发了90线的摊薄平仓机制,不赔钱就出来。有了上面那句 这一句可能永远也不会触发了。
commentary("DT="+text(DT));
commentary("GD="+text(GD));
commentary("HC20="+text(HC20));
commentary("HC90="+text(HC90));
commentary("DTYL="+text(DTYL));
commentary("ba="+text(ba));
commentary("bd="+text(bd));
commentary("持仓手数="+text(CurrentContracts));
commentary("浮动盈亏="+text(PositionProfit));
End
|
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
|