交易中的机器学习:理论、模型、实践和算法交易 - 页 1557

 
Mihail Marchukajtes:这就是ZZ不是最佳目标的原因

我使用ZZ已经有大约15年了。我知道这个工具的所有缺点。我还知道很多其他的事情,这就是为什么我在上面说了我的想法。

---

系统应该自己找到买/卖点。它不是与市场上的参与者竞争,而是与市场本身竞争(抱歉,有些同义词)。

 
尤金尼-诺伊莫因

我和ZZ一起练习已经有大约15年了。我知道这个工具的所有缺点。而我知道的还有很多,这就是为什么我在上面告诉你我的想法。

---

系统应自行识别买/卖点。它不是与市场上的参与者竞争,而是与市场本身竞争(抱歉,有些同义词)。

你能告诉我更多关于它的情况吗。你是如何实施的?当买家和卖家之间发生争斗,导致报价时,我可以理解,但如果游戏的对手是市场本身,我就不明白了。如果我们说到阿尔法,它已经学会了按照某些规则自己玩。你不能对市场的规则指手画脚,所以它不是在与市场竞争,而是试图像市场一样。它研究市场,但它不与市场竞争。如果市场是一个理想的球员,而我们正在努力成为比它更好的球员。嗯,是的。我同意,但这样一来,阿尔法的例子就不重要了。因为阿尔法是自学成才。自我训练与自己。然而,请简明扼要地描述一下,你是如何使之成为市场和恩斯之间的竞争时刻,而市场是先验的赢家。ZZ没有先验的最终值,所以它是无用的。
 

一篇关于Habra的文章,以高调的标题"AI for people: simple words about technology"https://habr.com/ru/company/jetinfosystems/blog/471626/

我翻阅了这篇文章--这一切都归结为机器学习,....,并想起了一个古老的轶事。

一个学生正在参加动物学考试。他只知道跳蚤。在考试中,他得到一个关于狗的问题。

学生开始。

- 狗是哺乳动物,身上有毛。他们的皮毛里有跳蚤......那么这一切都是关于跳蚤的....

传教士。

- 好吧,年轻人,告诉我们关于猫的事情。

学生。

- 猫是覆盖着毛发的哺乳动物。他们的皮毛里有跳蚤....,更多关于跳蚤的信息....。

学生。

- 让我们来谈谈鱼。

学生。

- 鱼不是哺乳动物。他们没有毛。他们身上有鳞片,但如果他们身上有毛,就会有跳蚤出现在....。

 
 

归国人员培训的收官之作


 
尤金尼-诺伊莫因

完全不要使用ZZ或任何附加指标。只有来自几个tf的OHLC(tf的差异应该是4-6倍。 例如,1-5-30-H3...最多一个月的时间框架。自己选择),也许,还有更多的虱子,用于早期预警。

由最大和最小的价格分别卷积结构。通过OHLC--复发结构。以此类推,所有的二手价格。所有这些的信号都被进一步送入,比如说,送入整个网状网络。

同时,将通过递归网络传递的蜱虫输入到全网状网络的一个输入端。

优化存款增加的速度。因此,网眼应该自己决定手数,并选择开仓和平仓点。大约是这样的。

你为什么要急于用文字呢? 只要画出你建议的网络结构就可以了。而且你会得到很多问题。

但这只是热空气。这个想法是正确的,但方向是错误的。

 
马克西姆-德米特里耶夫斯基

归国人员培训的收官之作


还有,你能不能附上一个自制的测试器,我想知道你是否避免了一个非常常见的错误?或在私人信息中。

祝好运

 
弗拉基米尔-佩雷文科

并能附上自制的测试器,不知道你是否避免了一个非常常见的错误?或在私人信息中。

祝好运

Jupiter笔记本能不能用?

附加的文件:
 
马克西姆-德米特里耶夫斯基

朱庇特的笔记本电脑能用吗?

(笑)当然了。谢谢。(笑)。我看一下,然后报告。

 
马克西姆-德米特里耶夫斯基

Jupiter笔记本电脑可以吗? 我把整个东西发给你,不是秘密地发给你,因为整个代码都在视频里。

把别人的代码拆开是一件很麻烦的事。只看custom_tester()函数,只看高亮部分。

