又一个失败的策略。望大神提谐。
本帖最后由 qsb588986 于 2017-11-16 21:39 编辑//------------------------------------------------------------------------
// 简称: sohuu
// 名称: sohuu
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
Numeric offset(6) ; //此处添加参数
Numeric a(1);
Numeric b(5);
Numeric e(8);
Numeric ht(10);
Numeric f(10);
Vars
Numeric aa;
Numeric bb;
NumericSeries ff;
NumericSeries dd;
NumericSeries pp;
Numeric hh;
Numeric ll;
Numeric totalequity;
Numeric turtleunits;
Numeric bd;
Numeric kbd;
Numeric volff;
Numeric bdav;
Numeric kbdav;
Numeric kkk;
Numeric fff;
Bool gg;
Bool kk;
BoolSeries tt;
BoolSeries ttff;
//此处添加变量
Begin
if(date!=date && high==low)
Return;
if(time>=0.090 && time<0.1455 or time>=0.2100 && time<0.2255 or currenttime>=0.090 && currenttime<0.1455 or currenttime>=0.2100 && CurrentTime<0.2255)
{
SetGlobalVar(6,0);
SetGlobalVar(7,0);
SetGlobalVar(5,0);
}
TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin(); //账户最新资产 = 按当前Bar开盘价计算的可用资金 + 持仓保证金
TurtleUnits=(TotalEquity/(MarginRatio*ContractUnit()*BigPointValue()*Close))*6/10;
TurtleUnits = IntPart(TurtleUnits); // 对小数取整
if(BarStatus==0 || GetGlobalVar(0)==InvalidNumeric)
SetGlobalVar(0,0);
if(BarStatus==0 || GetGlobalVar(1)==InvalidNumeric)
SetGlobalVar(1,1);
if(BarStatus==0 || GetGlobalVar(2)==InvalidNumeric)
SetGlobalVar(2,1);
if(BarStatus==0 || GetGlobalVar(2)==InvalidNumeric)
SetGlobalVar(4,0);
kkk=Highest(High,3);
fff=Lowest(low,3);
ff=AverageFC(close,ht);
bd=(close-fff)*100000/Vol;
kbd=(close-kkk)*100000/vol;
bdav=Average(bd,10);
kbdav=Average(kbd,10);
tt=bd>1.1*bdav && ff>ff && ff>ff;
ttff=kbd<1.1*kbdav && ff<ff && ff<ff;
volff=Average(vol,40);
if(A_BuyPosition==0 && A_SellPosition==0 && BarStatus==2 && GetGlobalVar(5)!=1)
{
if(tt==true && High>high && ttff==false)
{
if(GetGlobalVar(0)==0)
{
A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_AskPrice+offset*MinMove*PriceScale);
SetGlobalVar(0,1);
}
SetGlobalVar(4,0);
}
Else if(ttff==True && low<low && tt==false)
{
if(GetGlobalVar(4)==0)
{
A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(4,1);
}
SetGlobalVar(0,0);
}
}
if(A_SellPosition>0 && BarStatus==2 && GetGlobalVar(5)!=1)
{
if(tt==True && High>high && ttff==false)
{
if(GetGlobalVar(1)==1)
{
if(a_todaysellposition>0)
A_SendOrder(Enum_Buy,Enum_ExitToday,A_TodaySellPosition,Q_AskPrice+offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice+offset*MinMove*PriceScale);
A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_AskPrice+offset*MinMove*PriceScale);
SetGlobalVar(1,2);
SetGlobalVar(12,1);
}
SetGlobalVar(2,1);
}
Else if(close-low>5 && vol>volff*2)
{
if(GetGlobalVar(1)==1)
{
if(a_todaysellposition>0)
A_SendOrder(Enum_Buy,Enum_ExitToday,A_TodaySellPosition,Q_AskPrice+offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice+offset*MinMove*PriceScale);
A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_AskPrice+offset*MinMove*PriceScale);
SetGlobalVar(1,2);
SetGlobalVar(12,1);
}
SetGlobalVar(2,1);
}
}
if(A_BuyPosition>0 && BarStatus==2 && GetGlobalVar(5)!=1)
{
if(ttff==True && low<low && tt==false)
{
if(GetGlobalVar(2)==1)
{
if(A_TodayBuyPosition>0)
A_SendOrder(Enum_Sell,Enum_ExitToday,A_TodayBuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(2,2);
SetGlobalVar(13,1);
}
SetGlobalVar(1,1);
}
Else if(High-close>5 && vol>2*volff)
{
if(GetGlobalVar(2)==1)
{
if(A_TodayBuyPosition>0)
A_SendOrder(Enum_Sell,Enum_ExitToday,A_TodayBuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(2,2);
SetGlobalVar(13,1);
}
SetGlobalVar(1,1);
}
}
IF(Time>=0.1455 && time<=0.1500 or Time>=0.2255 && time<=0.2300)
{
SetGlobalVar(5,1);
if(A_BuyPosition>0)
{
if(GetGlobalVar(6)==0)
{
if(A_TodayBuyPosition>0)
A_SendOrder(Enum_Sell,Enum_ExitToday,A_TodayBuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
}
SetGlobalVar(6,1);
}
if(A_SellPosition>0)
{
if(GetGlobalVar(7)==0)
{
if(a_todaysellposition>0)
A_SendOrder(Enum_Buy,Enum_ExitToday,A_TodaySellPosition,Q_AskPrice+offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice+offset*MinMove*PriceScale);
}
SetGlobalVar(7,1);
}
}
Commentary("GetGlobalVar(0)"+text(GetGlobalVar(0)));
Commentary("GetGlobalVar(4)"+text(GetGlobalVar(4)));
Commentary("GetGlobalVar(1)"+text(GetGlobalVar(1)));
Commentary("GetGlobalVar(2)"+text(GetGlobalVar(2)));
Commentary("GetGlobalVar(5)"+text(GetGlobalVar(5)));
Commentary("GetGlobalVar(6)"+text(GetGlobalVar(6)));
Commentary("GetGlobalVar(7)"+text(GetGlobalVar(7)));
Commentary("GetGlobalVar(20)"+text(GetGlobalVar(20)));
Commentary("bd="+text(bd));
Commentary("kbd="+text(kbd));
Commentary("volff="+text(volff));
Commentary("vol="+text(vol));
Commentary("tt="+IIFString(tt,"Ture","False"));
Commentary("ttff="+IIFString(ttff,"Ture","False"));
Commentary("bdav="+text(bdav));
Commentary("kbdav="+text(kbdav));
Commentary("gg="+IIFString(gg,"Ture","False"));
Commentary("kk="+IIFString(kk,"Ture","False"));
Commentary("GetGlobalVar(10)="+text(GetGlobalVar(10)));
Commentary("GetGlobalVar(11)="+text(GetGlobalVar(11)));
Commentary("GetGlobalVar(12)="+text(GetGlobalVar(12)));
Commentary("GetGlobalVar(13)="+text(GetGlobalVar(13)));
Commentary("bb="+text(bb));
Commentary("aa="+text(aa));
End
//------------------------------------------------------------------------
// 编译版本: 2017/06/29 160929
// 内核版本: V2.6.2.13
// 版权所有 qsb588986
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------ 大家看完说说! 太复杂,模型需要简单,否则就不能实盘。 是在测试中,要改很多东西。 我的模型实盘可以的!跑得很干脆!就是亏得快! 怎么没人说说? 本帖最后由 qsb588986 于 2018-3-2 20:29 编辑
新写了个策略如下:望大家点评!适用螺纹钢3分钟
//------------------------------------------------------------------------
// 简称: sohuu
// 名称: sohuu
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
Numeric offset(6) ;
Numeric sslength(5);
Numeric flength(10);
Numeric fflength(20);
Numeric ffflength(30);
//此处添加参数
Vars
Numeric totalequity;
Numeric turtleunits;
Numeric sslowlength;
Numeric fashlength;
Numeric ffashlength;
Numeric fffashlength;
Numeric absa;
Numeric abss;
Numeric absss;
Numeric kkk;
Numeric volff;
Numeric fff;
Numeric hhh;
Numeric lll;
NumericSeries aaa;
NumericSeries bbb;
NumericSeries aaaa;
NumericSeries ss;
NumericSeries tbb;
Bool nobuy;
Bool nosell;
Bool aa;
Bool bb;
Bool cc;
//此处添加变量
Begin
if(isCallAuctionTime())
Return;
TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin(); //账户最新资产 = 按当前Bar开盘价计算的可用资金 + 持仓保证金
TurtleUnits=(TotalEquity/(MarginRatio*ContractUnit()*BigPointValue()*Close))*6/10;
TurtleUnits = IntPart(TurtleUnits); // 对小数取整
if(BarStatus==0 || GetGlobalVar(0)==InvalidNumeric)
SetGlobalVar(0,0); \\开盘初始化
if(BarStatus==0 || GetGlobalVar(1)==InvalidNumeric)
SetGlobalVar(1,1); \\开盘初始化
if(BarStatus==0 || GetGlobalVar(2)==InvalidNumeric)
SetGlobalVar(2,1); \\开盘初始化
if(BarStatus==0 || GetGlobalVar(4)==InvalidNumeric)
SetGlobalVar(4,0); \\开盘初始化
if(BarStatus==0 || GetGlobalVar(11)==InvalidNumeric)
SetGlobalVar(11,1); \\开盘初始化
if(BarStatus==0 || GetGlobalVar(12)==InvalidNumeric)
SetGlobalVar(12,1); \\开盘初始化
sslowlength=AverageFC(close,sslength); \\5周期均线
fashlength=AverageFC(close,flength); \\10周期均线
ffashlength=averagefc(close,fflength); \\20周期均线
fffashlength=averagefc(close,ffflength); \\30周期均线
absa=sslowlength-fashlength; \\5周期均线和10周期均线之间的绝对值
abss=fashlength-ffashlength; \\10周期均线和20周期均线之间的绝对值
absss=ffashlength-fffashlength; \\20周期均线和30周期均线之间的绝对值
aa=abs(absa)<4; \\5周期均线和10周期均线之间的绝对值小于3
bb=abs(abss)<4; \\10周期均线和20周期均线之间的绝对值小于3
cc=abs(absss)<6; \\20周期均线和30周期均线之间的绝对值小于6
volff=AverageFC(vol,10);
fff=Highest(vol,5); \\求5周期成交量最高值
hhh=highest(high,5); \\求5周期最高价的最高值
lll=lowest(low,5); \\求5周期最低价的最低值
nobuy=hhh-close>8 && fff>2*volff; \\上涨回调8个点后且成交量大于均成交量2倍
nosell=Close-lll>8 && fff>2*volff; \\下跌回调8个点后且成交量大于均成交量2倍
ss=GetGlobalVar(11); \\卖平仓后设值记数5个周期后才开仓
tbb=GetGlobalVar(12); \\买平仓后设值记数5个周期后才开仓
if(A_BuyPosition==0 && A_SellPosition==0 && BarStatus==2 && vol>0 && ss!=0 && tbb!=0)
{
if(sslowlength>fashlength && sslowlength>ffashlength && sslowlength>fffashlength && aa==true && bb==true && cc==True && fff>2*volff && close>open) \\均线上穿开多并且过滤大量横盘
{
if(GetGlobalVar(0)==0 && nobuy==False) \\ 全局变量控制a函数发单
{
A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_AskPrice+offset*MinMove*PriceScale);
SetGlobalVar(0,1);
SetGlobalVar(11,1);
}
SetGlobalVar(2,1);
}
Else if(sslowlength<fashlength && sslowlength<ffashlength && sslowlength<fffashlength && aa==true && bb==true && cc==true && fff>2*volff && close<open) \\均线下穿开空并且过滤大量横盘
{
if(GetGlobalVar(4)==0 && nosell==False) \\ 全局变量控制a函数发单
{
A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(4,1);
SetGlobalVar(11,1);
}
SetGlobalVar(1,1);
}
}
if(A_BuyPosition==0 && A_SellPosition==0 && BarStatus==2 && vol>0 && tbb==0) \\平仓后经过5个周期后再开仓
{
if(sslowlength>fashlength && sslowlength>ffashlength && sslowlength>fffashlength && aa==true && bb==true && cc==True && fff>2*volff && close>open)
{
if(GetGlobalVar(0)==0 && nobuy==False)
{
A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_AskPrice+offset*MinMove*PriceScale);
SetGlobalVar(0,1);
SetGlobalVar(12,1);
}
SetGlobalVar(2,1);
}
}
if(A_BuyPosition==0 && A_SellPosition==0 && BarStatus==2 && vol>0 && ss==0)
{
if(sslowlength>fashlength && sslowlength>ffashlength && sslowlength>fffashlength && aa==true && bb==true && cc==True && fff>2*volff && close>open)
{
if(GetGlobalVar(0)==0 && nobuy==False)
{
A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_AskPrice+offset*MinMove*PriceScale);
SetGlobalVar(0,1);
SetGlobalVar(12,1);
}
SetGlobalVar(2,1);
}
}
if(A_BuyPosition==0 && A_SellPosition==0 && BarStatus==2 && vol>0 && ss==0)
{
if(sslowlength<fashlength && sslowlength<ffashlength && sslowlength<fffashlength && aa==true && bb==true && cc==true && fff>2*volff && close<open)
{
if(GetGlobalVar(4)==0 && nosell==False)
{
A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(4,1);
SetGlobalVar(11,1);
}
SetGlobalVar(1,1);
}
}
if(A_BuyPosition==0 && A_SellPosition==0 && BarStatus==2 && vol>0 && tbb==0)
{
if(sslowlength<fashlength && sslowlength<ffashlength && sslowlength<fffashlength && aa==true && bb==true && cc==true && fff>2*volff && close<open)
{
if(GetGlobalVar(4)==0 && nosell==False)
{
A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(4,1);
SetGlobalVar(11,1);
}
SetGlobalVar(1,1);
}
}
本帖最后由 qsb588986 于 2018-3-2 20:23 编辑
if(A_SellPosition>0 && BarStatus==2 && vol>0)
{
if(sslowlength>fashlength && sslowlength>ffashlength && aa==true && bb==true && cc==True && fff>2*volff && close>open)\\均线上穿空仓反手做多
{
if(GetGlobalVar(1)==1)
{
if(a_todaysellposition>0)
A_SendOrder(Enum_Buy,Enum_ExitToday,A_TodaySellPosition,Q_AskPrice+offset*MinMove*PriceScale);\\平今仓
Else
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice+offset*MinMove*PriceScale);
A_SendOrder(Enum_Buy,Enum_Entry,turtleunits,Q_AskPrice+offset*MinMove*PriceScale);
SetGlobalVar(1,2);
}
SetGlobalVar(2,1);
}
else if(sslowlength>fashlength && fashlength>ffashlength && fashlength>fffashlength)\\均线下穿空单平仓
{
if(GetGlobalVar(1)==1)
{
if(a_todaysellposition>0)
A_SendOrder(Enum_Buy,Enum_ExitToday,A_TodaySellPosition,Q_AskPrice+offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice+offset*MinMove*PriceScale);
SetGlobalVar(1,2);
SetGlobalVar(11,0);
}
SetGlobalVar(0,0);
SetGlobalVar(4,0);
}
else if(Close-lll>12 && fff>2*volff)\\空仓回调8个点并且成交量大于2倍均量平仓
{
if(GetGlobalVar(1)==1)
{
if(a_todaysellposition>0)
A_SendOrder(Enum_Buy,Enum_ExitToday,A_TodaySellPosition,Q_AskPrice+offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice+offset*MinMove*PriceScale);
SetGlobalVar(1,2);
SetGlobalVar(11,0);
}
SetGlobalVar(0,0);
SetGlobalVar(4,0);
}
else if(close-A_SellAvgPrice>20) \\空仓20个点止损出局
{
if(GetGlobalVar(1)==1)
{
if(a_todaysellposition>0)
A_SendOrder(Enum_Buy,Enum_ExitToday,A_TodaySellPosition,Q_AskPrice+offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice+offset*MinMove*PriceScale);
SetGlobalVar(1,2);
SetGlobalVar(11,0);
}
SetGlobalVar(0,0);
SetGlobalVar(4,0);
}
}
if(A_BuyPosition>0 && BarStatus==2 && vol>0)
{
if(sslowlength<fashlength && sslowlength<ffashlength && aa==true && bb==true && cc==true && fff>2*volff && close<open)\\均线下穿多单反手做空
{
if(GetGlobalVar(2)==1)
{
if(A_TodayBuyPosition>0)
A_SendOrder(Enum_Sell,Enum_ExitToday,A_TodayBuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
A_SendOrder(Enum_Sell,Enum_Entry,turtleunits,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(2,2);
}
SetGlobalVar(1,1);
}
else if(sslowlength<fashlength && fashlength<ffashlength && fashlength<fffashlength)\\均线下穿多单平仓
{
if(GetGlobalVar(2)==1)
{
if(A_TodayBuyPosition>0)
A_SendOrder(Enum_Sell,Enum_ExitToday,A_TodayBuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(2,2);
SetGlobalVar(12,0);
}
SetGlobalVar(0,0);
SetGlobalVar(4,0);
}
else if(hhh-close>12 && fff>2*volff)\\多仓回调8个点并且成交量大于2倍均量平仓
{
if(GetGlobalVar(2)==1)
{
if(A_TodayBuyPosition>0)
A_SendOrder(Enum_Sell,Enum_ExitToday,A_TodayBuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(2,2);
SetGlobalVar(12,0);
}
SetGlobalVar(0,0);
SetGlobalVar(4,0);
}
else if(A_buyAvgPrice-close>20) \\多仓20个点止损出局
{
if(GetGlobalVar(2)==1)
{
if(A_TodayBuyPosition>0)
A_SendOrder(Enum_Sell,Enum_ExitToday,A_TodayBuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
Else
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(2,2);
SetGlobalVar(11,0);
}
SetGlobalVar(0,0);
SetGlobalVar(4,0);
}
}
End
//------------------------------------------------------------------------
// 编译版本: 2017/06/29 160929
// 内核版本: V2.6.2.13
// 版权所有 qsb588986
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
祝大家新年快乐!万事如意!心想事成!大吉大利!天上人间!北上北进! 需要这么多全局变量?:dizzy: 是呀!这样跑起来才完美、带劲!