http://www.7klian.com

如安在生意业务计策中利用多个时间框架

)
    else:
        self.exchange, self.symbol, utils.anchor_timeframe(self.timeframe)
    def go_short(self):
        return -1
        stop = entry + 3 * self.atr
Uncaught Exception: RouteNotFound: Bellow route is required but missing in your routes: 
def should_short(self) -> bool:
        self.stop_loss = qty, stop
错误很明明。假如我在其他时间范畴内利用candle,也应该将其添加到我的route.py文件中。我的生意业务蹊径必需保持稳定,因为我只生意业务一个仓位,所以我利用的任何其他时间框架都被视为特另外candle。
]

计策中界说多个时间框架
    if self.price > ema:
    def go_long(self):
你们中的有些人大概对此很熟悉,而且想知道前瞻性毛病是否对我们方才调查到的功效晋升有辅佐。请安心,事实并非如此。Jesse框架照顾了t背后的前瞻性毛病。
    return self.short_ema < self.long_ema and self.anchor_trend == -1
        entry = self.price
# trading routes
        return ta.atr(self.candles)

让我们添加一个返回大趋势的新属性要领。我将返回1暗示上升趋势,返回-1暗示下降趋势:
from jesse.strategies import Strategy
        self.sell = qty, entry
Jesse提供了一个实用东西助手来计较这个值,我将利用这个值。
3. 夏普比率从0.62增加到0.86。
        return 1
这次回测顺利举办。功效如下:

class SampleTrendFollowing(Strategy):
您大概会问我如何知道锚按时间范畴是哪个时间范畴?常用公式是生意业务时间的4倍或6倍。譬喻在我的环境下,4h的锚按时间框架为:
修改路由
这是我最终获得的完整
计策:
这是我的routes.py此刻的样子:
        self.buy = qty, entry
        return self.short_ema < self.long_ema
# I wrote
def should_long(self) -> bool:
    ‘Bitfinex’, ‘BTCUSD’, utils.anchor_timeframe(‘4h’)
2. 总成交生意业务淘汰,这意味着我获得的进入信号更少,这是预期的,因为我添加了另一个进入条件到我的进入法则。
    self.exchange, self.symbol, utils.anchor_timeframe(self.timeframe)
此刻我将输入法则更新为包罗anchor_trend:
    ema = ta.ema(anchor_candles, 100)
    def should_cancel(self) -> bool:
1. 净利润从31.44%增加到48.42%,这意味着,更多的钱!
        self.stop_loss = qty, stop
这一次,我将利用
多个时间框架,看看我是否可以改进功效。有履历的生意业务者在他们的手工生意业务中利用的一个能力是调查更大时间范畴的趋势(可能他们称之为锚按时间范畴)。这个简朴的能力凡是会增加你的得胜率,以淘汰买入信号的数量。
    def atr(self):
(‘Bitfinex’, ‘BTCUSD’, ‘1D’)
这个想法可以扩展。譬喻假如您正在生意业务以太币,则大概要利用的锚定趋势,因为很明明,比特币是市场的王者,而且对其他代币的价值发生庞大影响。

    return self.short_ema > self.long_ema and self.anchor_trend == 1
        profit_target = entry – 5 * self.atr

这是自2019年1月1日至2020年5月1日以4h时间范畴回测的功效:

        qty = utils.risk_to_qty(self.capital, 3, entry, stop)
routes = [
# instead of 
        self.take_profit = qty, profit_target
结论
from jesse import utils
4. 胜率从47%增加到50%。
当你在计策中利用多个时间段时,你不会获得同样的晋升。但在我看来,至少实验一下是有意义的。
        stop = entry – 3*self.atr
    # use self.get_candles() to get the candles for the anchor timeframe
当在算法计策中利用多个时间段时,,前瞻性毛病是一个严重的问题。简而言之,这意味着利用将来的数据。
        return self.short_ema > self.long_ema
如您所见,这次我利用self.get_candles而不是self.candles。我还利用了其他一些内置属性,而不是利用硬编码的字符串:
]
        profit_target = entry + 5*self.atr
    (‘Bitfinex’, ‘BTCUSD’, ‘6h’, ‘SampleTrendFollowing’),
    )
此刻我再次执行回测,以查察此变动将如何影响回测功效,但呈现此错误:
        entry = self.price
错误汇报我,我的蹊径中缺少(’Bitfinex’,’BTCUSD’,’1D’);因此将其添加到extra_candles列表中。这就是我的route.py应该酿成的样子:
        qty = utils.risk_to_qty(self.capital, 3, entry, stop)
routes = [
@property

在本教程中,我将先容一个如安在计策中利用多个时间框架的示例。
]

extra_candles = [
import jesse.indicators as ta
# in case your strategy required extra candles, timeframes, …
    anchor_candles = self.get_candles(
)
]
    def should_long(self) -> bool:
    @property
anchor_candles = self.get_candles(
这样当我变动蹊径以实验其他生意业务所,生意业务品种和时间范畴时,无需变动计策代码。
    (‘Bitfinex’, ‘BTCUSD’, ‘6h’, ‘SampleTrendFollowing’),
        return ta.ema(self.candles, 21)

操作锚按时间框架确定市场的更大趋势,我们的计策指标有了明明的提高。
extra_candles = [
        self.take_profit = qty, profit_target
# in case your strategy required extra candles, timeframes, …
    @property

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读