当前位置:首页区块链如何用algotrade编写比特币的高级趋势跟踪策略

如何用algotrade编写比特币的高级趋势跟踪策略

如何用algotrade编写比特币的高级趋势跟踪策略

在本文开头,需要理解一些贸易术语:

职位:指本行目前所有可用资金的总和。

蜡烛:就像一个条形图,这个图表显示了价格的高低以及开盘价和收盘价。蜡烛的形状反映了这些价格之间的关系。

RSI:它可以识别趋势何时到达当前方向的终点,以及超卖和超买的市场状况。

趋势跟踪通常是用算法开始交易并赚钱的最简单方法。在上一篇文章中,我编写了一个趋势跟踪策略,它甚至通过使用更长的时间框架来确定趋势,从而提高了性能。但这是一个简单的一进一出的策略。

本教程的重点是让您开始了解Jesse的一些功能,这些功能将帮助您编写大多数趋势跟踪策略。这些功能很少:

一。在两个点退出交易,一个是固定价格,另一个是动态价格。

二。退出半位后更新止损至盈亏平衡。

3过滤损益率低的交易。

四。使用事件关联事务的生命周期。

首先,我使用make strategy命令创建一个新策略:

jessemake StrategyTrendFollowing战略

然后我编辑routes.py路径使用此策略并将时间范围设置为4h的文件:

#TradingRouteRoutes=[(’Bitfinex’,’何一美元,’4h’,’TrendFollowingStrategy’),]

然后按如下方式打开新创建的策略文件:

fromjesse.strategiesimportStrategyimportjesse公司.指标来自jesseimportutilsclasstrendfollowing Strategy(Strategy):DeFifuld_uulong(self)-gt;;布尔:returnfalseDeFishoul短(自我)——gt;;布尔:returnfalseDeFishoul取消(自身)-gt;;布尔:returnFalseDeFigo长(自身):passDeFigo短(自身):pass

入境规则

我想走多长时间:

一。我们正处于上升趋势(空头交易也是如此)

二。收盘价(现价)达到50均线

DeFifulúlong(self)——gt;;布尔:returnself.current烛光触碰emaandself.trend==1Defshoul短(自我)——gt;;布尔:returnself.current烛光触碰emaandself.trend==-1个

他们说一张图片值1000字,所以这张图片显示了我认为在这种情况下的上升趋势:

如何用algotrade编写比特币的高级趋势跟踪策略1

我就是这么说的。目前,蜡烛遇到50 EMA(橙色线为50 EMA):

如何用algotrade编写比特币的高级趋势跟踪策略2

现在让我们为current_ucandle_utouch_uulong_uema和trend write代码执行此操作:

@propertyDeFitrend(self):短ema=助教( 自我蜡烛,50)长_uuema=助教( 自我蜡烛,100)更长助教( 自我蜡烛,200)如果短的,长的,长的电子邮箱:return1lifshortemalt;;长uemalt;;长ema:return-1else:return0@propertyDeFicurrentu属性蜡烛接触到长ema(自我):长ema=助教( 自我蜡烛,50分)返回自高gt;;=长“ema”gt;;=自低

我用三条均线来确定趋势方向。我返回1表示上升趋势,返回-1表示下降趋势。现在的蜡烛摸到长的线很简单,我只需要确定当前的蜡烛高价大于长的线(50周期的线),当前的蜡烛低价低于长的线。

设置入口价格和位置大小

进入价格将是目前长期交易的最高点。停止价格将是当前ATR的3倍,而不是我的进入价格。

在这个策略中,我希望一次输入所有事务,但在两点退出。我将退出我在潮流之巅的位置。这就是我所说的上升趋势的最高点(蓝线是我的目标):

如何用algotrade编写比特币的高级趋势跟踪策略3

为了编码,我首先选择最后20支蜡烛的高价。然后简单地返回它们的最大值。

就头寸规模而言,我希望每笔交易的风险为总资本的5%。要计算数量,我使用风险数量实用程序。

当然,空头交易恰恰相反。这是代码:

DeFigo_uulong(self):条目=self.highstop=进入- ta.atr公司( 自我蜡烛)*3数量=实用风险至数量(自我资本,5,入口,停止)#最高价Last20BarSlast_20;u20Highs=自我蜡烛[-20:,3]上一个高=最大np(最后20度)self.buy=数量, 入口自我停止损失=数量,停止自我。采取行动利润=数量/2,上一个“highDeFigo”short(self):条目=self.lowstop=进入+ ta.atr公司( 自我蜡烛)*3数量=实用风险至数量(自我资本,5,入口,停止)#最低价格直升机最低20巴自我蜡烛[-20:,4]上一个_u低=np.min.最小值(最后20个低点)self.sell=数量, 入口自我停止损失=数量,停止自我。采取行动利润=数量/2,以前低

盈亏平衡止损

