Params
Numeric NT(55); //跨周期参数
Numeric TT(5); //ATR倍数
Numeric XX(2); //偏移周期
Numeric TRS(50); //移动幅度
Numeric Lots(1);
Vars
Series<Numeric> atr2;
Series<Numeric> dev;
Series<Numeric> highPrice;
Series<Numeric> lowPrice;
Series<Numeric> highma;
Series<Numeric> lowma;
Series<Numeric> nextTrend;
Series<Numeric> maxLowPrice;
Series<Numeric> trend;
Series<Numeric> minHighPrice;
Series<Numeric> up;
Series<Numeric> down;
Series<Numeric> arrowUp;
Series<Numeric> arrowDown;
Series<Numeric> atrLow;
Series<Numeric> atrHigh;
Series<Numeric> ht;
Series<Bool> buySignal;
Series<Bool> sellSignal;
Series<Numeric> fsDonchianHi; // 唐奇安通道上轨,延后1个Bar,长周期
Series<Numeric> fsDonchianLo; // 唐奇安通道下轨,延后1个Bar,长周期
Series<Bool> Dcond_outTrs;
Series<Bool> Kcond_outTrs;
Series<Bool> SendOrderThisBar(False);
Series<Numeric> out_range;
Series<Numeric> liQKA;
Series<Numeric> DliqPoint;
Series<Numeric> KliqPoint;
Series<Numeric> HighAfterEntry;
Series<Numeric> LowAfterEntry;
Series<Numeric> barcoutN;
Series<Numeric> Sk1;
Series<Bool> con_buy;
Series<Bool> con_sell;
Series<Numeric> MACDValue5;
Numeric AvgMACD5;
Series<Numeric> MACDDiff5;
Series<Numeric> ntMA;
Events
onBar(ArrayRef<Integer> indexs)
{
//跨周期MACD
MACDValue5 = MinsXAverage(NT, Close, 12 ) - MinsXAverage(NT, Close, 26 );
AvgMACD5 = MinsXAverage(NT,MACDValue5,9);
MACDDiff5 = MACDValue5 - AvgMACD5;
//PlotNumeric(\"MACDDiff5\",MACDDiff5);
ntMA = MinsXAverage(NT,C,180);
PlotNumeric(\"ntMA\",ntMA);
If(BarStatus == 0)
{
out_range=TRS;
}
//记录开仓后高低点
If(BarsSinceentry == 0)
{
HighAfterEntry = High;
LowAfterEntry = Low;
}else
{
HighAfterEntry = Min(HighAfterEntry,High); // 空头止损,更新最低的最高价
LowAfterEntry = Max(LowAfterEntry,Low); // 多头止损,更新最高的最低价
}
fsDonchianHi = HighestFC(C[1],20);
fsDonchianLo = LowestFC(C[1],20);
atr2 = AvgTrueRange(100)/2;
dev = TT*atr2;
highPrice = high[XX];
lowPrice = low[XX];
highma = sma(high, XX);
lowma = sma(low, XX);
if (nextTrend == 1)
{
maxLowPrice=max(lowPrice,maxLowPrice);
if (highma < maxLowPrice and close < low[1])
{
trend= 1;
nextTrend = 0;
minHighPrice = highPrice;
}
}
else
{
minHighPrice=min(highPrice, minHighPrice);
if (lowma > minHighPrice and close > high[1])
{
trend = 0;
nextTrend = 1;
maxLowPrice = lowPrice;
}
}
if (trend == 0)
{
if (trend[1] != 0)
{
up= down[1];
arrowUp= up - atr2;
}
else
{
up = max(maxLowPrice, up[1]);
}
atrHigh= up + dev;
atrLow= up - dev;
}
else
{
if (trend[1] != 1)
{
down= up[1];
arrowDown= down + atr2;
}
else
{
down= min(minHighPrice, down[1]);
}
atrHigh= down + dev;
atrLow= down - dev;
}
ht = IIF(trend == 0 ,up ,down);
buySignal = arrowUp>0 and (trend == 0 and trend[1] == 1);
sellSignal = arrowDown>0 and (trend == 1 and trend[1] == 0);
//PlotNumeric(\"atrHigh\",atrHigh);
//PlotNumeric(\"atrLow\",atrLow);
if (trend[1]==0 )
{
If(MarketPosition==0 and H>=atrHigh[1] and MACDDiff5[1]>0 and C[1]>ntMA[1] )
{
Buy(Lots,Max(open,atrHigh[1]));
SendOrderThisBar=True;
out_range=TRS;
LowAfterEntry = EntryPrice;//保存多头开仓价格;
}
PlotNumeric(\"ht\",ht,ht,Red);
}Else If(trend[1]==1 )
{
If(MarketPosition==0 and L<=atrLow[1] and MACDDiff5[1]<0 and C[1]<ntMA[1])
{
SellShort(Lots,Min(open,atrLow[1]));
SendOrderThisBar=True;
out_range=TRS;
HighAfterEntry = EntryPrice;//保存空头开仓价格;
}
PlotNumeric(\"ht\",ht,ht,Green);
}
// 长周期突破调节出场参数,变化幅度收敛,保住更多利润
If(MarketPosition <> 0)
{
Dcond_outTrs=CrossOver(C[1],fsDonchianHi[1]);
Commentary(\"fsDonchianHi=\"+Text(fsDonchianHi));
If(Dcond_outTrs and SendOrderThisBar==True)
{
out_range=TRS*0.8;
SendOrderThisBar=False;
}
Kcond_outTrs=CrossUnder(C[1],fsDonchianLo[1]);
Commentary(\"fsDonchianLo=\"+Text(fsDonchianLo));
If(Kcond_outTrs and SendOrderThisBar==True)
{
out_range=TRS*0.8;
SendOrderThisBar=False;
}
}
Commentary(\"CurrentEntries = \" + Text(CurrentEntries));
Commentary(\"TRS\"+Text(TRS));
Commentary(\"out_range\"+Text(out_range));
//移动出场
If(MarketPosition == 0) // 自适应参数默认值;
{
liQKA = 1;
barcoutN=0;
}Else if(BarsSinceEntry>barcoutN) //当有持仓的情况下,liQKA会随着持仓时间的增加而逐渐减小,即止损止盈幅度乘数的减少。
{
liQKA = liQKA - 0.1;
liQKA = Max(liQKA,0.3);
barcoutN=BarsSinceEntry;
}
if(MarketPosition>0)
{
DliqPoint = LowAfterEntry - (Open*out_range/1000)*liQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感;
}
if(MarketPosition<0)
{
KliqPoint = HighAfterEntry + (Open*out_range/1000)*liQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感;
}
// 画线
Commentary(\"(Open*out_range/1000)*liQKA\"+text((Open*out_range/1000)*liQKA));
Commentary(\"(Open*TRS/1000)*liQKA\"+text((Open*TRS/1000)*liQKA));
//If(DliqPoint[1]>0)PlotNumeric(\"DliqPoint[1]\",DliqPoint[1]);
//If(KliqPoint[1]>0)PlotNumeric(\"KliqPoint[1]\",KliqPoint[1]);
// 持有多单时
If(MarketPosition >0 And BarsSinceEntry >0 And Low <= DliqPoint[1] and DliqPoint[1]>0 and DliqPoint>0 and BarsSinceEntry>0)
{
Sell(0,Min(Open,DliqPoint[1]));
barcoutN=0;
DliqPoint=0;
}
// 持有空单时
If(MarketPosition <0 And BarsSinceEntry >0 And High >= KliqPoint[1] and KliqPoint[1]>0 and KliqPoint>0 and BarsSinceEntry>0)
{
BuyToCover(0,Max(Open,KliqPoint[1]));
KliqPoint=0;
barcoutN=0;
}
}
没编译成功
报什么错
无法运行
无法运行是什么意思听不懂啊,要么没编译成功,要么编译成功但是代码逻辑不对
就是有问题,不知是语法,还是其他,编译不了