Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 1557

 
Mihail Marchukajtes: Esta es la razón por la que ZZ no es el mejor objetivo

Llevo usando ZZ desde hace unos 15 años. Conozco todos los inconvenientes de esta herramienta. Y sé muchas otras cosas, por eso he contado arriba mi idea.

---

El sistema debería encontrar puntos de compra/venta por sí mismo. No compite con los actores del mercado, sino con el propio mercado (perdón por la tautología).

 
Eugeni Neumoin:

Llevo unos 15 años practicando con ZZ. Conozco todos los defectos de esta herramienta. Y sé mucho más, por eso te conté mi idea más arriba.

---

El sistema debería identificar los puntos de compra/venta por sí mismo. No compite con los actores del mercado, sino con el propio mercado (perdón por la tautología).

¿Puede decirme algo más al respecto? ¿Cómo lo ha puesto en práctica? Cuando hay una lucha entre compradores y vendedores, que se traduce en una cotización, lo entiendo, pero si el adversario en el juego es el propio mercado, no lo entiendo. Si hablamos de Alpha, ha aprendido a jugar por sí mismo según ciertas reglas. No se pueden dictar las reglas al mercado, por lo que no se compite con él, sino que se intenta ser como él. Estudia el mercado, pero no compite con él. Si el mercado es un jugador ideal y nosotros intentamos ser mejores que él. Pues sí. Estoy de acuerdo, pero entonces el ejemplo de Alfa es irrelevante. Porque Alfa fue autodidacta. Autodidacta con sí mismo. Y sin embargo, describa en pocas palabras cómo lo hizo exactamente un momento de competencia entre el mercado y ns en el que el mercado es a priori un ganador. ZZ no tiene valores finales a priori, por lo que es inútil.
 

un artículo sobre Habra con el destacado título "IA para las personas: palabras sencillas sobre la tecnología"https://habr.com/ru/company/jetinfosystems/blog/471626/

Ojeé el artículo: todo se reducía a Machine Learning, .... y recordé una vieja anécdota:

Un estudiante está haciendo un examen de zoología. Sólo sabe de pulgas. En el examen le hacen una pregunta sobre perros.

El estudiante comienza:

- Los perros son mamíferos, cubiertos de pelo. Hay pulgas en su pelaje... entonces se trata de pulgas....

Predicador:

- Bien, joven, háblanos de los gatos.

Estudiante:

- Los gatos son mamíferos cubiertos de pelo. Tienen pulgas en su pelaje...más sobre las pulgas....

Estudiante:

- Hablemos de pescado.

Estudiante:

- Los peces no son mamíferos. No tienen pelo. Están cubiertos de escamas, pero si estuvieran cubiertos de pelo habría pulgas en ellos....

 
 

El final de la formación de los retornados


 
Eugeni Neumoin:

No utilice ZZ ni ningún otro indicador adicional. Sólo OHLC de varios tf (los tf deben diferir en un factor de 4-6. Por ejemplo, 1-5-30-H3... hasta un mes de plazo. Selecciónelo usted mismo) y, tal vez, más garrapatas para la alerta temprana.

Por los precios de máximos y mínimos por separado estructuras convolucionales. Por OHLC - la estructura de recurrencia. Y así en todos los precios usados. Las señales de todo ello se transmiten además, por ejemplo, a la red de malla completa.

Además, introduzca los ticks que pasan por la red de recurrencia a una de las entradas de la red de malla completa.

Optimizar la velocidad de aumento de los depósitos. En consecuencia, la malla debe decidir por sí misma el volumen del lote y seleccionar los puntos de apertura y cierre. Es aproximadamente así.

¿Por qué te apresuras con las palabras? Simplemente dibuja la estructura de tu red propuesta. Y recibirás muchas preguntas.

Pero es sólo aire caliente. La idea es correcta, pero la dirección es errónea.

 
Maxim Dmitrievsky:

El final de la formación de los retornados


Y puede adjuntar un probador casero, me pregunto si evitó un error muy común. O en un mensaje privado.

Buena suerte

 
Vladimir Perervenko:

Y puede adjuntar un probador casero, me pregunto si ha evitado un error muy común. O en un mensaje privado.

Buena suerte

¿funcionará el cuaderno jupiter?

Archivos adjuntos:
 
Maxim Dmitrievsky:

¿funcionará el portátil jupiter?

(Por supuesto. Gracias. Echaré un vistazo e informaré

 
Maxim Dmitrievsky:

¿el portátil jupiter está bien? He descargado todo, no es un secreto, ya que todo el código está en el vídeo.

Es mucho trabajo desmontar el código de otra persona. Mira sólo la función custom_tester() y sólo la parte resaltada.

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)

¿Cuál es el error de cálculo del resultado? Se calcula el resultado para cada iteración sumando resultado +=testpr[i] - lastpr al valor anterior. Es la diferencia entre el Cierre de la barra actual y la anterior. Lo ideal sería usar Cerrar - Abrir, pero no importa. Lo importante es que habiendo recibido una señal al cierre de la barra actual, la considerará como una señal diff(Close) de la misma barra. Esto es incorrecto. La prima de la señal de la barra actual es diff(Close) de la barrasiguiente. La señal debe desplazarse una barra hacia la derecha para calcular correctamente el resultado. p = model.predict_proba(X) a la derecha por una barra. Voy a mostrar más cálculos en R, es más fácil para mí.

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

En la primera línea, convierte la predicción a nominal (1,-1), la desplaza a la derecha una barra, elimina NA y obtiene un vector de señales. La segunda línea resume acumulativamente el producto del vector señales y el vector diff(Close), habiéndolo alineado previamente con el vector señales en longitud. Eso nos dará el resultado correcto.

Buena suerte

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