如你所见,我只以盈利的价格撤回了一半的职位。换言之,我想在减仓后调整止损价格,以达到收支平衡。为了在Jesse中编写代码,我将使用内置的on reduced方法。

我只需要更新自动停止小姐可以告诉杰西更新我的止损单。杰西自动选择它,取消最后一个停止命令,并提交一个新的停止命令。再简单不过了!

消泡位置(自身):自动停止损失=自位数量, 自我定位进入价格

动态退出事务的后半部分

对于这个策略,我打算动态地退出事务中的剩余位置。其背后的想法是,在价格高度超买、即将进行重大调整时退出。用quant的话说,当RSI指数超过80时,我想退出。

首先,我将使用内置的update,position()方法编写我的逻辑。只有当我们有未结合同时,此方法才会在添加每个新蜡烛后执行。所以它被用来更新位置。这意味着我们不需要检查垃圾箱是否打开。

接下来要考虑的是我只想退出剩下的位置。换言之,如果打开的位置减少了,我想关闭它。检查我的位置是否已降低的最简单方法是使用内置的是reduced属性和liquidate()方法。

解除更新位置(自我):“第二次决定”半个朋友降低:rsi=ta.rsi( 自我蜡烛) 如果你自己是朗朗德尔西gt;;80:#自行清算()关闭位置与Amarkotorderself.liquidate() 伊莱夫塞尔夫shortandrsilt;;20号:自行清算()

使用筛选器

到目前为止,我的策略看起来不错。让我们做一个回溯测试看看情况如何:

杰西巴克测试2019-01-012020-05-01

大约4%的回测后,我得到一个错误:

未捕获例外:InalidStrategy:在仓位上,获利(3601.6)必须低于价格(3601.6)

这个错误试图告诉我们,在某种程度上,我们的策略的收益停止和进入价格是相等的(3601.6美元),这是不可接受的。这是一个棘手的调试问题,但是在编写了前几个策略之后,您将能够熟练地使用Jesse。

DeFigoúlong(自我):#entry:thehighofcurrentcandleentry=self.highstop=entry-ta.atr( 自我蜡烛)*3数量=实用风险至数量(自我资本,5,进入,停止)最后一个20_u高=自我蜡烛[-20:,3]上一个高=最大np(最后20度)self.buy=数量, 入口自我停止损失=数量,停止(第一)采取-利润:最高的20烛光利润=数量/2,上一个高

这个错误告诉我们,在某些情况下,承认和利润在某个时候是一样的。也就是说,在这一点上,当前蜡烛的最高位置是最后20支蜡烛中的最高位置。我们没有考虑这种策略是什么类的交易。

我们可以通过使用long方法来实现这一点,long方法使用为这种情况设计的脏if else语句或过滤器来防止这种情况。

过滤器只是返回布尔值的函数。通过返回值true来传递筛选器,反之亦然。我定义了一个过滤器,并将其命名为reward-To-risk-filter,这个名称可以是任何东西,但通常最好使用filter这个词来开始或结束filter方法的名称。过滤器的工作是确保我们试图输入的事务是值得的。

去回报风险过滤(自我):利润=abs(自我平均值入门价格-自我平均值盈亏=abs(自我平均值入门价格-自我平均值止损)盈亏比=盈亏比–1

杰西仍然不知道奖赏对风险的过滤(Filter)是一个过滤。为了让它识别我的过滤器,我需要将它添加到filters()方法中,该方法是一个内置的方法,返回一个python列表:

DeFifilters(self):返回[]

现在,我将奖励作为变量添加到返回列表中的风险过滤器。这意味着它不能以括号结尾:

DeFifilters(self):返回[自我奖励过滤风险,]

现在让我们执行另一个回溯测试:

杰西巴克测试2019-01-012020-05-01

如何用algotrade编写比特币的高级趋势跟踪策略4

这次一切都很顺利。

结论

保留策略越简单,就越容易调试,甚至随着时间的推移而改进。

使用Jesse编写策略和手动事务策略一样简单。所以下次当你找到一个由贸易书籍或贸易专家介绍的策略时,只需对其进行编码并进行测试。

——————————————————————————

原作者:萨利赫

原始链接:https://towardsdatascience.com/how-to-write-an-adanced-trend-following-strategy-to-algotrade-bitcoin-a38e47443ddc

翻译:链三丰

——————————————————————————

相关文章阅读:

区块链研究实验室︱如何使用Jesse协议编写火币交易利润策略

如何在事务策略中使用多个时间框架

温馨提示:

文章标题:如何用algotrade编写比特币的高级趋势跟踪策略

文章链接:https://www.btchangqing.cn/39476.html

更新时间:2020年06月16日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

如何用algotrade编写比特币的高级趋势跟踪策略5
区块链

火星一线稳定货币资产超过100亿美元,4个月增长100%

2020-6-16 11:38:03

区块链

链和硬币

2020-6-16 13:28:07

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索