欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助][原创]tb改金字塔

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3173人关注过本帖树形打印复制链接

主题:[求助][原创]tb改金字塔

帅哥哟,离线,有人找我吗?
hksl1023
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:108 积分:0 威望:0 精华:0 注册:2013/6/4 22:53:27
[求助][原创]tb改金字塔  发帖心情 Post By:2014/12/18 14:40:28    Post IP:182.117.104.103[只看该作者]

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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/12/18 14:40:58    Post IP:58.246.57.26[只看该作者]

把代码都注释一下


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
kindjrp
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:2 积分:0 威望:0 精华:0 注册:2015/11/14 19:43:25
  发帖心情 Post By:2015/11/14 20:37:15    Post IP:114.111.166.13[只看该作者]

金字塔能兼容TB,或有没有工具直接把TB语言转换过来?

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/11/16 8:57:50    Post IP:58.246.57.26[只看该作者]

现在还不兼容,这个要等以后的开发方向是不是要改了


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部