精华内容
下载资源
问答
  • 量化交易之Dual Thrust策略

    千次阅读 2021-01-05 09:53:58
    一、Dual Thrust策略介绍 Dual Thrust,由Michael Chalek在20世纪80年代开发,曾被FutureTrust杂志评为最赚钱的策略之一。Dual Thrust系统策略十分简单,思路简明,但正所谓大道至简,该策略适用于股票、期货、...

    一、Dual Thrust策略介绍

     

    Dual Thrust,由Michael Chalek在20世纪80年代开发,曾被FutureTrust杂志评为最赚钱的策略之一。Dual Thrust系统策略十分简单,思路简明,但正所谓大道至简,该策略适用于股票、期货、外汇等多类型市场,如果配合上良好的资金管理和策略择时,可以为投资者带来长期稳定的收益。

     

    Dual Thrust是典型的区间突破型策略,以今日开盘价加减一定比例的N周期内的价格振幅(Range),确定上下轨;

     

    Dual Thrust对于多头和空头的触发条件,考虑了非对称的幅度,做多和做空参考的Range可以选择不同的周期数,也可以通过参数K1和K2来确定。


     

    具体计算过程如下:

     

    1. N日High的最高价HH, N日Close的最低价LC;

    2. N日Close的最高价HC,N日Low的最低价LL;

    3. Range = Max(HH-LC,HC-LL)

    4. 上轨(upperLine )= Open + K1*Range

    5. 下轨(lowerLine )= Open + K2*Range

     

    突破上轨做多,跌破下轨翻空

     

    下图可以帮助我们形象理解:
     


     

    二、Dual Thrust策略验证


     

    (1)当价格向上突破上轨时,如果当时持有空仓,则先平仓,再开多仓;如果没有仓位,则直接开多仓;

     

    (2)当价格向下突破下轨时,如果当时持有多仓,泽县平川,再开空仓;如果没有仓位,则直接开空仓;


     

    策略的核心代码如下:

     


     

    14年1月1日至17年的回溯结果如下:

     


     

    策略收益还是不错的,最大回撤是21.16%。



     

    三、改进的Dual Thrust策略介绍


     

    在前人的基础上,初始策略中Ks、Kx的值均为0.7,然后加入绝对值止盈止损,加入KDJ指标,对市场趋势进行跟踪,动态调整Ks、Kx的值,当市场处于多头市场时(K>50,D>50,J>50),调整Ks为0.6使之小于Kx(值为0.7),此时容易触发多头的条件,当市场处于空头市场(K<50,D<50,J<50),调整Kx为0.6使之小于Ks(值为0.7),此时容易触发空头的条件。

     

    KDJ指标可以在镭矿轻松获取到,就不再介绍其计算过程。


     

    四、改进的Dual Thrust策略验证

     

    策略核心代码:

     


     

    改进的策略在原先的策略基础上,利用KDJ指标计算了K、D、J的值,如果三者均大于50,则改变k1的值为0.6,如果均小于50,则改变k2的值为0.6。

     

    改进的Dual Thrust策略14年1月1日至今的回溯结果如下:

     


     

    收益要高于改进前的策略,更为明显的是,最大回撤变得相当小,为1.93%。

    展开全文
  • DualThrust交易策略测试结果,图片加成交明细
  • Dual Thrust 策略

    千次阅读 2019-02-18 14:04:27
    Dual Thrust策略是一个很经典的策略。常年排在国外前10大流行策略之一! 绩效测试(橡胶期货,2016/1/1~2018/1/4,主图1分K,子图30分K,回测换月跳空有处理些) 2017年策略陷入瓶颈,2016年的趋势年,策略表现非常...

    来源:mc官网

    Dual Thrust策略是一个很经典的策略。常年排在国外前10大流行策略之一!

    绩效测试(橡胶期货,2016/1/1~2018/1/4,主图1分K,子图30分K,回测换月跳空有处理些)
    2017年策略陷入瓶颈,2016年的趋势年,策略表现非常良好!

    策略代码说明
    1.模型体现的基本思想:

    首先,HH到LL这个范围框出了过去N天中价格的移动区间。HC和LC表示的是过去N天内价格的波动情况。如果HC和LC都在中间位置,那么表示价格在N天内的高低波动只是一种偶然情况。其余时间波动都很小,而且市场呈现出不明朗的趋势。在HH和LL范围固定的情况下,突破需要的点数相对较少。

    如果过去N天内价格都在上涨或下跌,呈现单边趋势,那么则表现为HH和LL的范围较大,HC和LC都趋近于箱体的上/下沿,则表现为较大的buyrange 和 sellrange,于是乎,价格产生突破的话需要的点数也就更多一些。

    这样的设计,体现了突破策略的一个基本思路,即“大行情大突破,小行情小突破”。

    2.我们进一步研究一下策略在不同行情中的表现情况:

    (1)行情连续走强。例如,前日大涨,昨日大涨,今日也大涨。这时,策略会一直向上突破,死死扣住持有的多仓。

    (2)行情由强转弱,进入平台期。例如,前日大涨,昨日小涨,今日微涨或微跌。这时,策略仍然会一直持有多仓,不产生任何有效突破。

    (3)行情由弱转强。例如,前日小涨,昨日中涨,今日大涨。这时,策略会针对之前持有的仓位采取进一步的措施。如果之前持有的是反向仓位,则会反手。如果之前持有的是同向仓位,则会一直抱住。

    (4)行情持续保持弱势,波动越来越弱。但温和同向变动。这时,如果持有的是同向仓位,那么不会有什么问题。但如果持有的是反向仓位,问题就来了。可能价格一直不突破,从而导致连续亏损。这种亏损可能持续时间不会很长,因为随着短K棒的逐渐增加,突破所需要的点数也就越来越小,很容易突破做反手。

    (5)行情急速反转。这时,要取决于k线长度的相对大小。如果反转的幅度远小于之前的幅度,且幅度逐渐缩小,那么策略要承受较大的利润回吐或亏损。如果反转幅度大于之前的幅度,那么会直接反手。所以,为了保险起见,作者引入了小于1的参数K1和K2,保证突破区间逐渐收敛,使得投资人不至于长时间一直持有一个亏损仓位。

    (6)策略最大的风险来自于隔日风险。如果连续出现两根阳线,但后一根阳线远低于前一根,这时的问题在于

    ,策略会一直持有这样的亏损仓位而不采取任何动作。

    3.由于没有止损止盈模块,模型的表现实际上并不是十分稳定。

    这可以说是模型的一个缺陷。模型是一个永远在市的策略,碰到信号以后就反手。但是,进一步设定固定止损位后,发现模型的盈利状况反而下降了。我进一步调试止损位,发现只有当止损位大于1000跳,也就是对应橡胶的5000个点时,策略的盈利才不会受到止损位的影响。也就是说,最大回撤高达保证金账户的300%,也就是说,如果全部资金投入这样的策略的话,已经爆仓无数次了。策略风险极大。所以,看上去很美的策略并不一定真的敢用。

    1000跳的波动已经远远超过了涨跌停板的限制,说明策略在某一时间段连续持有巨额亏损仓位达数日之久。而当初的突破信号可能已经与当前的行情不再有任何关联,说明这样的盈利很有可能存在运气的成分。

    另一方面,策略缺少止盈部分,所以,也不会锁住任何利润。当然,止盈止损要结合在一起看,如果只有止损,没有止盈,那么策略很可能就是一直止损出场,没有盈利。

    4.可以借鉴和提升之处

    一是这个策略用一个很简单的逻辑,融入了顺势突破的精髓和一定的止损功能,在不同的行情内体现出不同的变化。设计人思维之独特令人叹服。二是该策略如果转变成日内策略,也许会有一定的效果改善。具体有待各位朋友去挖掘。三是该策略突破区域的设置和参数的运用,似乎缺少一个令人信服的理由。未来的盈利能力值得怀疑。

    策略使用注意事项
    策略插入时会出现如下错误,因为本策略需搭配子图商品,可以在主图商品上右键-〉插入商品,选择不同周期的商品。

    代码:

    //Use data2 as day bar.

    //Use data1 as minute bar.

    Inputs:k1( 0.5),k2 (0.5);

    inputs:Mday(1 ),Nday (1),lots(1), daystart(900 ), dayend(1500 ),freq_min (10);//10 min bars, you may chance to other frequency

    vars: dayclose(0 ), dayhigh(0 ),daylow (0);

    vars: sellrange(0 ),buyrange (0),buytrig(0), selltrig(0 );

    Vars: HH( 0),HC (0),LC(0), LL( 0);

    vars: buyposition(0 ),sellposition (0);

    vars: opentoday(0 );

    //give a start value for open price of today(data1)

    if time >=daystart and time <=daystart+ freq_min then begin

    opentoday=open ;

    end;

    HH=highest (high ,Mday ) of data2 ;

    HC=highest (close ,Mday ) of data2 ;

    LL=lowest (low ,Mday ) of data2 ;

    LC=lowest (close ,Mday ) of data2 ;

    if (HH-LC)>=( HC- LL) then sellrange=HH -LC

    else sellrange =HC -LL ;

    HH = Highest (High ,Nday ) of data2 ;

    HC = Highest (Close ,Nday ) of data2 ;

    LL = Lowest (Low ,Nday ) of data2 ;

    LC = Lowest (Close ,Nday ) of data2 ;

    If((HH - LC) >= ( HC - LL ))then buyrange = HH - LC

    Else buyrange = HC - LL;

    buytrig = k1* buyrange;

    selltrig = k2* sellrange;

    buyposition = opentoday +buytrig ;

    sellposition = opentoday -selltrig ;

    If(MarketPosition = 0) then

    begin

    If High >=buyposition then

    Buy lots shares next bar at buyposition stop ;

    If Low <=sellposition then

    SellShort lots shares next bar at sellposition stop;

    end;

    if marketposition =-1 then

    begin

    if high >=buyposition then

    buy lots shares next bar at buyposition stop ;

    end;

    if marketposition =1 then

    begin

    if low <=sellposition then

    sellshort lots shares next bar at sellposition stop ;

    end;

    //setstoploss(minmove*30);

    //draw trendlines

    if (time>= dayend-3 *freq_min and time<=dayend ) then begin

    tl_new(date ,0900,buyposition, date,time ,buyposition );

    tl_new(date ,0900,sellposition, date,time ,sellposition );

    end;

    展开全文
  • 【vn.py】源码解析之 Dual Thrust 策略

    千次阅读 2019-08-21 11:51:48
    文章目录Dual Thrust 策略Dual Thrust 策略源码分析1、完整源码2、策略参数与变量3、策略执行逻辑 Dual Thrust 策略 Dual Thrust 策略是 Michael Chalek 在80 年代开发的一种通道突破策略,曾经被Future Thruth杂志...

    Dual Thrust 策略

    Dual Thrust 策略是 Michael Chalek 在80 年代开发的一种通道突破策略,曾经被Future Thruth杂志评为最赚钱的策略之一, Dual Thrust常常用于日内CTA策略或者日间CTA策略。到目前为止,Dual Thrust 仍然在自动化交易系统中排名第二左右。由于其对于多种品种的普适性,所以也被广泛应用于各种股票、期货、货币等市场。

    Dual Thrust 策略在做日内策略时的思想很简单,以当日的开盘价为基准设定上下通道进行突破,上下通道是以当日开盘价加减一定比例的范围Range而确定,然后日内突破上轨平空开多,突破下轨平多开空。这个范围Range由前N日的四个价位来确定 Range = Max(HH-LC, HC-LL),其中HH是前N日的High的最高价,LC是前N日的Close的最低价,HC是前N日Close的最高价,LL是前N日Low的最低价,在计算这个范围指标时有点类似平均真实波动指标(Average True Range,ATR),但是还是有很大区别的毕竟平均真实波动是 J. Welles Wilder 在1978提出的技术指标。

    引入了多日的价格可以使得一定时期的范围Range相对稳定,当然也有直接以昨日的范围Range作为今日突破的基准。另外,Dual Thrust策略没有单独的止损,是一个趋势反转系统,也就说当出现反向信号时也就意味着平仓。

    所以总结上面所说,上通道是 Open + K1 * Range;下通道是 Open + K2 * Range。需要设定的参数除了N之外,还有作为范围Range比例的系数K1和K2,通常这两个系数并不是一样的,这样也就导致了做多和做空的的触发条件是非对称的。

    Dual Thrust 策略源码分析

    由于前面已经写过关于CTA策略执行的流程和代码的架构,所以下面将主要围绕策略的参数与变量以及策略的主要执行逻辑进行分析。

    1、完整源码
    from datetime import time
    from vnpy.app.cta_strategy import (
        CtaTemplate,
        StopOrder,
        TickData,
        BarData,
        TradeData,
        OrderData,
        BarGenerator,
        ArrayManager,
    )
    
    
    class DualThrustStrategy(CtaTemplate):
        """"""
    
        author = "用Python的交易员"
    
        fixed_size = 1
        k1 = 0.4
        k2 = 0.6
    
        bars = []
    
        day_open = 0
        day_high = 0
        day_low = 0
    
        range = 0
        long_entry = 0
        short_entry = 0
        exit_time = time(hour=14, minute=55)
    
        long_entered = False
        short_entered = False
    
        parameters = ["k1", "k2", "fixed_size"]
        variables = ["range", "long_entry", "short_entry", "exit_time"]
    
        def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
            """"""
            super(DualThrustStrategy, self).__init__(
                cta_engine, strategy_name, vt_symbol, setting
            )
    
            self.bg = BarGenerator(self.on_bar)
            self.am = ArrayManager()
            self.bars = []
    
        def on_init(self):
            """
            Callback when strategy is inited.
            """
            self.write_log("策略初始化")
            self.load_bar(10)
    
        def on_start(self):
            """
            Callback when strategy is started.
            """
            self.write_log("策略启动")
    
        def on_stop(self):
            """
            Callback when strategy is stopped.
            """
            self.write_log("策略停止")
    
        def on_tick(self, tick: TickData):
            """
            Callback of new tick data update.
            """
            self.bg.update_tick(tick)
    
        def on_bar(self, bar: BarData):
            """
            Callback of new bar data update.
            """
            self.cancel_all()
    
            self.bars.append(bar)
            if len(self.bars) <= 2:
                return
            else:
                self.bars.pop(0)
            last_bar = self.bars[-2]
    
            if last_bar.datetime.date() != bar.datetime.date():
                if self.day_high:
                    self.range = self.day_high - self.day_low
                    self.long_entry = bar.open_price + self.k1 * self.range
                    self.short_entry = bar.open_price - self.k2 * self.range
    
                self.day_open = bar.open_price
                self.day_high = bar.high_price
                self.day_low = bar.low_price
    
                self.long_entered = False
                self.short_entered = False
            else:
                self.day_high = max(self.day_high, bar.high_price)
                self.day_low = min(self.day_low, bar.low_price)
    
            if not self.range:
                return
    
            if bar.datetime.time() < self.exit_time:
                if self.pos == 0:
                    if bar.close_price > self.day_open:
                        if not self.long_entered:
                            self.buy(self.long_entry, self.fixed_size, stop=True)
                    else:
                        if not self.short_entered:
                            self.short(self.short_entry,
                                       self.fixed_size, stop=True)
    
                elif self.pos > 0:
                    self.long_entered = True
    
                    self.sell(self.short_entry, self.fixed_size, stop=True)
    
                    if not self.short_entered:
                        self.short(self.short_entry, self.fixed_size, stop=True)
    
                elif self.pos < 0:
                    self.short_entered = True
    
                    self.cover(self.long_entry, self.fixed_size, stop=True)
    
                    if not self.long_entered:
                        self.buy(self.long_entry, self.fixed_size, stop=True)
    
            else:
                if self.pos > 0:
                    self.sell(bar.close_price * 0.99, abs(self.pos))
                elif self.pos < 0:
                    self.cover(bar.close_price * 1.01, abs(self.pos))
    
            self.put_event()
    
        def on_order(self, order: OrderData):
            """
            Callback of new order data update.
            """
            pass
    
        def on_trade(self, trade: TradeData):
            """
            Callback of new trade data update.
            """
            self.put_event()
    
        def on_stop_order(self, stop_order: StopOrder):
            """
            Callback of stop order update.
            """
            pass
    
    
    2、策略参数与变量

    从下面的代码中可以看出超参有三个,范围Range比例的系数 K1、K2 以及仓位数 fixed_size。需要维护的变量有范围 range、上下通道 long_entry、short_entry。由于是日内交易,所以策略中还设定了一个每天的退场时间 exit_time 为14:55。另外还需要注意一下,就是vnpy中的Dual Thrust策略和上面介绍的还是有些区别的,主要在于vnpy中range是由昨日的最高价和最低价确定的,这个后面策略逻辑处就可以看出。总而言之,Dual Thrust 策略的参数还是较少的。

        fixed_size = 1
        k1 = 0.4
        k2 = 0.6
    
        bars = []
    
        day_open = 0
        day_high = 0
        day_low = 0
    
        range = 0
        long_entry = 0
        short_entry = 0
        exit_time = time(hour=14, minute=55)
    
        long_entered = False
        short_entered = False
    
        parameters = ["k1", "k2", "fixed_size"]
        variables = ["range", "long_entry", "short_entry", "exit_time"]
    
    3、策略执行逻辑

    同前面的Double MA一样,在对策略进行变量初始化时,也需要加载10天的1Min级别数据。然后主要的逻辑也是在on_bar()函数中,也就是说这个策略也是Bar驱动的。
    首先,需要先清空所有未成交的委托单,然后记录下上一个bar和当前的bar。

            self.cancel_all()
    
            self.bars.append(bar)
            if len(self.bars) <= 2:
                return
            else:
                self.bars.pop(0)
            last_bar = self.bars[-2]
    

    如果上一个bar的日期和当前bar的日期不同,则说明当前bar是今天的第一个bar,上一个bar是昨日的最后一个bar,然后通过昨日的最高价和最低价计算range;否则的话,就通过 max(self.day_high, bar.high_price)和min(self.day_low, bar.low_price) 记录每日的bar的最高价和最低价,从而确定range。然后,以K1和K2与range来设置上下通道long_entry和short_entry的大小。

            if last_bar.datetime.date() != bar.datetime.date():
                if self.day_high:
                    self.range = self.day_high - self.day_low
                    self.long_entry = bar.open_price + self.k1 * self.range
                    self.short_entry = bar.open_price - self.k2 * self.range
    
                self.day_open = bar.open_price
                self.day_high = bar.high_price
                self.day_low = bar.low_price
    
                self.long_entered = False
                self.short_entered = False
            else:
                self.day_high = max(self.day_high, bar.high_price)
                self.day_low = min(self.day_low, bar.low_price)
    
            if not self.range:
                return
    

    在得到昨日的范围range之后就可以判断是否满足开仓条件了。如果当前bar的时间在退场时间之前就进行判断是否满足开平仓条件,否则的话就直接以限价单进行平今。

    在退场时间之前判断是否满足开平仓条件时:
    1、如果不持仓:
    并且当前bar的close大于当日开盘价并且没有多头入场,就以上轨道long_entry的价位开一笔停止单。
    并且当前bar的close小于当日开盘价并且没有空头入场,就以下轨道short_entry的价位开一笔停止单。
    2、如果持有多头,就以下轨道short_entry的价位开一笔停止单来平仓,并且如果没有空头入场的话再以下轨道short_entry的价位开一笔停止单来开仓;如果持有空头,就以上轨道long_entry的价位开一笔停止单来平仓,并且如果没有多头入场的话再以上轨道long_entry的价位开一笔停止单来开仓。

    注意上面开出的委托单都是以停止单的形式开出的,停止单也就意味着是需要在bar的内部进行交易撮合,在bar内部价格突破时开仓。vnpy中的Dual Thrust策略有些类似于反复试探的思想,每个bar内部进行撮合交易,发出订单,没有撮合成功则在新的bar接收时撤掉之前发出的订单。毕竟是日内策略,如果还是以1-min的bar基础上进行交易未免交易机会也确实会有些少,而通过停止单的形式则正好可以满足其日内突破的要求。

            if bar.datetime.time() < self.exit_time:
                if self.pos == 0:
                    if bar.close_price > self.day_open:
                        if not self.long_entered:
                            self.buy(self.long_entry, self.fixed_size, stop=True)
                    else:
                        if not self.short_entered:
                            self.short(self.short_entry,
                                       self.fixed_size, stop=True)
                elif self.pos > 0:
                    self.long_entered = True
                    self.sell(self.short_entry, self.fixed_size, stop=True)
                    if not self.short_entered:
                        self.short(self.short_entry, self.fixed_size, stop=True)
                elif self.pos < 0:
                    self.short_entered = True
                    self.cover(self.long_entry, self.fixed_size, stop=True)
                    if not self.long_entered:
                        self.buy(self.long_entry, self.fixed_size, stop=True)
            else:
                if self.pos > 0:
                    self.sell(bar.close_price * 0.99, abs(self.pos))
                elif self.pos < 0:
                    self.cover(bar.close_price * 1.01, abs(self.pos))
            self.put_event()
    
    展开全文
  • 一)Dual Thrust策略简述 Dual Thrust,由Michael Chalek在20世纪80年代开发,曾被FutureTrust杂志评为最赚钱的策略之一。Dual Thrust系统策略十分简单,思路简明,但正所谓大道至简,该策略适用于股票、期货、外汇...

    一、模型概述

    一)Dual Thrust 策略简述

    Dual Thrust,由Michael Chalek在20世纪80年代开发,曾被FutureTrust杂志评为最赚钱的策略之一。Dual Thrust系统策略十分简单,思路简明,但正所谓大道至简,该策略适用于股票、期货、外汇等多类型市场,如果配合上良好的资金管理和策略择时,可以为投资者带来长期稳定的收益。

    Dual Thrust是典型的区间突破型策略,以今日开盘价加减一定比例的N周期内的价格振幅(Range),确定上下轨;

    Dual Thrust对于多头和空头的触发条件,考虑了非对称的幅度,做多和做空参考的Range可以选择不同的周期数,也可以通过参数K1和K2来确定。

    具体计算过程如下:

    (1)N日High的最高价HH, N日Close的最低价LC;

    (2)N日Close的最高价HC,N日Low的最低价LL;

    (3)Range = Max(HH-LC,HC-LL)

    (4)上轨(upperLine )= Open + K1*Range

    (5)下轨(lowerLine )= Open + K2*Range

     

    突破上轨做多,跌破下轨翻空。

     

    (二)构造系统

    (1)当价格向上突破上轨时,如果当时持有空仓,则先平仓,再开多仓;如果没有仓位,则直接开多仓;

    (2)当价格向下突破下轨时,如果当时持有多仓,泽县平川,再开空仓;如果没有仓位,则直接开空仓;

     

    Dual Thrust 在形式上和开盘区间突破策略类似,也是较为常见的日内交易策略之一,是以今日开盘价加减range 的一定比例确定上下轨,日内价格突破上轨时做多,价格突破下轨时做空。不同点主要体现在两方面:

    (1)DualThrust在Range的设置上,引入前N 日的四个价位,使得一定时期内的Range 相对稳定;

    (2)DualThrust 对于多头和空头的触发条件,考虑了非对称的幅度,做多和做空参考的Range可以选择不同的周期数,也可以通过参数Ks和Kx来确定。当Ks>Kx时,下轨距离中轴较近,容易触发空头的条件;当Ks<Kx时,上轨距离中轴较近,容易触发多头的条件。

    所以在使用该策略时,既可以参考历史数据测试的最优参数,也可以从其他大周期的技术指标入手,或根据自己对后势的判断,阶段性地动态调整Ks和Kx的值。

     

    (三)Dual Thrust的特点

    (1)DualThrust策略大都是持续在市的,持续在市就是没有空仓,一旦开始交易不是空头就是多头,在一天交易结束时不平仓,如果多头趋势没了,不是平仓后持空仓,而是卖掉后再开空头,相当于两次空头。

    (2)DualThrust是美国标普500股指期货10大交易系统之一(2005年前),也是唯一公布源码的策略,因此已经在海外被广为流传,国内金融人士直接将海外代码翻译使用。在股指期货推出的第一年,的确获取了高额利润。但在后期,券商和期货公司为了更好的服务客户,几乎每位客户都赠送这两套模型。随着越来越多的投资者使用这类模型,这一优秀策略寿命迅速到期,目前这些模型以及无法稳定获利。

    (3)Dual thrust原策略不仅适用于日间,也适用于日内。如果将该系统用于日间交易,不得不面对的一个问题是跳空。因为系统每天的中轴是当日的开盘价,上下轨是通过中轴加减前一日的价格计算得到的幅度而得出的。假设第二天反向跳空幅度很大但是日内的价格波动不大,此刻价格无法触及反向的轨道,是无法发出反转信号的,因为随着跳空中轴也偏离前一日价格很多,上下轨跟随中轴进行了很大偏移,尽管此时的价格与前一日的差值已经很大,但是相对开盘价波动并不大。如果运气再不好一点,第三日又出现了跳空,那么亏损就非常大了。

    来源:星潮FOF

    ----------------------------------------------------

    拓展阅读:

    1.一个量化策略师的自白(好文强烈推荐)

    2.市面上经典的量化交易策略都在这里了!(源码)

    3.期货/股票数据大全查询(历史/实时/Tick/财务等)

    4.干货| 量化金融经典理论、重要模型、发展简史大全

    5.从量化到高频交易,不可不读的五本书

    6.高频交易四大派系大揭秘

    展开全文
  • Dual Thrust(期货)

    2020-12-07 16:56:55
    Dual Thrust 1. 原理 由Michael Chalek在20世纪80年代开发的Dual Thrust策略是一个趋势跟踪策略。 其核心思想是定义一个区间,区间的上界和下界分别为支撑线和阻力线。当价格超过上界时,如果持有空仓,先平再开...
  • CTA策略01_dualThrust

    千次阅读 2019-04-13 10:26:40
    ## dualThrust介绍 Dual Thrust是一个趋势跟踪系统,由Michael Chalek在20世纪80年代开发,曾被Future Thruth杂志评为最赚钱的策略之一。Dual Thrust系统具有简单易用、适用度广的特点,其思路简单、参数很少,配合...
  • 1.Dual Thrust 交易策略 1.1Dual Thrust策略介绍 Dual Thrust是一个趋势跟踪系统,由Michael Chalek在20世纪80年代开发,曾被Future Thruth杂志评为最赚钱的策略之一。Dual Thrust系统具有简单易用、适用度广的特点...
  • Dual Thrust直译为“双重推力”,是上个世纪80年代由Michael Chalek开发的一个交易策略,曾经在期货市场风靡一时。由于策略本身思路简单,参数很少,因此可以适应于很多金融市场,正是因为简单易用和普适性高的特点...
  • Dual Thrust是一个趋势跟踪系统,由Michael Chalek在20世纪80年代开发,曾被Future Thruth杂志评为最赚钱的策略之一。本策略回测收益率24.14%,最大回撤20.65%,夏普比率1.99
  • 申万宏源_20160901_技术指标测试大全之二十八— Dual Thrust.pdf
  • 详解程序化交易Dual Thrust策略

    千次阅读 2018-09-10 14:16:00
    Dual Thrust系统是 Michael Chalek 在80 年代开发的 Dual Thrust。在自动化交易排名中,目前为止,仍然排名第二左右。下表是我自己按5分钟周期跑回测的结果,效果非常好: 这是上表成绩最好的沪铜指数的成绩走势图:...
  • 1. Dual Thrust交易策略简介 Dual Thrust交易算法是由Michael Chalek开发的着名策略。它通常用于期货,外汇和股票市场。Dual Thrust的概念类似于典型的突破系统,使用双推力历史价格构建更新回溯期 - 理论上使其在...
  • Dual Thrust交易算法介绍 Dual Thrust交易算法是由Michael Chalek开发的著名量化交易策略。它通常用于期货,外汇和股票市场。Dual Thrust的概念属于典型的突破交易系统,其运用“双推力”系统根据历史价格构建更新的...
  • Dual Thrust是一个趋势跟踪系统,由Michael Chalek在20世纪80年代开发,曾被Future Thruth杂志评为最赚钱的策略之一。Dual Thrust系统具有简单易用、适用度广的特点,其思路简单、参数很少,配合不同的参数、止盈...
  • 商品期货多品种Dual Thrust策略 Dual Thrust 是一个经典的趋势策略,众所周知,趋势策略在震荡行情下表现很不好。 如果改造成一个多品种的策略,是否会有好的表现呢? 策略架构 策略原理很简单,我们仅仅是研究...
  • Dual Thrust 商品期货 (注释版)

    千次阅读 2018-06-15 11:53:54
    Dual Thrust 商品期货 (注释版) 基本原理 在当天收盘,计算两个值: 最高价-收盘价,和收盘价-最低价。然后取这两个值较大的那个,乘以k值,结果称为触发值。 在第二天开盘,记录开盘价,然后在价格超过...
  • 今天看到了Dual Thrust系统的介绍,具体参见详解程序化交易Dual Thrust策略-雪球。 改写了一下用于股票交易。 使用第n-1日(前天)以前N天的数据计算Range,第n-1日(昨天)的开盘价作为Open,第n-1日的收盘价或第...
  • Dual Thrust策略

    千次阅读 2019-03-11 21:07:12
    介绍参考: 国内4种常用日内CTA策略介绍及实现:... 要点: 日High的最高价HH, N日Close的最低价LC N日Close的最高价HC,N日Low的最低价LL Range = Max(HH-LC,HC-LL) BuyLine = Open + K1*Range SellLi...
  • Thrust: Code at the speed of light Thrust is a C++ parallel programming library which resembles the C++ Standard Library. Thrust's high-level interface greatly enhances programmer productivity while ...
  • 最近发明者量化交易平台支持了富途证券,进一步增加了一个可以实战程序化交易、量化交易的市场。有很多古老的策略可以拿出来玩一玩,最起码可以测试一下模拟盘...股票版Dual Thrust策略 接下来就要讲一下非常经典的策略
  • 导语: “趋势”这个字眼,大家肯定不陌生,炒股票的老股民天天口里说着 “趋势为王”, 那么今天我们向大家介绍一个趋势跟踪交易系统:Dual Thrust ,其简单明确,适用度广。 一、趋势跟踪系统阐述 Dual Thrust ...
  • 量化策略回测DualThrust

    千次阅读 2019-06-13 21:52:22
    回测时间:20130101-20190610 手续:卖买各万分之一 滑点:买入卖出各一跳 初始资金:各品种不同,每个品种1手的资金
  • 新策略构思 dual thrust

    2014-02-24 15:21:00
    根据dual truest的策略,因为是针对日线级别的。同理我们可以根据60分钟级别开发出一套策略,等有时间写在下面 转载于:https://www.cnblogs.com/TivonStone/p/3564687.html...
  • Dual Thrust系统具有简单易用、适用度广的特点,其思路简单、参数很少,配合不同的参数、止盈止损和仓位管理,可以为投资者带来长期稳定的收益,被投资者广泛应用于股票、货币、贵金属、债券、能源及股指期货市场等...
  • 未经授权,严禁转载 引言 在程序化交易中,趋势交易是最主要的交易方式,如果我们能想办法抓住这个趋势,就能够获得这部分趋势行情的收益。那么如何能够抓住趋势呢?最简单常用的一种方式就是均线,我们认为当短期...
  • 像商品期货的R-Breaker 策略、Dual-Thrust 策略等,也都可以大同小异地应用到国债期货的日内趋势策略和相关高频交易中。具体可以参考QuantPlus公众号12月13日的文章《重磅干货:商品期货市场常见的量化交易策略》。 ...
  • Dual Thrust对于多头和空头的触发条件,考虑了非对称的幅度,做多和做空参考的Range可以选择不同的周期数,也可以通过参数K1和K2来确定。 Dual Thrust策略 计算参数及上下轨 (1). N日High的...
  • 2008年美国S&P500交易系统的TOP10排名为:Turbo Trader Pro、Anticipation、Samurai 35、Dual Thrust、Maxim、Mesa T-Notes、Qtech Bellies、Keystone、Sledge Hammer、Delphi Universal。 尽管国外市场上的交易...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

dualthrust