Les ressources ont été chargées... Je charge...

Introduction à Python, scripts simples et simples - statistiques sur les secteurs unilatéraux

Auteur:bb, Créé: 2018-07-23 15:53:45, Mis à jour: 2018-07-24 12:27:27

Je suis en train d'étudier la quantification et je n'ai pas de base, je frappe quelque chose lentement.

Aujourd'hui, un petit script a été tapé pour calculer le nombre de fois où le marché unilatéral (une hausse ou une baisse consécutive) s'est produit au cours des 50 derniers jours (il semble que la plate-forme ne puisse revenir qu'à 50 jours avec l'analogie OK). Je voulais écrire un ↓. Il est très simple d'identifier les bouleversements et les tendances.https://www.fmz.cn/bbs-topic/1638L'idée est d'utiliser les nouveaux bas du cycle suivant pour comparer les nouveaux hauts du cycle suivant, ce qui permet de déterminer la tendance. Merci pour l'article, mais j'ai mis en place des cycles de ligne K, qui ne peuvent être revus que pendant 50 jours au maximum, et les intervalles de temps ne fonctionnent pas, donc je n'ai pas d'idée de support de données.

Les résultats sont les suivants:

img

L'ordre de sortie est le suivant: id>Time>Le prix le plus élevé de la phase>Le prix le plus bas de la phase>Le prix de l'état de chute>Le nombre de fois où cela se produit.

  • Filtrez l'état d'une seule chute et d'une seule chute et de la mise en parallèle, par exemple: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
  • Le prix le plus élevé du cycle suivant peut être comparé au prix le plus élevé du cycle suivant. Le prix le plus bas peut être comparé au prix le plus élevé du cycle suivant.
  • La ligne de 3 minutes est 00:57>01:00>01:57>02:00>02:57... Pourquoi?
  • Je ne veux pas être trop arrogant et ne pas écrire Python.

Vous avez de la cuisine?

  • J'ai trouvé cela utile, au moins mieux que de regarder, mais le cycle de temps est trop court et je ne vois pas les lois de l'observation.
  • Mais si la situation actuelle, selon le calendrier, est celle d'une hausse unilatérale de 12 jours consécutifs, quelle est la probabilité d'une hausse le 13ème jour?
  • J'ai eu l'idée de faire ce test et je ne veux pas plaire aux gens, mais je vais essayer de changer d'avis.
  • Bienvenue à l'échange, je suis un oiseau de compagnie normal.

Voici un peu de code simplifié


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)

Encore une fois, un code qui n'a pas le même effet de flèche après simplification, 21 lignes de code de plus que ce qui précède

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)

Plus de

NulMerci pour le partage, une version est en ligne, le forum est en format markdown

bbDésolé, le code que j'ai envoyé n'est qu'à moitié résolu.

Je ne sais pas.Merci de le partager.

bbMerci pour votre réponse.