Estoy tratando de crear un script que, a partir de datos estándar de OHLC, encuentre patrones. El patrón específico que estoy buscando en este momento es un movimiento lateral después de un movimiento hacia arriba, aquí tienes un ejemplo:
Así que básicamente mi código debería detectar cuando el precio está dentro de una caja como las de arriba.
Sé que esto no es fácil de hacer y no estoy buscando que alguien dé su código, solo necesito ayuda para encontrar una dirección general o algunas fuentes/biblioteca sobre este tema, si las hay.
Mi idea era la siguiente: detectar cuándo el precio está subiendo y, si el precio, después de subir, comienza a moverse entre un intervalo X e Y (sin subir o bajar demasiado), etiquetarlo como un rango (que es lo que estoy buscando). Creo que esto debería funcionar, pero no tengo idea de cómo ponerlo en código.
Esto es lo que tengo:
import copy
import urllib
import numpy as np
import pandas as pd
import cfscrape
import json
import datetime
from datetime import datetime as dt
BU = cfscrape.create_scraper()
URL = "https://api.binance.com/api/v1/klines?&symbol=ADABTC&interval=1h&limit=250"
ResultRaw = BU.get(URL, timeout=(10, 15)).content
Result = json.loads(ResultRaw)
for x in Result:
TimeUnix = float(x[0]) / float(1000)
K = datetime.datetime.fromtimestamp(TimeUnix)
x[0] = K
Variation = Result.index(x)
Previous = Variation-1
Variation = ((float(x[4])-float(x[1]))/float(x[1]))*100
print(Variation)
df = pd.DataFrame([x[:6] for x in Result],
columns=['Date', 'Open', 'High', 'Low', 'Close', 'Volume'])
format = '%Y-%m-%d %H:%M:%S'
df['Date'] = pd.to_datetime(df['Date'], format=format)
df = df.set_index(pd.DatetimeIndex(df['Date']))
df["Open"] = pd.to_numeric(df["Open"],errors='coerce')
df["High"] = pd.to_numeric(df["High"],errors='coerce')
df["Low"] = pd.to_numeric(df["Low"],errors='coerce')
df["Close"] = pd.to_numeric(df["Close"],errors='coerce')
df["Volume"] = pd.to_numeric(df["Volume"],errors='coerce')
Esto es lo que estoy haciendo:
- Recuperar datos
- Convertirlos en datos JSON
- Para cada fila, determinar cuánto cambió el precio en términos de porcentaje, esto es lo que hace
Variation
- Convertirlo en un dataframe de Pandas
¡Cualquier tipo de ayuda es apreciada!
0 votos
Gracias por tu respuesta @noob2. Mi propósito inicial era encontrar una forma de detectar triángulos/las cunas/pennantes alcistas, pero al ver que encontrar dicho patrón específico desde el código podría ser demasiado difícil de hacer, decidí hacer lo siguiente: si el precio se dispara y luego no vuelve a bajar, sino que comienza a moverse en un rango, detectar ese rango
1 votos
Tl;dr lo que estoy tratando de hacer es detectar cuándo el precio comienza a consolidarse después de una ola alcista
1 votos
Puede querer considerar la agregación de datos OHLC en barras de precios , y echar un vistazo al método de Triple Barrera y escaneo de tendencias . El paquete de Python mlfinlab implementa estos (de Prado 2018 Avances en el aprendizaje automático financiero)
0 votos
¡Echándole un vistazo, gracias!
0 votos
¿Cómo definirías matemáticamente las casillas?
0 votos
Has cambiado la pregunta tanto que la respuesta ya no encaja. Esto no es ideal ya que hace perder tiempo a la gente. Por favor, haz una nueva pregunta si es necesario.
0 votos
Sólo quería hacerlo más específico, no me di cuenta de que era tan diferente, pero puedo editar de nuevo a como estaba antes de editarlo.
0 votos
No te preocupes y siéntete libre de hacer otra pregunta.
1 votos
@Emma Sí, también lo intenté allí, pero desafortunadamente sin obtener respuestas.