파이썬에 대한 소개 간단한 작은 스크립트 - 통계 일방적인 연속 경로

저자:bb, 2018-07-23 15:53:45, 업데이트: 2018-07-24 12:27:27

최근에는 학업에 입문하고 있고, 기초를 찾지 못하고, 천천히 무언가를 타기 시작합니다.

오늘 우리는 지난 50일 동안 (플랫폼이 OK를 통해 50일만 반복하는 것 같네요) 단편적인 시장 (연속 상승 또는 감소) 의 수치를 통계적으로 측정하는 작은 스크립트를 습니다. 이 글은 ↓이라고 쓰려고 했는데 , , , , , ,https://www.fmz.cn/bbs-topic/1638다음 주기의 새로운 낮은 것과 이 주기의 새로운 높은 것을 비교하여 추세를 판단하는 개념이다. 이 기사를 작성한 것에 감사하지만, 테스트를 할 때, K 라인 주기를 설정하면 최대 50 일까지 반복 할 수 있습니다. 시간대를 설정하는 것도 효과가 없습니다.

이 프로젝트의 결과는 다음과 같습니다.

img

출력 순서는: id>Time>단계 최고 가격>단계 최저 가격>상태 가격> 지속 수

  • 필터링은 단 한번의 하락과 평행 행렬을 유지합니다. 예를 들어:?? > 하락> 하락> 평행> 평평> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평행> 평
  • 다음 주기의 최고 가격과 이 주기의 최고 가격을 대조할 때 다음 주기의 최고 가격을 대조할 수도 있다.
  • 리테스트를 받는 시기는 정말 곤란합니다. 예를 들어 3분 줄은 00:57>01:00>01:57>02:00>02:57... 왜???
  • 이 문서는 다른 문장들과 비교해 볼 수 있습니다.

이 있나요?

  • 저는 그것이 유용하다고 생각합니다, 적어도 그것을 보는 것보다 더 좋지만 시간 주기는 너무 짧아서 법칙을 볼 수 없습니다.
  • 그러나 우리가 현재 시장에서 일정에 따라 12일 연속으로 일방적으로 상승세를 보인다면 13일 상승할 확률은 얼마나 될 것인가?
  • 저는 이 아이디어를 가지고 이 테스트를 했습니다. 다른 사람들을 기쁘게 하지 않고, 다른 생각을 가지고 테스트를 해보겠습니다.
  • 이 글은 제 생각에는 제 생각보다 더 좋은 글이라고 생각합니다.

아래에는 몇 가지 간소화된 코드들이 있습니다.


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)

그리고는 21줄의 코드가 더 많아서 줄여지지 않은 코드가 있습니다.

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)

더 많은

제로이 포럼은 마크다운 형식으로 되어 있습니다.

bb죄송합니다. 제가 보낸 코드는 반만 풀었습니다.

qq89520감사합니다.

bb감사합니다. 감사합니다.