開(kāi)拓者CXH99唐奇安通道交易策略源碼[開(kāi)拓者公式]
開(kāi)拓者CXH99唐奇安通道交易策略源碼
Params
Numeric LongLength(20); // 長(zhǎng)周期
Numeric ShortLength(10); // 短周期
Numeric TrailingScale(0.5); // 增倉(cāng)比例
Numeric StopLossSet(2); // 止損比例
Numeric Lots(1); // 交易數(shù)量
Vars
Numeric MinPoint; // 最小變動(dòng)單位
NumericSeries AvgTR; // ATR
Numeric N; // N 值
NumericSeries DonchianHi; // 唐奇安通道上軌,延后1個(gè)Bar
NumericSeries DonchianLo; // 唐奇安通道下軌,延后1個(gè)Bar
Numeric ExitHighestPrice; // 離市時(shí)判斷需要的N周期最高價(jià)
Numeric ExitLowestPrice; // 離市時(shí)判斷需要的N周期最低價(jià)
Numeric myEntryPrice; // 開(kāi)倉(cāng)價(jià)格
Numeric myExitPrice; // 平倉(cāng)價(jià)格
Bool SendOrderThisBar(False); // 當(dāng)前Bar有過(guò)交易
NumericSeries preEntryPrice(0); // 前一次開(kāi)倉(cāng)的價(jià)格
Begin
If(BarStatus == 0)
{
preEntryPrice = InvalidNumeric;
} Else
{
preEntryPrice = preEntryPrice[1];
}
AvgTR = XAverage(TrueRange,LongLength);
N = AvgTR[1];
DonchianHi = HighestFC(High[1],LongLength);
DonchianLo = LowestFC(Low[1],LongLength);
ExitLowestPrice = LowestFC(Low[1],ShortLength);
ExitHighestPrice = HighestFC(High[1],ShortLength);
Commentary("N="+Text(N));
Commentary("preEntryPrice="+Text(preEntryPrice));
PlotNumeric("上軌",DonchianHi);
PlotNumeric("下軌",DonchianLo);
PlotNumeric("退出上軌",ExitHighestPrice);
PlotNumeric("退出下軌",ExitLowestPrice);
/*/////////////////////////////////開(kāi)倉(cāng)////////////////////////////////////////*/
If(MarketPosition == 0 && High > DonchianHi)
{
myEntryPrice = min(high,DonchianHi);
myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice); // 大跳空的時(shí)候用開(kāi)盤價(jià)代替
preEntryPrice = myEntryPrice;
Buy(Lots,myEntryPrice);
SendOrderThisBar = True;
}
If(MarketPosition == 0 && Low < DonchianLo)
{
myEntryPrice = max(low,DonchianLo);
myEntryPrice = IIF(myEntryPrice > Open, Open,myEntryPrice); // 大跳空的時(shí)候用開(kāi)盤價(jià)代替
preEntryPrice = myEntryPrice;
SendOrderThisBar = True;
SellShort(Lots,myEntryPrice);
}
/*///////////////////////////////止盈加倉(cāng)////////////////////////////////////*/
If(MarketPosition == 1)
{
Commentary("ExitLowestPrice="+Text(ExitLowestPrice));
If(Low < ExitLowestPrice)
{
myExitPrice = max(Low,ExitLowestPrice);
myExitPrice = IIF(myExitPrice > Open, Open,myExitPrice); // 大跳空的時(shí)候用開(kāi)盤價(jià)代替
Sell(0,myExitPrice); // 數(shù)量用0的情況下將全部平
}Else
{
If(preEntryPrice!=InvalidNumeric)
{
If(Open >= preEntryPrice + TrailingScale*N) // 如果開(kāi)盤就超過(guò)設(shè)定的1/2N,則直接用開(kāi)盤價(jià)增倉(cāng)。
{
myEntryPrice = Open;
preEntryPrice = myEntryPrice;
Buy(Lots,myEntryPrice);
SendOrderThisBar = True;
}
while(High >= preEntryPrice + TrailingScale*N) // 以最高價(jià)為標(biāo)準(zhǔn),判斷能進(jìn)行幾次增倉(cāng)
{
myEntryPrice = preEntryPrice + TrailingScale * N;
preEntryPrice = myEntryPrice;
Buy(Lots,myEntryPrice);
SendOrderThisBar = True;
}
}
/*///////////////////////////////////止損策略///////////////////////////////*/
If(Low <= preEntryPrice - StopLossSet * N && SendOrderThisBar == false) // 加倉(cāng)Bar不止損
{
myExitPrice = preEntryPrice - StopLossSet * N;
myExitPrice = IIF(myExitPrice > Open, Open,myExitPrice); // 大跳空的時(shí)候用開(kāi)盤價(jià)代替
Sell(0,myExitPrice); // 數(shù)量用0的情況下將全部平倉(cāng)
}
} // www.chengxuhuajiaoyi.com
}Else If(MarketPosition ==-1) // 有空倉(cāng)的情況
{
Commentary("ExitHighestPrice="+Text(ExitHighestPrice));
If(High > ExitHighestPrice)
{
myExitPrice = Min(High,ExitHighestPrice);
myExitPrice = IIF(myExitPrice < Open, Open,myExitPrice); // 大跳空的時(shí)候用開(kāi)盤價(jià)代替
BuyToCover(0,myExitPrice); // 數(shù)量用0的情況下將全部平倉(cāng)
}Else
{
If(preEntryPrice!=InvalidNumeric)
{
If(Open <= preEntryPrice - TrailingScale*N) // 如果開(kāi)盤就超過(guò)設(shè)定的1/2N,則直接用開(kāi)盤價(jià)增倉(cāng)。
{
myEntryPrice = Open;
preEntryPrice = myEntryPrice;
SellShort(Lots,myEntryPrice);
SendOrderThisBar = True;
}
while(Low <= preEntryPrice - TrailingScale*N) // 以最低價(jià)為標(biāo)準(zhǔn),判斷能進(jìn)行幾次增倉(cāng)
{
myEntryPrice = preEntryPrice - TrailingScale * N;
preEntryPrice = myEntryPrice;
SellShort(Lots,myEntryPrice);
SendOrderThisBar = True;
}
}
/*///////////////////////////////////止損策略///////////////////////////////*/
If(High >= preEntryPrice + StopLossSet * N && SendOrderThisBar==false) // 加倉(cāng)Bar不止損
{
myExitPrice = preEntryPrice + StopLossSet * N;
myExitPrice = IIF(myExitPrice < Open, Open,myExitPrice); // 大跳空的時(shí)候用開(kāi)盤價(jià)代替
BuyToCover(0,myExitPrice); // 數(shù)量用0的情況下將全部平倉(cāng)
}
}
}
End
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 262069696 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容