求大神,止損不會執行
作者:開拓者 TB 來源:cxh99.com 發布時間:2017年11月02日
-
咨詢內容:
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));
- ? ? ? ? ? ? ? ???}
復制代碼?
-
TB客服:
kookzw 發表于 2017-6-24 17:45
你用這個官網提供的止損代碼改改多好。把開平倉的代碼放一起,止損的代碼單獨放一起,編程看著舒服。
我加 ...
好的,謝謝,我試試看
?
-
網友回復:
kookzw 發表于 2017-6-24 17:45
你用這個官網提供的止損代碼改改多好。把開平倉的代碼放一起,止損的代碼單獨放一起,編程看著舒服。
我加 ...
我嘗試了,問題還是沒得到解決,不過還是非常感謝你