//------------------------------------------------------------------------
// 简称: JailBreakSys_L
// 名称: 基于价格区间突破的交易系统
// 类别: 公式应用
// 类型: 内建应用
// 输出:
// 策略说明: 基于通道突破的判断
// 系统要素:
// 1. 计算50根k线最高价的区间
// 2. 计算30根k线最低价的区间
//
// 入场条件:
// 1.价格高于50根K线最高价的区间入场
// 出场条件:
// 1. 当前价格低于30根K线最低价的区间出场
// 2. 当前价格低于入场价一定ATR波动率幅度出场
//
//----------------------------------------------------------------------//
Params
Numeric Length1(50); //长周期区间参数
Numeric Length2(30); //短周期区间参数
Numeric IPS(4); //保护止损波动率参数
Numeric AtrVal(10); //波动率参数
Numeric initcapital(50); //单位:万 国债期货可以改成50
Numeric Acceleration(0.05); //抛物线的加速系数
Numeric FirstBarMultp(5); //用于计算在进场Bar设置止损价的系数
Vars
Series<Numeric> myprice; //临界价格
Series<Numeric> myprice_temp; //临时的临界价格
Series<Numeric> myprice_new; //记录因为止损而产生的新的临界价格
Series<Numeric> nn; //向前计算的日期
Series<Numeric> temp; //临时数据
Series<Numeric> temp2; //临时数据
Series<Numeric> temp3; //临时数据
Series<Numeric> temp4; //临时数据
Series<Numeric> temp5; //临时数据
Series<Numeric> temp666; //记录每日开仓次数
Series<Numeric> temp777; //记录每日开仓次数
Series<Numeric> temp666777; //过度的
Series<Numeric> i; //循环参数
Numeric lots(1); //下单手数
Series<Numeric> StopPrice_up; //跟踪止损价
Series<Numeric> HighValue_up; //多头进场之后的盈利峰值价
Series<Numeric> AF_up; //跟踪Acceleration
Numeric StopATR_up;
Series<Numeric> StopPrice_down; //跟踪止损价
Series<Numeric> lowValue; //多头进场之后的盈利峰值价
Series<Numeric> AF_down; //跟踪Acceleration
Numeric StopATR_down;
//Numeric myprice;
//Numeric temp;
//Array<Array<Numeric>> myprice;
Series<Numeric> ProtectStopL;
Series<Numeric> ATR;
Series<Numeric> Upperband;
Series<Numeric> Lowerband;
Series<Numeric> Exitlong;
Series<Numeric> Exitshort;
Numeric L2;
Numeric L1;
Numeric Minpoint;
Events
OnInit()
{
SetBeginBarMaxCount(100);
SetInitCapital(initcapital*10000); //设定初始资金
SetMarginRate(0.1); //设定保证金比例
SetBeginBarMaxCount(1);
}
OnBar(ArrayRef<Integer> indexs)
{
Range[0:0] //用15分钟数据计算
{
//确定临界价格
if (hour*60+minute>=9*60+45 and hour*60+minute<=24*60+0)
{
if (hour*60+minute==9*60+45)
{
myprice=open;
//temp666=0;
}
//myprice= closeD(temp);
//Print("临界价格:"+Text(myprice)+"日期:"+Text(Date)+"成交价:"+Text(myprice_temp)+"成交价:"+Text(temp5)+"成交价:"+Text(temp2));
//Print("临界价格:"+Text(myprice)+"天数:"+Text(temp)+"日期:"+Text(temp-temp[1])+"日期:"+Text(Open)+"日期:"+Text(Date));
//根据资金量确定开平仓量
Lots=IntPart(Portfolio_CurrentCapital*1/(myprice*contractunit*BigPointValue)); //计算开仓手数,根据当前资金量计算,乘数代表杠杆倍数
//Lots=0;
//统计触碰次数
if (high>=max(myprice,myprice_new) And low<=max(myprice,myprice_new))
{
temp5=temp5+1;
}
}
//if (Mod(Minute, 15)==0)
//{
//temp666=0;
//}
temp666=0;
}
//Print("交易次数:"+Text(Minute));
Range[1:1] //用1分钟数据计算
{
if (hour*60+minute>=9*60+45 and hour*60+minute<=24*60+0)
{
if (Mod(Minute, 15)==0)
{
temp777=data0.temp666;
}
//系统入场
If(Marketposition <>1 And Close[1] >= data0.myprice And Vol > 0 And data0.myprice<>InvalidNumeric And temp777==0) //价格大于临界价格入场做多
{
temp4=temp4+1; //记录交易次数
Buy(lots, Open); //回测的时候用,假设冲击冲本为1% 国债期货可以改成0.1%
temp777=1;
//print("11111");
}
//记录盈利峰值价和跟踪止损价
StopATR_up = Average(TrueRange,3);
If(MarketPosition==1 And BarsSinceEntry==0)
{
StopPrice_up=low-StopATR_up*FirstBarMultp;
AF_up=Acceleration;
HighValue_up=High;
}Else If(MarketPosition==1 And BarsSinceEntry>0)
{
If(High>HighValue_up) HighValue_up=High;
If(HighValue_up>HighValue_up[1] And AF_up<0.2)
{
AF_up=AF_up+Min(Acceleration,0.2-AF_up);
}
StopPrice_up=StopPrice_up+AF_up*(HighValue_up-StopPrice_up);
}
//向下突破跟踪止损价多头出场
If(MarketPosition==1 And BarsSinceEntry>0 And Low[1]<=StopPrice_up[1] And Vol > 0 And temp777==0)
{
Sell(0,Open);
//SellShort(0,Open);
myprice_new=StopPrice_up[1];
temp4=temp4+1;
temp777=1;
}
}
//在图标上画出跟踪止损价
//PlotNumeric("myprice",myprice);
PlotAuto("StopPrice_up", StopPrice_up,StopPrice_up,blue,Enum_Line,Enum_Solid,Enum_4Pix);
PlotAuto("myprice", data0.myprice,data0.myprice,Green,Enum_Line,Enum_Solid,Enum_4Pix);
//在图标上画出跟踪止损价
//PlotNumeric("myprice_new",myprice_new);
//PlotAuto("StopPrice_down",StopPrice_down,StopPrice_down,White,Enum_Line,Enum_Solid,Enum_4Pix);
//PlotAuto("myprice_new", myprice_new,myprice_new,Red,Enum_Line,Enum_Solid,Enum_4Pix);
//PlotAuto("low",low,low,Blue,Enum_Line,Enum_Solid,Enum_4Pix);
//PlotAuto("BarsSinceEntry", BarsSinceEntry,BarsSinceEntry,blue,Enum_Line,Enum_Solid,Enum_4Pix);
Print("temp777:"+Text(temp777)+"日期:"+Text(date)+"时:"+Text(hour)+"分:"+Text(minute)+"Mod(Minute, 15):"+Text(Mod(Minute, 15))+"temp666:"+Text(temp666));
}
}
//------------------------------------------------------------------------
// 编译版本 GS2014.10.25
// 版权所有 TradeBlazer Software 2003-2025
// 更改声明 TradeBlazer Software保留对TradeBlazer平
// 台每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
temp777的赋值没有按照条件被赋值为0,请问是怎么回事
打开你的程序,我看到的是temp777既有0也有1,你的情况再详细说明看看吧
这种问题就是一个调试的过程
你这个说法过于模糊,我代码看了有0也有1
说的再具体点吧