设为首页收藏本站

 找回密码
 注册
查看: 2519|回复: 4
打印 上一主题 下一主题

[求助]请高手帮忙编个交易策略 [复制链接]

Rank: 1

精华
0
UID
114496
积分
46
帖子
29
主题
15
阅读权限
10
注册时间
2012-12-28
最后登录
2016-11-15
跳转到指定楼层
1#
发表于 2013-1-7 17:29:25 |只看该作者 |倒序浏览
策略:1,以日K线的收盘价和开盘价作为参数,在开盘后开始交易如果盘中市价突破前期高点或低点进场
进场按市价默认手数下单子(应该就是突破价吧)。
      2,如果持仓后以前一根K线的开盘价止损并且按30点固定移动止损。
      3,当出现最新一根K线在收盘前1分钟大于前2根K线收盘价时平仓反手(做空时)或小于前2根K线收盘价时平仓反手(做多时)。并且从此按以上模式循环。
(注:突破只是开始运行时有效,以后以反手再反手策略执行程序)
因为刚开始学习TB,觉得参数的设置,变量的给定,关键是执行过程中的进场,时间,止损移动还有输出图表信号,保存等等问题都感觉糊涂了?只是这么个思路可是感到有很多问题无法完成程序化?请各位高手指教下了?

Rank: 1

精华
0
UID
114496
积分
46
帖子
29
主题
15
阅读权限
10
注册时间
2012-12-28
最后登录
2016-11-15
2#
发表于 2013-1-11 18:34:17 |只看该作者
怎么没有人能够回答我的问题呢?看来高手太少了啊,还是不愿意费心啊?

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
114873
积分
3498
帖子
22
主题
8
阅读权限
80
注册时间
2013-1-15
最后登录
2021-8-12
3#
发表于 2013-1-18 15:10:03 |只看该作者
测试效果不是很好,请你看看程序是否表达了你想要的意思。
Params
   Numeric Lots(1);//交易手数
   Numeric Offset(0);//滑点数
   Numeric Stoplose(30);//止损点数
   Numeric Timelimit(14.59);//反手时间限制
Vars
   NumericSeries Highprice;//最高价
   NumericSeries Lowprice;//最低价
   NumericSeries Enterprice;//入场价格
   NumericSeries Stoploseprice;//止损价格
Begin
   //计算日内高低价
   If(CurrentBar==0 || Date!=Date[1])
   {
     Highprice=High;
         Lowprice=Low;
   }
   Else
   {
     Highprice=Max(High,Highprice[1]);
         Lowprice=Min(Low,Lowprice[1]);
   }
   PlotNumeric("Highprice",Highprice);
   PlotNumeric("Lowprice",Lowprice);
   //零持仓
   If(MarketPosition==0)
   {
     //多头突破入场
         If(High>Highprice[1] && Low>=Lowprice[1])
         {
           Enterprice=Max(Open,High+Offset*MinMove*PriceScale);
           Buy(Lots,Enterprice);
           Stoploseprice=Open[1];
         }
         Else If(High>Highprice[1] && Low<Lowprice[1] && Open<Close)
         {
           Enterprice=Max(Open,High+Offset*MinMove*PriceScale);
           Buy(Lots,Enterprice);
           Stoploseprice=Open[1];
         }
         //空头突破入场
         If(Low<Lowprice[1] && High<=Highprice[1])
         {
           Enterprice=Min(Open,Low-Offset*MinMove*PriceScale);
           SellShort(Lots,Enterprice);
           Stoploseprice=Open[1];
         }
         Else If(Low<Lowprice && High>Highprice[1] && Open>Close)
         {
           Enterprice=Min(Open,Low-Offset*MinMove*PriceScale);
           SellShort(Lots,Enterprice);
           Stoploseprice=Open[1];
         }
   }
   //多头持仓
   If(MarketPosition==1 && BarsSinceEntry>0)
   {
     //触及前期开盘价止损
         If(Low<Stoploseprice) Sell(0,Min(Open,Stoploseprice-Offset*MinMove*PriceScale));
         //触及止损点位止损
         If(Low<Enterprice-Stoplose*MinMove*PriceScale) Sell(0,Min(Open,Enterprice-Stoplose*MinMove*PriceScale-Offset*MinMove*PriceScale));
         //盘尾反手
         If(Time==Timelimit/100 && Low<Close[1] && Low<Close[2])
         {
           Enterprice=Q_BidPrice;
           SellShort(Lots,Enterprice);
           Stoploseprice=Open[1];
         }
   }
   //空头持仓
   If(MarketPosition==-1 && BarsSinceEntry>0)
   {
     //触及前期开盘价止损
         If(High>Stoploseprice) BuyToCover(0,Max(Open,Stoploseprice+Offset*MinMove*PriceScale));
         //触及止损点位止损
         If(High>Enterprice+Stoplose*MinMove*PriceScale) BuyToCover(0,Max(Open,Enterprice+Stoplose*MinMove*PriceScale+Offset*MinMove*PriceScale));
         //盘尾反手
         If(Time==Timelimit/100 && High>Close[1] && High>Close[2])
         {
           Enterprice=Q_AskPrice;
           Buy(Lots,Enterprice);
           Stoploseprice=Open[1];
         }
   }
   Commentary("止损价:"+Text(Stoploseprice));
End

使用道具 举报

Rank: 1

精华
0
UID
114496
积分
46
帖子
29
主题
15
阅读权限
10
注册时间
2012-12-28
最后登录
2016-11-15
4#
发表于 2013-1-19 11:41:33 |只看该作者
snow35snow 发表于 2013-1-18 15:10
测试效果不是很好,请你看看程序是否表达了你想要的意思。
Params
   Numeric Lots(1);//交易手数

