以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- [求助][原创]tb改金字塔 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=73246) |
-- 作者:hksl1023 -- 发布时间:2014/12/18 14:40:28 -- [求助][原创]tb改金字塔 Params Numeric RiskRatio(1); Numeric ATRLength(20); Numeric boLength(20); Numeric fsLength(55); Numeric teLength(10); Bool LastProfitableTradeFilter(True); Numeric TrailingStart1(50); Numeric TrailingStart2(80); Numeric TrailingStop1(30); Numeric TrailingStop2(20); Numeric StopLossSet(50); Vars Numeric MinPoint; NumericSeries AvgTR; Numeric N; Numeric TotalEquity; Numeric TurtleUnits; NumericSeries DonchianHi; NumericSeries DonchianLo; NumericSeries fsDonchianHi; NumericSeries fsDonchianLo; Numeric ExitHighestPrice; Numeric ExitLowestPrice; Numeric myEntryPrice; Numeric myExitPrice; Bool SendOrderThisBar(False); NumericSeries preEntryPrice(0); BoolSeries PreBreakoutFailure(false); Numeric MyExitPriceStop; NumericSeries HighestAfterEntry; NumericSeries LowestAfterEntry; Begin If(BarStatus==2 && Time==0.090000 && CurrentTime<=0.090000) Return; If(BarStatus == 0) { preEntryPrice = InvalidNumeric; PreBreakoutFailure = false; } MinPoint = MinMove*PriceScale; AvgTR = XAverage(TrueRange,ATRLength); N = AvgTR[1]; TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin(); TurtleUnits = (TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue()); TurtleUnits = IntPart(TurtleUnits); DonchianHi = HighestFC(High[1],boLength); DonchianLo = LowestFC(Low[1],boLength); fsDonchianHi = HighestFC(High[1],fsLength); fsDonchianLo = LowestFC(Low[1],fsLength); ExitLowestPrice = LowestFC(Low[1],teLength); ExitHighestPrice = HighestFC(High[1],teLength); Commentary("N="+Text(N)); Commentary("preEntryPrice="+Text(preEntryPrice)); Commentary("PreBreakoutFailure="+IIFString(PreBreakoutFailure,"True","False")); If(BarsSinceentry == 0) { HighestAfterEntry = Close; LowestAfterEntry = Close; If(MarketPosition <> 0) { HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice); LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice); } } Else { HighestAfterEntry = Max(HighestAfterEntry,High); LowestAfterEntry = Min(LowestAfterEntry,Low); } Commentary("HighestAfterEntry="+Text(HighestAfterEntry)); Commentary("LowestAfterEntry="+Text(LowestAfterEntry)); MinPoint = MinMove*PriceScale; MyEntryPrice = AvgEntryPrice; If(MarketPosition == 0 && ((!LastProfitableTradeFilter) Or(PreBreakoutFailure))) { If(High > DonchianHi && TurtleUnits >= 1) { myEntryPrice = min(high,DonchianHi + MinPoint); myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice); preEntryPrice = myEntryPrice; Buy(1,myEntryPrice); SendOrderThisBar = True; PreBreakoutFailure = False; } If(Low < DonchianLo && TurtleUnits >= 1) { myEntryPrice = max(low,DonchianLo - MinPoint); myEntryPrice = IIF(myEntryPrice > Open, Open,myEntryPrice); preEntryPrice = myEntryPrice; SendOrderThisBar = True; SellShort(1,myEntryPrice); SendOrderThisBar = True; PreBreakoutFailure = False; } } // 长周期突破开仓 Failsafe Breakout point If(MarketPosition == 0) { Commentary("fsDfont-family: Verdana;"> If(High > fsDonchianHi && TurtleUnits >= 1) { myEntryPrice = min(high,fsDonchianHi + MinPoint); myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice); preEntryPrice = myEntryPrice; Buy(1,myEntryPrice); SendOrderThisBar = True; PreBreakoutFailure = False; } Commentary("fsDfont-family: Verdana;"> If(Low < fsDonchianLo && TurtleUnits >= 1) { myEntryPrice = max(low,fsDonchianLo - MinPoint); myEntryPrice = IIF(myEntryPrice > Open, Open,myEntryPrice); preEntryPrice = myEntryPrice; SellShort(1,myEntryPrice); SendOrderThisBar = True; PreBreakoutFailure = False; } } If(MarketPosition == 1) { Commentary("ExitLowestPrice="+Text(ExitLowestPrice)); If(Low < ExitLowestPrice) { myExitPrice = max(Low,ExitLowestPrice - MinPoint); myExitPrice = IIF(myExitPrice > Open, Open,myExitPrice); Sell(0,myExitPrice); } Else { If(preEntryPrice!=InvalidNumeric && TurtleUnits >= 1) { If(Open >= preEntryPrice + 0.5*N) { myEntryPrice = Open; preEntryPrice = myEntryPrice; Buy(1,myEntryPrice); SendOrderThisBar = True; } while(High >= preEntryPrice + 0.5*N) { myEntryPrice = preEntryPrice + 0.5 * N; preEntryPrice = myEntryPrice; Buy(1,myEntryPrice); SendOrderThisBar = True; } } If(Low <= preEntryPrice - 2 * N && SendOrderThisBar == false) { If(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart2*MinPoint) { If(Low <= HighestAfterEntry[1] - TrailingStop2*MinPoint) { MyExitPriceStop = HighestAfterEntry[1] - TrailingStop2*MinPoint; If(Open < MyExitPriceStop) MyExitPriceStop = Open; Sell(0,MyExitPriceStop); } } else if(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart1*MinPoint) { If(Low <= HighestAfterEntry[1] - TrailingStop1*MinPoint) { MyExitPriceStop = HighestAfterEntry[1] - TrailingStop1*MinPoint; If(Open < MyExitPriceStop) MyExitPriceStop = Open; Sell(0,MyExitPriceStop); } } else if (Low <= MyEntryPrice - StopLossSet*MinPoint) { MyExitPriceStop = MyEntryPrice - StopLossSet*MinPoint; If(Open < MyExitPriceStop) MyExitPriceStop = Open; Sell(0,MyExitPriceStop); } PreBreakoutFailure = True; } } } Else If(MarketPosition ==-1) { Commentary("ExitHighestPrice="+Text(ExitHighestPrice)); If(High > ExitHighestPrice) { myExitPrice = Min(High,ExitHighestPrice + MinPoint); myExitPrice = IIF(myExitPrice < Open, Open,myExitPrice); BuyToCover(0,myExitPrice); } Else { If(preEntryPrice!=InvalidNumeric && TurtleUnits >= 1) { // If(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart2*MinPoint) { If(High >= LowestAfterEntry[1] + TrailingStop2*MinPoint) { MyExitPriceStop = LowestAfterEntry[1] + TrailingStop2*MinPoint; If(Open > MyExitPriceStop) MyExitPriceStop = Open; BuyToCover(0,MyExitPriceStop); } } else if(LowestAfterEntry[1] <= MyEntryPrice + TrailingStart1*MinPoint) { If(High >= LowestAfterEntry[1] + TrailingStop1*MinPoint) { MyExitPriceStop = LowestAfterEntry[1] - TrailingStop1*MinPoint; If(Open > MyExitPriceStop) MyExitPriceStop = Open; BuyToCover(0,MyExitPriceStop); } } else If(High >= MyEntryPrice + StopLossSet*MinPoint) { MyExitPriceStop = MyEntryPrice + StopLossSet*MinPoint; If(Open > MyExitPriceStop) MyExitPriceStop = Open; } PreBreakoutFailure = True; } } } End
|
-- 作者:jinzhe -- 发布时间:2014/12/18 14:40:58 -- 把代码都注释一下 |
-- 作者:kindjrp -- 发布时间:2015/11/14 20:37:15 -- 金字塔能兼容TB,或有没有工具直接把TB语言转换过来? |
-- 作者:jinzhe -- 发布时间:2015/11/16 8:57:50 -- 现在还不兼容,这个要等以后的开发方向是不是要改了 |