Bắt đầu Python kịch bản nhỏ đơn giản - thống kê một bên liên tục

Tác giả:bb, Tạo: 2018-07-23 15:53:45, Cập nhật: 2018-07-24 12:27:27

Gần đây, tôi đang học định lượng, và không có cơ sở, gõ một cái gì đó chậm rãi.

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

Các tác dụng của nó như sau:

img

Loại đầu ra là: id> Time> giá cao nhất trong giai đoạn> giá thấp nhất trong giai đoạn> giá giảm> số lần tiếp tục

  • Bộ lọc một lần lặn xuống và giữ các trạng thái ngang nhau như: > lặn xuống> > bình thường> lặn xuống> bình thường> lặn> trạng thái này không sử dụng tính liên tục, không giúp ích gì cho phân tích.
  • Sử dụng giá cao nhất của chu kỳ sau để so sánh 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ỳ sau.
  • Nếu bạn muốn tìm hiểu về thời gian của các giao dịch, bạn có thể xem đây là thời gian rất khó khăn, ví dụ như đường 3 phút là 00:57>01:00>01:57>02:00>02:57... Tại sao???
  • Những người dùng khác cũng có thể sử dụng Python để viết bài viết.

Có đồ ăn không?

  • Tôi thấy nó khá hữu ích, ít nhất là tốt hơn là nhìn, nhưng thời gian quá ngắn và tôi không thể nhìn thấy quy luật.
  • Tuy nhiên, nếu như thị trường hiện tại của chúng ta, theo lịch trình, đã tăng một bên trong 12 ngày liên tiếp, thì mọi người nói rằng khả năng tăng trong ngày thứ 13 là bao nhiêu?
  • Tôi là người có ý tưởng để làm bài kiểm tra này, không phải để làm hài lòng mọi người, nhưng để thay đổi suy nghĩ của mình và thử nó.
  • Chào mừng bạn đến với cuộc trao đổi, tôi là một con chim cỏ bình thường.

Dưới đây là một số đoạn mã đơn giản.


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)

Và sau đó là một mã không có hiệu ứng nén, 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)

Thêm nữa

KhôngCảm ơn đã chia sẻ, phiên bản sắp tới, diễn đàn là định dạng markdown.

bbXin lỗi, tôi chỉ phân tích một nửa mã mà tôi gửi.

qq89520Cảm ơn đã chia sẻ.

bbCảm ơn các bạn, 0 điểm.