谢谢你的回复,总算可以有所借重啊!仔细研究后将会对于程序的设置表示感谢!

使用道具 举报

Rank: 1

精华
0
UID
114496
积分
46
帖子
29
主题
15
阅读权限
10
注册时间
2012-12-28
最后登录
2016-11-15
5#
发表于 2013-1-19 15:27:32 |只看该作者
周基金 发表于 2013-1-19 11:41
谢谢你的回复,总算可以有所借重啊!仔细研究后将会对于程序的设置表示感谢! ...

花了点时间读了下程序不知道对不对,你所说的效果不好,可能是策略没有解释好的缘故吧?
顺便问下能不能改用75分钟图呢?怎么修改可以实现?
Params
   Numeric Lots(1);//交易手数
   Numeric Offset(0);//滑点数
   Numeric Stoplose(30);//止损点数
   Numeric Timelimit(14.59);//反手时间限制
Vars
   NumericSeries Highprice;//最高价
   NumericSeries Lowprice;//最低价
   NumericSeries Enterprice;//入场价格
   NumericSeries Stoploseprice;//止损价格
Begin
   //计算日内高低价
   If(CurrentBar==0 || Date!=Date[1]) //如果最新一根K线不是第一根
   {
     Highprice=High; //最近高价为最高价
         Lowprice=Low; //最近低价为最低价
   }
   Else并且
   {
     Highprice=Max(High,Highprice[1]); //最新高价为近期最高价
         Lowprice=Min(Low,Lowprice[1]); //最新低价为近期最低价
   }
   PlotNumeric("Highprice",Highprice); //输出阳K线到图表上
   PlotNumeric("Lowprice",Lowprice); //输出阴K线到图表上

   //零持仓
   If(MarketPosition==0) //如果没有任何持仓
   {
     //多头突破入场
         If(High>Highprice[1] && Low>=Lowprice[1]) //如果最新高价大于近期最高价并且最新低价大于不等于近最低价时
         {
           Enterprice=Max(Open,High+Offset*MinMove*PriceScale); //最新收盘价突破最近高价时
           Buy(Lots,Enterprice); //固定手数开多单
           Stoploseprice=Open[1]; //以前K线开盘价止损
         }
         Else If(High>Highprice[1] && Low<Lowprice[1] && Open<Close) //并且如果最新高价大于最近高价并且最新低价小于最近低价并且开盘价小于收盘价时
         {
           Enterprice=Max(Open,High+Offset*MinMove*PriceScale); //最新收盘价突破最近高价时
           Buy(Lots,Enterprice); //固定手数开多单
           Stoploseprice=Open[1]; //以前K线开盘价止损
         }
         //空头突破入场
         If(Low<Lowprice[1] && High<=Highprice[1]) 如果最新低价小于近期最低价并且最新高价小于不等于近最高价时

         {
           Enterprice=Min(Open,Low-Offset*MinMove*PriceScale); 最新低盘价突破最近低价时
           SellShort(Lots,Enterprice); 固定手数开多单
           Stoploseprice=Open[1]; 以前K线开盘价止损
         }
         Else If(Low<Lowprice && High>Highprice[1] && Open>Close) 并且如果最新低价小于最近低价并且最新高价大于最近高价并且开盘价大于收盘价时

         {
           Enterprice=Min(Open,Low-Offset*MinMove*PriceScale); 最新低盘价突破最近低价时

           SellShort(Lots,Enterprice); 固定手数开多单

           Stoploseprice=Open[1]; 以前K线开盘价止损
         }
   }
   //多头持仓
   If(MarketPosition==1 && BarsSinceEntry>0) 如果持有多仓并且是K线为最新
   {
     //触及前期开盘价止损
         If(Low<Stoploseprice) Sell(0,Min(Open,Stoploseprice-Offset*MinMove*PriceScale));
         //触及止损点位止损
         If(Low<Enterprice-Stoplose*MinMove*PriceScale) Sell(0,Min(Open,Enterprice-Stoplose*MinMove*PriceScale-Offset*MinMove*PriceScale));
         //盘尾反手
         If(Time==Timelimit/100 && Low<Close[1] && Low<Close[2]) 当最后一分钟时最低价小于前两日收盘价时
         {
           Enterprice=Q_BidPrice;  //当时持仓价为最新价格
           SellShort(Lots,Enterprice); //固定手数开空单
           Stoploseprice=Open[1];  //以前开盘价止损
         }
   }
   //空头持仓
   If(MarketPosition==-1 && BarsSinceEntry>0)如果持有空仓并且是K线为最新
   {
     //触及前期开盘价止损
         If(High>Stoploseprice) BuyToCover(0,Max(Open,Stoploseprice+Offset*MinMove*PriceScale));
         //触及止损点位止损
         If(High>Enterprice+Stoplose*MinMove*PriceScale) BuyToCover(0,Max(Open,Enterprice+Stoplose*MinMove*PriceScale+Offset*MinMove*PriceScale));
         //盘尾反手
         If(Time==Timelimit/100 && High>Close[1] && High>Close[2])当最后一分钟时最高价大于前两日收盘价时
         {
           Enterprice=Q_AskPrice;  //当时持仓价为最新价格
           Buy(Lots,Enterprice);  //固定手数开多单
           Stoploseprice=Open[1];  //以前开盘价止损
         }
   }
   Commentary("止损价:"+Text(Stoploseprice));  //移到K线时止损价以文字显示
End

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-23 17:44

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部