0
tập trung vào
0
Người theo dõi

Mã lệnh đơn giản dành cho người mới bắt đầu Python - thống kê thị trường liên tục một chiều

Được tạo ra trong: 2018-07-23 15:53:45, cập nhật trên: 2018-07-24 12:27:27
comments   4
hits   2168

Những ngày gần đây, học tập đã được định lượng, không có nền tảng, chỉ cần gõ một chút một chút.

Hôm nay, tôi đã gõ một tập lệnh nhỏ để tính toán số lần xảy ra các biến động đơn phương (thăng hoặc giảm liên tục) trong 50 ngày gần đây. Tôi muốn viết một bài. Nhận ra sự biến động và xu hướng, thật sự rất đơn giản! https://www.fmz.cn/bbs-topic/1638 Sử dụng các mức thấp mới của chu kỳ sau để so sánh với mức cao mới của chu kỳ này, ý tưởng này để đánh giá xu hướng. Xu hướng lên và xuống có thể được sử dụng. Cảm ơn vì bài viết này, nhưng khi tôi thử nghiệm, tôi đã thiết lập chu kỳ K-line, chỉ có thể kiểm tra lại tối đa 50 ngày, và thời gian thiết lập cũng không có tác dụng, vì vậy không có dữ liệu để hỗ trợ.

Nó hoạt động như sau:

Mã lệnh đơn giản dành cho người mới bắt đầu Python - thống kê thị trường liên tục một chiều

Lệnh đầu ra là: id > Time > giá cao nhất giai đoạn > giá thấp nhất giai đoạn > trạng thái giảm > số lần liên tục

  • Bộ lọc một lần giảm và giữ trạng thái song song như: tăng> giảm> tăng> bình thường> giảm> bình thường> tăng> không sử dụng trạng thái liên tục này không được in, không giúp ích gì cho phân tích.
  • Sử dụng giá cao nhất của chu kỳ tiếp theo so với giá cao nhất của chu kỳ này, cũng có thể sử dụng giá cao nhất của chu kỳ tiếp theo.
  • “Vì vậy, nếu chúng ta có thể tìm ra một con đường 3 phút, thì đó là 00:57 >01:00 >01:57 >02:00 >02:57… Tại sao?”
  • Không phải là một câu hỏi quá cao, không phải là viết Python.

Có ích gì không?

  • Tôi nghĩ rằng nó khá hữu ích, ít nhất là tốt hơn so với nấu ăn, nhưng thời gian quá ngắn để có thể nhìn thấy quy luật nấu ăn.
  • Tuy nhiên, nếu chúng ta đang ở trong tình trạng này, theo đường dương, đã có 12 ngày liên tục của sự tăng giá một chiều, thì có bao nhiêu khả năng tăng giá vào ngày thứ 13?
  • Tôi đã nghĩ ra ý tưởng này để thử nghiệm, và tôi đã cố gắng thay đổi suy nghĩ của mình.
  • Chào mừng đến với chúng tôi, tôi là một người mới bình thường.

Dưới đây là một đoạn mã đã được tinh chỉnh.


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)

Một đoạn mã khác không có hiệu ứng vỏ bọc, nhưng có 21 dòng mã hơn.

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)