0
Seguir
0
Seguidores

Script simple de nivel básico de Python: estadísticas de mercado continuo unilateral

Creado el: 2018-07-23 15:53:45, Actualizado el: 2018-07-24 12:27:27
comments   4
hits   2168

En los últimos tiempos, la educación se ha vuelto cuantitativa, sin fundamentos, y se ha ido haciendo poco a poco.

Hoy escribí un pequeño script para calcular el número de veces que se ha producido una tendencia unilateral (aumento o descenso continuo) en los últimos 50 días (¿sólo 50 días?) Me gustaría escribir un comentario. ¡Reconocer las oscilaciones y las tendencias es muy sencillo! https://www.fmz.cn/bbs-topic/1638 Utilizando los nuevos bajos del ciclo posterior para contrastar los nuevos altos de este ciclo, esta idea para juzgar la tendencia. Las tendencias al alza y a la baja se pueden usar. Gracias por el artículo, pero cuando lo probé, el ciclo de la línea K era de 50 días como máximo, y el período de tiempo no servía para nada, así que no tenía datos para apoyar la idea.

El resultado es el siguiente:

Script simple de nivel básico de Python: estadísticas de mercado continuo unilateral

La secuencia de salida es: id> Time> precio más alto de la etapa> precio más bajo de la etapa> precio más bajo de la etapa> estado de caída de la barra> número de continuidad

  • Se filtran las fluctuaciones individuales y paralelas, como: subida>subida>subida>subida>subida>subida>subida>subida>subida>subida>subida>subida. Este estado sin continuidad no se imprime y no ayuda en el análisis.
  • Se puede usar el precio más alto del siguiente período en comparación con el precio más alto de este período, o el precio más bajo del siguiente período en comparación con este período.
  • El tiempo de detección de movimiento es muy incómodo, por ejemplo, la línea de tres minutos es 00:57 <01:00 <01:57 <02:00 <02:57 … ¿por qué?
  • No es muy exigente, no escribe Python.

¿Qué tiene de malo?

  • Me parece bastante útil, por lo menos mejor que la cocción, pero el período de tiempo es demasiado corto para ver la regularidad de la cocción.
  • Pero si lo que estamos viendo ahora, según el reloj solar, es que ha habido 12 días de fluctuaciones unilaterales, ¿cuál es la probabilidad de que haya fluctuaciones en el día 13?
  • La idea me vino a la cabeza para hacer esta prueba, no solo para complacer a la gente, sino también para cambiar de idea y intentarlo.
  • Bienvenido, soy un novato normal.

Este es un código simplificado.


def main():
    k_line = exchange.GetRecords(PERIOD_M1) #设置1分钟K线数据
    i1 = 0 #i1 i2分别记录涨、跌次数
    i2 = 0
    j_c = 0 #用作记录所有持续行情次数总和的变量
    for i,k_line_single in enumerate(k_line): #i为记录循环次数 从0开始 k_line_single为单行记录文本
        otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", time.localtime(k_line_single.Time / 1000))#时间戳转换代码
        state_text = "" #重置state_text 避免状态连续继承  状态文本
        Duration = "" #重置持续行情次数变量
        if k_line_single.High > k_line[i-1].High: #判断最高价高于前一周期最高价的情况         
            i2 = 0 #重置连续下跌计数变量
            if k_line[i-1].High > k_line[i-2].High or k_line[i+1].High > k_line_single.High: #当高于前一周期或后一周期高于此周期价
                state_text = "连续上涨UP UP UP!"
                i1 += 1 #记录连续上涨次数
        elif k_line_single.High < k_line[i-1].High: #判断不为持平状态  
            i1 = 0
            if k_line[i-1].High < k_line[i-2].High or k_line[i+1].High < k_line_single.High:#当前一周期价格低于前前一周期 或 后一周期价格低于当前周期,表示一定是连续下跌
                state_text = "连续下跌LOW LOW !" 
                i2 += 1 #记录连续下跌次数
        else:
            i1 = 0 #重置连续行情次数
            i2 = 0
        if state_text == "连续上涨GO GO GO!" or state_text == "连续下跌LOW LOW !": #只有当连续上涨或下跌时 才会打印结果 
            j_c += 1
            Duration = "Duration:",i1 + i2 #连续单边行情持续次数
            Log(i+1,"-- Time:",otherStyleTime,"-- High:",k_line_single.High,"-- Low:",k_line_single.Low,"--》",state_text,Duration)
    Log("运行完毕。。符合条件的总数为:",j_c)

Y luego hay otro que no tiene el mismo efecto de la barra de código simplificada, 21 líneas de código más que el anterior.

def main():
    k_line = exchange.GetRecords(PERIOD_M1)
    state_text = "" #状态文本
    i1 = 0
    i2 = 0
    i3 =0
    state_3 = 0 #行情状态 涨=1 跌=2 平=3
    j_c = 0 #用作记录所有持续行情次数总和的变量
    for i,k_line_single in enumerate(k_line): #i为记录循环次数 从0开始 k_line_single为单行记录文本
        timeStamp = k_line_single.Time / 1000 #时间戳转换代码开始
        timeArray = time.localtime(timeStamp)
        otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)#时间戳转换代码结束
        
        if k_line_single.High > k_line[i-1].High: #判断最高价高于前一周期最高价的情况
            state_text = "价格出现上涨"
            i2 = 0
            i3 = 0
            state_3 = 1
            if k_line[i-1].High > k_line[i-2].High or k_line[i+1].High > k_line_single.High: #当高于前一周期或后一周期高于此周期价
                state_text = "连续上涨GO GO GO!"
                i1 += 1
        else:
            if k_line_single.High != k_line[i-1].High:
                state_text = "价格出现下跌"
                i1 = 0
                i3 = 0
                state_3 = 2
                if k_line[i-1].High < k_line[i-2].High or k_line[i+1].High < k_line_single.High:
                    state_text = "连续下跌LOW LOW !"
                    i2 += 1
            else:
                state_text = "价格相比持平"
                i1 = 0
                i2 = 0
                state_3 = 3
                if k_line[i-1].High == k_line[i-2].High:# or k_line[i+1].High == k_line_single.High:
                    state_text = "连续持平PING PING !"
                    i3 = 0 #不调试持平持续数量了
        if state_3 != 3: #不打印持平的结果
            Duration = i1 + i2 + i3
            if Duration == 0:
                Duration = ""
            else:
                Duration = "Duration:",i1 + i2 + i3
            if i1 != 0 or i2 != 0: #只有当连续上涨或下跌时 才会打印结果
                j_c += 1
                Log(i+1,"-- Time:",otherStyleTime,"-- High:",k_line_single.High,"-- Low:",k_line_single.Low,"--》",state_text,Duration)
    Log("运行完毕。。符合条件的总数为:",j_c)