为什么下面的代码在图表上有错误划线?
OnBar(ArrayRef<Integer> indexs)
{
minpiont =MinMove*pricescale;
ma = Average((high+low+close+close[1])/4,malength);
PlotNumeric(ma,ma);
If(CurrentBar == 0)
{
my_upper = high;
my_dnper = low;
tem = 0;
}Else
{
If(tem<= 0)
{
If(high > my_high)
{
my_high = high;
}
If(Low<=my_high*(1-mylength/100))
{
my_upper = my_high;
my_high = 0;
tem = 1;
PlotNumeric(高低点,my_upper);
}
}
If(tem>=0)
{
If(low<my_low)
{
my_low = low;
}
If(high>=my_low*(1+mylength/100))
{
my_dnper = my_low;
my_low = 999999;
tem = -1;
PlotNumeric(高低点,my_dnper);
}
}
}
Commentary(my_upper:+text(my_upper));
Commentary(my_dnper:+text(my_dnper));
//PlotNumeric(my_upper,my_upper);
//PlotNumeric(my_dnper,my_dnper);
Params
//此处添加参数
Numeric huisuzhi(20);
Numeric malength(120);
numeric mylength(2);
Vars
//此处添加变量
Numeric minpiont;
Numeric tem;
series<Numeric> ma;
series<Numeric> my_high(0);
series<Numeric> my_low(999999);
series<Numeric> my_upper;
series<Numeric> my_dnper;
Defs
//此处添加公式函数
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
//与数据源有关
Range[0:DataCount-1]
{
//=========数据源相关设置==============
AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
//AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
//AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
//AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算
//AddDataFlag(Enum_Data_OnlyDay()); //设置仅日盘
//AddDataFlag(Enum_Data_OnlyNight()); //设置仅夜盘
//AddDataFlag(Enum_Data_NotGenReport()); //设置数据源不参与生成报告标志
//=========交易相关设置==============
SetMarginRate(0.12); //设置保证金率为10%
SetCommissionRate(Enum_Rate_ByFillAmount,1.5); //设置手续费率为成交金额的1.5%%
SetSlippage(Enum_Rate_PointPerHand,1); //设置滑点为2跳/手
SetOrderPriceOffset(1); //设置委托价为叫买/卖价偏移2跳
SetOrderMap2MainSymbol(); //设置委托映射到主力
//SetOrderMap2AppointedSymbol(symbols, multiples); //设置委托映射到指定合约,symbols是映射合约数组,multiples是映射倍数数组
}
//与数据源无关
//SetBeginBarMaxCount(10); //设置最大起始bar数为10
//SetBackBarMaxCount(10); //设置最大回溯bar数为10
//=========交易相关设置==============
SetInitCapital(100000); //设置初始资金为10万
//AddTradeFlag(Enum_Trade_Ignore_Buy()); //设置忽略多开
//AddTradeFlag(Enum_Trade_Ignore_Sell()); //设置忽略多平
//AddTradeFlag(Enum_Trade_Ignore_SellShort()); //设置忽略空开
//AddTradeFlag(Enum_Trade_Ignore_Buy2Cover()); //设置忽略空平
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
minpiont =MinMove*pricescale;
ma = Average((high+low+close+close[1])/4,malength);
PlotNumeric(\"ma\",ma);
If(CurrentBar == 0)
{
my_upper = high;
my_dnper = low;
tem = 0;
}Else
{
If(tem<= 0)
{
If(high > my_high)
{
my_high = high;
}
If(Low<=my_high*(1-mylength/100))
{
my_upper = my_high;
my_high = 0;
tem = 1;
PlotNumeric(\"高低点\",my_upper);
}
}
If(tem>=0)
{
If(low<my_low)
{
my_low = low;
}
If(high>=my_low*(1+mylength/100))
{
my_dnper = my_low;
my_low = 999999;
tem = -1;
PlotNumeric(\"高低点\",my_dnper);
}
}
}
Commentary(\"my_upper:\"+text(my_upper));
Commentary(\"my_dnper:\"+text(my_dnper));
//PlotNumeric(\"my_upper\",my_upper);
//PlotNumeric(\"my_dnper\",my_dnper);
If(high>my_upper and MarketPosition <> 1 and my_upper > ma[1])
{
buy(1,max(open,my_upper+minpiont));
}
If(low<my_dnper and MarketPosition <> -1 and my_dnper < ma[1])
{
SellShort(1,min(open,my_dnper-minpiont));
}
If(MarketPosition == 1 and low<my_dnper and BarsSinceEntry>0)
{
sell(0,min(open,my_dnper-minpiont));
}
If(MarketPosition == -1 and high >my_upper and BarsSinceEntry>0)
{
BuyToCover(0,Max(open,my_upper+minpiont));
}
}
tem改成序列变量
代码不完整