《日内交易策略--谷物期货交易实战指南》中的策略 [开拓者 TB]
- 咨询内容:
《日内交易策略--谷物期货交易实战指南》中提到的策略。
缺点:有时因r比较小,止损会很小;在有日内明显趋势的时候,因为止盈,而仅赚到比较小的部分。
怎么改呢?给点意见呗- Params
- vars
- Bool buycon; //开多条件
- Bool sellcon; //开空条件
- Bool specialbuy;
- Bool specialsell;
- Numeric r;
- Numeric temp;
- Numeric MyEntryPrice;
- String sFileName;
- Numeric BST;
- Numeric HD;
- Numeric LD;
- Numeric N;
- Numeric i;
-
- begin
- BST=BarsSinceToday+1;
- sFileName="d:\\my_TB\\RetracementBreakupBT"+Text(CurrentDate)+".log";
- PlotString("barnum",Text(BST),low-5);
- N=BST; //求从开始到前一根K线的最大值最小值,Lowest和LowD求最值都包含了这个K线的最值。
- LD=Low[1];
- For i = 1 To N-1
- {
- temp=LD;
- LD=Min(Low[i],temp);
- }
-
- HD=High[1];
- For i = 1 To N-1
- {
- temp=HD;
- HD=Max(High[i],temp);
- }
-
- FileAppend(sFileName, "\n进入第"+Text(BST)+"跟K线");
- FileAppend(sFileName, "\n已知最低点"+Text(LD)+" GetGlobalVar(0)"+Text(GetGlobalVar(0))+" GetGlobalVar(1)"+Text(GetGlobalVar(1))+" GetGlobalVar(2)"+Text(GetGlobalVar(2)));
-
- If(Date != Date[1] || BarStatus == 0)
- {
- SetGlobalVar(0,0); //用全局变量0来做趋势的指标,1为向上,0为中立,-1为向下
- SetGlobalVar(1,0); //用全局变量1来表示高点
- SetGlobalVar(2,0); //用全局变量2来表示低点
- SetGlobalVar(3,0); //用全局变量3来表示无持仓的高低点出现在当日第几根K线
- SetGlobalVar(4,0); //用全局变量4来表示孕线数
- SetGlobalVar(5,0); //用全局变量5来表示回撤激值点
- SetGlobalVar(6,0); //用全局变量6来表示r
- FileAppend(sFileName, "\n 全局变量初始化");
- return; //当日的第一根K线,推出、不交易
- }
-
- If(GetGlobalVar(0)==0)
- {
- if (close[1] > open[1])
- {
- SetGlobalVar(0,1);
- SetGlobalVar(1,HD);
- SetGlobalVar(2,LD);
- SetGlobalVar(3,BST-1);
- FileAppend(sFileName,"在第"+Text(BST-1)+"跟K线,确定最初看涨趋势");
- return;
- }
- else if (close[1] < open[1])
- {
- SetGlobalVar(0,-1);
- SetGlobalVar(1,HD);
- SetGlobalVar(2,LD);
- SetGlobalVar(3,BST-1);
- FileAppend(sFileName,"在第"+Text(BST-1)+"跟K线,确定最初看跌趋势");
- return;
- }
- else return;
- }
-
-
-
- //四种出现新高新低的新情况
- If(GetGlobalVar(0)==1 And High[1]>GetGlobalVar(1) And MarketPosition==0)
- {
- SetGlobalVar(1,High[1]);
- SetGlobalVar(4,0);
- SetGlobalVar(5,0);
- FileAppend(sFileName,"在上一根K线,有新高点产生,看涨倾向不变。");
- }
-
- If(BST==4) FileAppend(sFileName,"看看第四个K线到不到这【1】"+Text(Low[1])+" "+Text(GetGlobalVar(2))+" "+Text(GetGlobalVar(0)));
-
- If(GetGlobalVar(0)==1 And Low[1]<GetGlobalVar(2) )
- {
- If(BST==4) FileAppend(sFileName,"看看第四个K线进不进来");
- SetGlobalVar(0,-1);
- SetGlobalVar(2,Low[1]);
- SetGlobalVar(4,0);
- SetGlobalVar(5,0);
- FileAppend(sFileName,"在上一根K线,有新低点产生,由看涨倾向变成看跌倾向。");
- }
- If(GetGlobalVar(0)==-1 And Low[1]<GetGlobalVar(2) And MarketPosition==0)
- {
- SetGlobalVar(2,Low[1]);
- SetGlobalVar(4,0);
- SetGlobalVar(5,0);
- FileAppend(sFileName,"在上一根K线,有新低点产生,看跌倾向不变。");
- }
- If(GetGlobalVar(0)==-1 And High[1]>GetGlobalVar(1) )
- {
- SetGlobalVar(0,1);
- SetGlobalVar(1,High[1]);
- SetGlobalVar(4,0);
- SetGlobalVar(5,0);
- FileAppend(sFileName,"在上一根K线,有新高点产生,由看跌倾向变成看涨倾向。");
- }
-
-
- If( MarketPosition==0)
- {
- If( High[1] < GetGlobalVar(1) And Low[1] >GetGlobalVar(2) ) //孕线
- {
- temp=GetGlobalVar(4)+1;
- SetGlobalVar(4,temp);
- FileAppend(sFileName,"上一根K线为孕线,此时孕线数为"+Text(GetGlobalVar(4)));
- }
- If(GetGlobalVar(0)==1 And High[1]<High[2] And Low[1]<Low[2]) //看涨时的回撤极值点
- {
- SetGlobalVar(5,Low[1]);
- FileAppend(sFileName,"看涨倾向下有新回撤极值点");
- }
- If(GetGlobalVar(0)==-1 And High[1]>High[2] And Low[1]>Low[2]) //看跌时的回撤极值点
- {
- SetGlobalVar(5,High[1]);
- FileAppend(sFileName,"看跌倾向下有新回撤极值点");
- }
- }
-
-
- specialbuy = (GetGlobalVar(0)==1 And GetGlobalVar(4)==1 And BST==3 And High> GetGlobalVar(1) );
- specialsell= (GetGlobalVar(0)==-1 And GetGlobalVar(4)==1 And BST==3 And Low < GetGlobalVar(2) );
-
- buycon = ( GetGlobalVar(0)==1 And GetGlobalVar(4)>= 2 And High > GetGlobalVar(1));
- sellcon= ( GetGlobalVar(0)==-1 And GetGlobalVar(4)>= 2 And Low < GetGlobalVar(2) );
-
- If((buycon || specialbuy) And MarketPosition==0)
- {
- temp=GetGlobalVar(1);
- Buy(1,temp);
- FileAppend(sFileName,"");
- }
-
- If((sellcon||specialsell) And MarketPosition==0)
- {
- temp=GetGlobalVar(2);
- SellShort(1,temp);
- }
-
- If(GetGlobalVar(1) == 0) FileAppend(sFileName,"计算r时高点为0,异常!");
- If(GetGlobalVar(2) == 0) FileAppend(sFileName,"计算r时低点为0,异常!");
-
- If(GetGlobalVar(5)==0)
- r=GetGlobalVar(1)-GetGlobalVar(2);
- Else If(GetGlobalVar(0)==1)
- r=GetGlobalVar(1)-GetGlobalVar(5);
- Else If(GetGlobalVar(0)==-1)
- r=GetGlobalVar(5)-GetGlobalVar(2);
- FileAppend(sFileName,"计算得出的r为"+Text(r));
-
-
- //止损止盈部分
- MyEntryPrice=AvgEntryPrice;
- If(MarketPosition==1 And BarsSinceEntry>=1)
- {
- If(High>=MyEntryPrice + 2*r)
- {
- temp=MyEntryPrice+2*r;
- If(Open>temp) temp=Open;
- Sell(1,temp);
- SetGlobalVar(4,0);
- SetGlobalVar(1,HD);
- SetGlobalVar(2,LD);
- }Else If(Low<MyEntryPrice-r)
- {
- temp=MyEntryPrice-r;
- If(Open<temp) temp=Open;
- Sell(0,temp);
- SetGlobalVar(1,HD);
- SetGlobalVar(2,LD);
- SetGlobalVar(4,0);
- }
- }Else If(MarketPosition==-1 And BarsSinceEntry>=1)
- {
- If(Low<MyEntryPrice-2*r)
- {
- temp=MyEntryPrice-2*r;
- If(Open<temp) temp=Open;
- BuyToCover(1,temp);
- SetGlobalVar(1,HD);
- SetGlobalVar(2,LD);
- SetGlobalVar(4,0);
- }Else If(High>MyEntryPrice+r)
- {
- temp=MyEntryPrice+r;
- If(Open>temp) temp=Open;
- BuyToCover(1,temp);
- SetGlobalVar(1,HD);
- SetGlobalVar(2,LD);
- SetGlobalVar(4,0);
- }
- }
-
- //尾盘平仓
- If((Date[-1] != InvalidInteger && Date != Date[-1]) || (Date[-1]==InvalidInteger && Date<CurrentDate))
- {
- Sell(1,Close);
- BuyToCover(1,Close);
- }
-
- end
- Params
- TB技术人员:
可否不设止盈,改用跟踪止损,比如用吊灯止损或棘轮止损,这样就能让利润奔跑.
这是棘轮止损的链接:http://bbs.tb18.net/thread-19775-1-1.html - TB客服: 刚到论坛这么短的时间,能写出这个,真是挺不一般的人物呀。
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容