TB 海龟交易系统源码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IsOrderThisBar = True; Buy(TurtleUnits,myEntryPrice); } }
// 止损指令 If(Low <= preEntryPrice - 2 * N && IsOrderThisBar == false) //
加仓 Bar 不止损 { myExitPrice = preEntryPrice - 2 * N; Sell(0,myExitPrice); // 数量用 0 的情况下将全部平仓 }
// 唐奇安通道下轨,延后 1 个 Bar
NumericSeries fsDonchianHi;
// 唐奇安通道上轨,延后 1 个 Bar,长周期
NumericSeries fsDonchianLo;
// 唐奇安通道下轨,延后 1 个 Bar,长周期
Numeric ExitHighestPrice;
IsOrderThisBar = True; Buy(TurtleUnits,myEntryPrice); }
If(CrossUnder(Low,DonchianLo) && TurtleUnits >= 1) {
// 开仓价格取突破下轨-一个价位和最低价之间的较大值,这样能更接近真实 情况,并能尽量保证成交
TB 海龟交易系统源码转帖 Params
Numeric RiskRatio(1);
// % Risk Per N ( 0 - 100)
Numeric ATRLength(20);
// 平均波动周期 ATR Length
Numeric boLength(20);
// 短周期 BreakOut Length
Numeric preBreakOutPrice;
// 前一次突破的价格,存放到全局变量 2 号
位置
Begin
If(BarStatus == 0)
{
SetGlobalVar(0,InvalidNumeric);
SetGlobalVar(1,0);
SetGlobalVar(2,InvalidNumeric);
preEntryPrice = myEntryPrice; SetGlobalVar(0,preEntryPrice);// 保存第一次开仓的价格 IsOrderThisBar = True; SellShort(TurtleUnits,myEntryPrice); } }
// 长周期突破开仓 Failsafe Breakout point If(MarketPosition == 0) {
preEntryPrice = myEntryPrice; SetGlobalVar(0,preEntryPrice);// 保存第一次开仓的价格 IsOrderThisBar = True; Buy(TurtleUnits,myEntryPrice); }
If(CrossUnder(Low,fsDonchianLo) && TurtleUnits >= 1) {
// 求出持多仓时离市的条件比较值 ExitLowestPrice = Lowest(Low[1],teLength);
Commentary("ExitLowestPrice="+Text(ExitLowestPrice)); If(Low < ExitLowestPrice) {
myExitPrice = max(Low,ExitLowestPrice - MinPoint); myExitPrice = IIF(myExitPrice > Open, Open,myEntryPrice); // 大
If(Open >= preEntryPrice + 0.5*N) // 如果开盘就超过设定的 1/2N,则直接 用开盘价增仓。
{ myEntryPrice = Open; preEntryPrice = myEntryPrice; SetGlobalVar(0,preEntryPrice);// 保存最后一
LastBreakoutWin = True; } }
// 当不使用过滤条件,或者使用过滤条件并且条件为 False 进行后续操作 If((Not LastProfitableTradeFilter) Or (NOT LastBreakoutWin)) {
// 突破开仓 If(CrossOver(High,DonchianHi) && TurtleUnits >= 1) {
TotalEquity=CurrentCapital()+Abs(CurrentContracts()*Close*ContractUnit()*BigPointValue()* MarginRatio());
TurtleUnits = (TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue()); TurtleUnits = IntPart(TurtleUnits); // 对小数取整
}Else
{
preEntryPrice = GetGlobalVar(0);
preBreakoutType = GetGlobalVar(1);
preBreakOutPrice = GetGlobalVar(2);
}
MinPoint = MinMove*PriceScale;
N = AverageFC(TrueRange,ATRLength);
// 离市时判断需要的 N 周期最高价
Numeric ExitLowestPrice;
// 离市时判断需要的 N 周期最低价
Numeric myEntryPrice;
// 开仓价格
Numeric myExitPrice;
// 平仓价格
Bool IsOrderThisBar(False);
// 当前 Bar 有过交易
preBreakoutType = -1; preBreakOutPrice = DonchianLo; SetGlobalVar(1,preBreakoutType); SetGlobalVar(2,preBreakOutPrice);
myEntryPrice = max(low,DonchianLo - MinPoint); myEntryPrice = IIF(myEntryPrice > Open, Open,myEntryPrice); // 大跳空的时候 用开盘价代替
// 判断最后一次突破是否盈利 If(preBreakoutType == 1) {
If(Close > PreBreakOutPrice)e; } }Else If(preBreakoutType == -1) { If(Close < PreBreakOutPrice) {
跳空的时候用开盘价代替 Sell(0,myExitPrice); // 数量用 0 的情况下将全部平仓
}Else {
preEntryPrice = GetGlobalVar(0); // 取出上一次开仓的价格 If(preEntryPrice!=InvalidNumeric && TurtleUnits >= 1) {
// 开仓价格取突破上轨+一个价位和最高价之间的较小值,这样能更接近真 实情况,并能尽量保证成交
preBreakoutType = 1; preBreakOutPrice = Donchianhi; SetGlobalVar(1,preBreakoutType); SetGlobalVar(2,preBreakOutPrice);
If(CrossOver(High,fsDonchianHi) && TurtleUnits >= 1) {
// 开仓价格取突破上轨+一个价位和最高价之间的较小值,这样能更接近真 实情况,并能尽量保证成交
myEntryPrice = min(high,fsDonchianHi + MinPoint); myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice); // 大跳空的时候 用开盘价代替
// 最小变动单位
Numeric N;
// N 值
Numeric TotalEquity;
// 按最新收盘价计算出的总资产
Numeric TurtleUnits;
// 交易单位
NumericSeries DonchianHi;
// 唐奇安通道上轨,延后 1 个 Bar
NumericSeries DonchianLo;
Bool LastBreakoutWin(False);
// 最后一次突破是否盈利
Numeric preEntryPrice;
// 前一次开仓的价格,存放到全局变量 0 号
位置
Numeric preBreakoutType(0);
// 前一次突破的方向,1 - LONG , -1 -
SHORT 初始值为 0,存放到全局变量 1 号位置
myEntryPrice = min(high,DonchianHi + MinPoint); myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice); // 大跳空的时候 用开盘价代替
preEntryPrice = myEntryPrice; SetGlobalVar(0,preEntryPrice);// 保存第一次开仓的价格
preEntryPrice = myEntryPrice; SetGlobalVar(0,preEntryPrice);// 保存第一次开仓的价格 IsOrderThisBar = True; SellShort(TurtleUnits,myEntryPrice); } }
Commentary("preEntryPrice="+Text(preEntryPrice)); If(MarketPosition == 1) // 有多仓的情况 {
} }Else If(MarketPosition ==-1) // 有空仓的情况 {
// 求出持空仓时离市的条件比较值 ExitHighestPrice = Highest(High[1],teLength);
Commentary("ExitHighestPrice="+Text(ExitHighestPrice)); If(High > ExitHighestPrice) {
DonchianHi = HighestFC(High[1],boLength); DonchianLo = LowestFC(Low[1],boLength);
fsDonchianHi = HighestFC(High[1],fsLength); fsDonchianLo = LowestFC(Low[1],fsLength);
Numeric fsLength(55);
// 长周期 FailSafe Length
Numeric teLength(10);
// 离市周期 Trailing Exit Length
Bool LastProfitableTradeFilter(True); // 使用入市过滤条件
Vars
Numeric MinPoint;
次开仓的价格 IsOrderThisBar = True;
Buy(TurtleUnits,myEntryPrice); }
次增仓 次开仓的价格
while(High >= preEntryPrice + 0.5*N) // 以最高价为标准,判断能进行几
{ myEntryPrice = preEntryPrice + 0.5 * N; preEntryPrice = myEntryPrice; SetGlobalVar(0,preEntryPrice);// 保存最后一
// 开仓价格取突破下轨-一个价位和最低价之间的较大值,这样能更接近真实 情况,并能尽量保证成交
myEntryPrice = max(low,fsDonchianLo - MinPoint);
myEntryPrice = IIF(myEntryPrice > Open, Open,myEntryPrice); // 大跳空的时候 用开盘价代替