求大神,止损不会执行 [开拓者 TB]
-
咨询内容:
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Numeric StopLossSetA(300); // 止损设置多头
Numeric StopLossSetB(300); // 止损设置空头
Vars
NumericSeries M;
Numeric AvgMACD;
NumericSeries N;
Numeric MACDDiff;
Numeric G1;
Numeric G2;
Numeric E;
Numeric F;
Numeric P1;
Numeric P2;
NumericSeries EA;
NumericSeries EF;
NumericSeries EP1;
NumericSeries EP2;
Numeric MinPoint;// 一个最小变动单位,也就是一跳
Numeric MyEntryPrice; // 开仓价格,本例是开仓均价,也可根据需要设置为某次入场的价格
Numeric MyExitPrice;// 平仓价格
Begin
M = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
AvgMACD = XAverage(M,MACDLength);
MACDDiff = M - AvgMACD;
MinPoint = MinMove*PriceScale;
MyEntryPrice = AvgEntryPrice;
PlotNumeric("MACD",M);
PlotNumeric("MACDAvg",AvgMACD);
If (MACDDiff >= 0)
PlotNumeric("MACDDiff",MACDDiff,0,Red);
Else
PlotNumeric("MACDDiff",MACDDiff,0,Green);
PlotNumeric("零线",0);
N=AvgMACD;
G1=Highest (h,8);
G2=Lowest(l,8);
If (((M[1]>N[1]) AND (M<N))AND(M<>0))
{E=M;
P1=G1;
EA=E;
EP1=P1;
PlotNumeric("EA",E);
PlotNumeric("EP1",P1);
}
IF(((M[1]<N[1]) AND (M>N))AND(M<>0))
{F=M;
P2=G2;
EF=F;
EP2=P2;
PlotNumeric("EF",F);
PlotNumeric("EP2",P2);
//PlotNumeric("R",R);
}
IF ((EP2 <EP2[1]) and(EF>=EF[1]))
Buy(0,Close);
IF(MarketPosition==1) // 有多仓的情况
{ IF(Open <= MyEntryPrice - StopLossSetA*MinPoint)// 止损条件表达式
{
MyExitPrice = MyEntryPrice - StopLossSetA*MinPoint;
IF(Low< MyExitPrice)
MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(0,MyExitPrice);
}
}
IF((EP1>EP1[1] ) and (EA <=EA[1]))
SellShort(0,Close);
IF(MarketPosition==-1) // 有空仓的情况
{ IF(Open >= MyEntryPrice + StopLossSetB*MinPoint)// 止损条件表达式
{
MyExitPrice = MyEntryPrice + StopLossSetB*MinPoint;
IF(High> MyExitPrice)
MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(0,MyExitPrice);
}
}
End
这段代码,无论止损怎么设,都不会执行,同时我还遇到一种情况,就是空头止损无论设置多大第二根BAR就会被止损,多头无论设置多小都不会被执行,这是什么情况?来源:CXH99.COM
-
TB技术人员:
本帖最后由 kookzw 于 2017-6-24 17:49 编辑
你用这个官网提供的止损代码改改多好。把开平仓的代码放一起,止损的代码单独放一起,编程看着舒服。
我加了备注清晰明了。想移动止损,想初始止损,随便改。- //bStop = Highest(High[1],BarsSinceEntry) - nLoss*OnePoint; //买盘止损线不断移动到买入后产生的最高价减去止损限额
- //sStop = Lowest( Low[1],BarsSinceEntry) + nLoss*OnePoint; //卖盘止损线不断移动到卖出后产生的最低价减去止损限额
- bStop = EntryPrice - nLoss*OnePoint; //买盘止损线不断移动到买入后产生的最高价减去止损限额
- sStop = EntryPrice + nLoss*OnePoint; //卖盘止损线不断移动到卖出后产生的最低价减去止损限额
-
- If (MarketPosition == 1) PlotNumeric("bStop",bStop); // 画出多单止损线。
- If (MarketPosition ==-1) PlotNumeric("sStop",sStop); // 画出空单止损线。
- If ( BarsSinceEntry <> 0)
- {
- If ( MarketPosition == 1 && Low<bStop ) Sell(0,Min(Open,bStop));
- If ( MarketPosition ==-1 && High>sStop ) BuyToCover(0,Max(Open,sStop));
- }
- //bStop = Highest(High[1],BarsSinceEntry) - nLoss*OnePoint; //买盘止损线不断移动到买入后产生的最高价减去止损限额
-
TB客服:
kookzw 发表于 2017-6-24 17:45
你用这个官网提供的止损代码改改多好。把开平仓的代码放一起,止损的代码单独放一起,编程看着舒服。
我加 ...
好的,谢谢,我试试看 -
网友回复:
kookzw 发表于 2017-6-24 17:45
你用这个官网提供的止损代码改改多好。把开平仓的代码放一起,止损的代码单独放一起,编程看着舒服。
我加 ...
我尝试了,问题还是没得到解决,不过还是非常感谢你
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容