海龟交易系统公式Word文档下载推荐.docx
《海龟交易系统公式Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《海龟交易系统公式Word文档下载推荐.docx(7页珍藏版)》请在冰豆网上搜索。
NumericRiskRatio
(1);
//%RiskPerN(0-100)
NumericATRLength(20);
//平均波动周期ATRLength
NumericboLength(20);
//短周期BreakOutLength
NumericfsLength(55);
//长周期FailSafeLength
NumericteLength(10);
//离市周期TrailingExitLength
BoolLastProfitableTradeFilter(True);
//使用入市过滤条件
Vars
NumericN;
//N值
NumericTotalEquity;
//按最新收盘价计算出的总资产
NumericTurtleUnits;
//交易单位
NumericSeriesDonchianHi;
//唐奇安通道上轨,延后1个Bar
NumericSeriesDonchianLo;
//唐奇安通道下轨,延后1个Bar
NumericSeriesfsDonchianHi;
//唐奇安通道上轨,延后1个Bar,长周期
NumericSeriesfsDonchianLo;
//唐奇安通道下轨,延后1个Bar,长周期
NumericExitHighestPrice;
//离市时判断需要的N周期最高价
NumericExitLowestPrice;
//离市时判断需要的N周期最低价
NumericmyEntryPrice;
//开仓价格
NumericmyExitPrice;
//平仓价格
BoolIsEntryThisBar(False);
//当前Bar开过仓
BoolIsAddThisBar(False);
//当前Bar有过增仓
BoolLastBreakoutWin(False);
//最后一次突破是否盈利
NumericpreEntryPrice;
//前一次开仓的价格,存放到全局变量0号位置
NumericpreBreakoutType(0);
//前一次突破的方向,1-LONG,-1-SHORT初始值为0,存放到全局变量1号位置
NumericpreBreakOutPrice;
//前一次突破的价格,存放到全局变量2号位置
Begin
If(BarStatus==0)
{
SetGlobalVar(0,InvalidNumeric);
SetGlobalVar(1,0);
SetGlobalVar(2,InvalidNumeric);
}Else
preBreakoutType=GetGlobalVar
(1);
preBreakOutPrice=GetGlobalVar
(2);
}
N=AverageFC(TrueRange,ATRLength);
TotalEquity=CurrentCapital()+Abs(CurrentContracts()*Close*ContractUnit()*BigPointValue()*MarginRatio());
TurtleUnits=(TotalEquity*RiskRatio/100)/(N*ContractUnit()*BigPointValue());
TurtleUnits=IntPart(TurtleUnits);
//对小数取整
DonchianHi=HighestFC(Close[1],boLength);
DonchianLo=LowestFC(Close[1],boLength);
//判断最后一次突破是否盈利
If(preBreakoutType==1)
If(Close>
PreBreakOutPrice)
{
LastBreakoutWin=True;
}
}ElseIf(preBreakoutType==-1)
If(Close<
//当不使用过滤条件,或者使用过滤条件并且条件为False进行后续操作
If((NotLastProfitableTradeFilter)Or(NOTLastBreakoutWin))
//突破开仓
If(CrossOver(High,DonchianHi)&
&
TurtleUnits>
=1)
//开仓价格取突破上轨+一个价位和最高价之间的较小值,这样能更接近真实情况,并能尽量保证成交
preBreakoutType=1;
preBreakOutPrice=Donchianhi;
SetGlobalVar(1,preBreakoutType);
SetGlobalVar(2,preBreakOutPrice);
myEntryPrice=min(high,DonchianHi+PriceScale*MinMove);
myEntryPrice=IIF(myEntryPrice<
Open,Open,myEntryPrice);
//大跳空的时候用开盘价代替
If(Buy(TurtleUnits,myEntryPrice))
{
IsEntryThisBar=True;
SetGlobalVar(0,myEntryPrice);
//保存第一次开仓的价格
}
If(CrossUnder(Low,DonchianLo)&
//开仓价格取突破下轨-一个价位和最低价之间的较大值,这样能更接近真实情况,并能尽量保证成交
preBreakoutType=-1;
preBreakOutPrice=DonchianLo;
myEntryPrice=max(low,DonchianLo-PriceScale*MinMove);
myEntryPrice=IIF(myEntryPrice>
If(SellShort(TurtleUnits,myEntryPrice))
//长周期突破开仓FailsafeBreakoutpoint
If(MarketPosition==0)
fsDonchianHi=HighestFC(Close[1],fsLength);
fsDonchianLo=LowestFC(Close[1],fsLength);
If(CrossOver(High,fsDonchianHi)&
myEntryPrice=min(high,fsDonchianHi+PriceScale*MinMove);
If(CrossUnder(Low,fsDonchianLo)&
myEntryPrice=max(low,fsDonchianLo-PriceScale*MinMove);
If(MarketPosition==1)//有多仓的情况
//求出持多仓时离市的条件比较值
ExitLowestPrice=LowestFC(Low[1],teLength);