def custom_tester(symbol, timeframe, frompos, pricesnumber, lag, num, markup = 0.0):   
    symbols_list = [symbol]
    pr_test = pd.DataFrame()
    for i in symbols_list:
        rates = MT5CopyRatesFromPos(i, timeframe, frompos, pricesnumber)
        pr_test[i] = [y.close for y in rates]

    #creating price returns with lag
    returns = np.array(np.log(1 + pr_test.pct_change(lag)))
    returns = returns[lag:]
    comp_returns = np.array(returns)
    #                   
    for i in range(num-1):
        comp_returns = np.c_[comp_returns, returns]
    #putting returns into dataframe    
    comp_returns = pd.DataFrame(comp_returns)
    #shifting columns to use it as delayed features
    for i in range(num):
        comp_returns[i] = comp_returns.shift(i)
    #deleting first 'num' rows with NaN's
    comp_returns_shifted = pd.DataFrame(comp_returns[num:]).reset_index(drop=True)
    
    testpr = np.array(pr_test[lag+num:])
    X = pd.DataFrame(comp_returns_shifted)
    p = model.predict_proba(X) # непрерывное предсказание классификатора (типа вероятность)
    
    result = np.array([0])
    
    lastdeal = int(2)
    lastpr = float(0.0)

    for i in range (X[0].size):
# При первом входе
        if lastdeal == 2:
# переводим непрерывное предсказание в номинальные значенияю Порог 0.5
            if p[i][0] > 0.5:
                lastdeal = 1
            else:
                lastdeal = 0
            lastpr = testpr[i] # сохраняем значение Close 
            continue
# при следующей итерации
        if lastdeal == 1 and p[i][0] > 0.5:
            lastdeal = 0 # это я не понял зачем
# При вычислении результата ошибка
            result = np.append(result, result[-1] - markup + lastpr - testpr[i])
            lastpr = testpr[i]
            continue
# при последующей итерации
        if lastdeal == 0 and p[i][0] < 0.5:
            lastdeal = 1 # здесь не должно быть -1?
# и здесь ошибка
            result = np.append(result, result[-1] - markup + testpr[i] - lastpr)
            lastpr = testpr[i]
            continue
            
    plt.figure(figsize=(20,5))
    plt.plot(result)
    
    from sklearn.linear_model import LinearRegression
    y = result.reshape(-1,1)
    X = np.arange(result.size).reshape(-1,1)
    lr = LinearRegression()
    lr.fit(X,y)
#     print(lr.score(X,y))
    return lr.score(X,y)

计算结果的误差是多少?你计算每次迭代的结果,将结果+=testpr[i]-lastpr 加到前一个值。 它是当前条形图的收盘价与前一个条形图的收盘价之间的差异。理想情况下,最好使用关闭-打开,但这并不重要。重要的是,在当前条形图的收盘处收到信号后,你将把它视为同一条形图的diff(Close)信号。这是不正确的。 当前柱状图的信号溢价是下一个 柱状图的diff(Close)信号必须向右移动一格才能正确计算出结果。 p = model.predict_proba(X) 向右移动一 格。我将在R上显示进一步的计算,这对我来说比较容易。

ifelse(p >= 0.5, 1, -1)%>% lag()%>% na.omit() -> sig
cumsum(sig * {diff(testpr) %>% tail(lenght(sig))})-> result

在第一行,将预测值转换为名义值(1,-1),向右移动 一格,去除NA,得到一个信号矢量。第二行累积总结了信号向量和diff(Close)向量的乘积,之前已经将其与信号向量的长度对齐。这将给我们带来正确的结果。

祝好运

Документация по MQL5: Основы языка / Операции и выражения / Побитовые операции
Документация по MQL5: Основы языка / Операции и выражения / Побитовые операции
  • www.mql5.com
Дополнение до единицы значения переменной. Значение выражения содержит 1 во всех разрядах, в которых значение переменной содержит 0, и 0 во всех разрядах, в которых значения переменной содержит 1. Сдвиг вправо Двоичное представление x сдвигается вправо на y разрядов. Если сдвигаемое значение имеет беззнаковый тип, то осуществляется логический...