感谢 Gamu。我很喜欢您的出版物,并尝试通过复制您的步骤来学习。
我遇到了一些问题,希望能对其他人有所帮助。
1) 我使用您提供的脚本对 EURGBP_Stochastic 日线进行了测试,结果只产生了 2 个订单,夏普比率为 0.02。我相信我的设置与您相同,但在 2 个经纪商上只产生了 2 个订单。
2)给其他人提个醒,如有必要,您可能需要修改符号设置以匹配您的经纪商(例如,将 EURGBP 改为 EURGBP.i)。
3)接下来,当我尝试导出数据时,我得到的 ATR 数组超出范围,我相信这是因为我的数组中没有 100000 条记录(如果我将其改为 677),我可以相应地得到一个有 677 行的文件。也许你也可以在下载中加入数据提取脚本。
4) 我从您的文章中复制了代码,并在 Python 中进行了尝试,但得到的错误信息是 look_ahead 未定义 ----> 3 data.loc[data["Close"].shift(-look_ahead) > data["Close"], "Binary Target"] = 1
4 data = data.iloc[:-look_ahead,:]
NameError: name 'look_ahead' is not defined
5) 当我加载您的 Juypiter 笔记本时,我发现它需要设置前瞻 #让我们预测未来的 20 步
look_ahead = 20 ,之后我只使用了你的附带文件,但却出现了以下错误,可能与只有 677 行有关。
在开始可视化之前,我运行了 #Scale 数据
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
data[['Open', 'High', 'Low', 'Close', 'MA Fast', 'MA Slow','Stoch Main']] = scaler.fit_transform(data[['Open', 'High', 'Low', 'Close', 'MA Fast', 'MA Slow','Stoch Main']])
结果出现了一个错误,我不知道如何解决
ipython-input-6-b2a044d397d0>:4: SettingWithCopyWarning:试图在 DataFrame 的片段副本上设置值。请尝试使用 .loc[row_indexer,col_indexer] = value 代替它。 请参阅文档中的注意事项:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy data[['Open', 'High', 'Low', 'Close', 'MA Fast', 'MA Slow','Stoch Main']] = scaler.fit_transform(data[['Open', 'High', 'Low', 'Close', 'MA Fast', 'MA Slow','Stoch Main']])
感谢 Gamu。我很喜欢您的出版物,并试着模仿您的步骤来学习。
我遇到了一些问题,希望这能帮助其他人。
1) 我使用您提供的脚本对 EURGBP_Stochastic 日线进行了测试,结果只产生了 2 个订单,夏普比率为 0.02。我相信我的设置与您相同,但在 2 个经纪商上只产生了 2 个订单。
2)作为对其他人的提醒,如有必要,您可能需要修改符号设置以匹配您的经纪商(例如,将 EURGBP 改为 EURGBP.i)。
3)接下来,当我尝试导出数据时,我得到的 ATR 数组超出范围,我相信这是因为我的数组中没有 100000 条记录(如果我将其改为 677),我可以相应地得到一个有 677 行的文件。也许您也可以在下载中加入数据提取脚本。
4)我从您的文章中复制了代码,并在 Python 中进行了尝试,但得到的错误信息是 look_ahead 未定义 ----> 3 data.loc[data["Close"].shift(-look_ahead) > data["Close"], "Binary Target"] = 1
4 data = data.iloc[:-look_ahead,:]
NameError: name 'look_ahead' is not defined
5) 当我加载您的 Juypiter 笔记本时,我发现它需要设置展望 #让我们预测未来 20 步的情况
look_ahead = 20 , 之后我只使用了你的附带文件,但却出现了以下错误,可能与只有 677 行有关。
在开始可视化之前,我运行了 #Scale 数据
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
data[['Open', 'High', 'Low', 'Close', 'MA Fast', 'MA Slow','Stoch Main']] = scaler.fit_transform(data[['Open', 'High', 'Low', 'Close', 'MA Fast', 'MA Slow','Stoch Main']])
这给了我一个错误,我不知道如何解决
ipython-input-6-b2a044d397d0>:4: SettingWithCopyWarning:试图在 DataFrame 的片段副本上设置值。请尝试使用 .loc[row_indexer,col_indexer] = value 代替它。 请参阅文档中的注意事项:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy data[['Open', 'High', 'Low', 'Close', 'MA Fast', 'MA Slow','Stoch Main']] = scaler.fit_transform(data[['Open', 'High', 'Low', 'Close', 'MA Fast', 'MA Slow','Stoch Main']])
你好,尼尔,我相信你很好。
感谢 Gamu,是的,我知道有很多活动部件,我会看看这是否能解决我的问题。
新文章 重构经典策略(第十一部分)移动平均线的交叉(二)已发布:
我们之前已经讨论过预测移动平均线交叉的概念, 这是原文。我们观察到,移动平均线交叉比直接预测价格变化更容易预测。今天,我们将重新审视这个熟悉的问题,但采用一种完全不同的方法。
我们现在想要彻底研究这对我们的交易程序有多大影响,以及这一方案如何改进您的交易策略。移动平均线交叉是现存最古老的交易策略之一。使用如此广为人知的技术构建盈利策略是一项挑战。然而,我希望在这篇文章中向您展示,“老狗”确实可以学会新把戏。
为了使我们的比较具有实证性,我们首先将在MQL5中为EURGBP货币对构建一个仅使用以下指标的交易策略:
我们的策略在日线时间框架上进行交易。将从2022年1月1日开始,一直到2024年6月初对这一策略进行回测。策略首先将使用经典的交易规则。即当快速移动平均线向上穿过慢速移动平均线且随机震荡指标读数高于80时,将产生买入信号。对于卖出信号,情况则相反。当快速移动平均线低于慢速移动平均线,且随机振荡指标低于20时,我们将记录一个卖出信号。
作者:Gamuchirai Zororo Ndawana