前两日均值买卖法在5分钟线上的回测

前两日均值买卖法是指:计算出前两个K线的最小值的平均值、最大值的平均值,作为当前K线卖出和买入的基准。

选取数据:可转债ETF(511380),时间:20240726 11:00至20240730 10:40

原始数据

#左侧最大值,右侧最小值
mystr='''10.588 , 10.579
10.593 , 10.583
10.600 , 10.587
10.598 , 10.590
10.593 , 10.587
10.594 , 10.587
10.597 , 10.590
10.619 , 10.597
10.623 , 10.610
10.627 , 10.611
10.612 , 10.603
10.611 , 10.604
10.613 , 10.606
10.617 , 10.606
10.614 , 10.607
10.625 , 10.614
10.628 , 10.617
10.628 , 10.617
10.624 , 10.619
10.625 , 10.618
10.624 , 10.621
10.628 , 10.621
10.638 , 10.624
10.631 , 10.624
10.637 , 10.624
10.629 , 10.623
10.626 , 10.619
10.626 , 10.618
10.626 , 10.619
10.631 , 10.623
10.634 , 10.627
10.641 , 10.629
10.643 , 10.635
10.644 , 10.635
10.643 , 10.636
10.645 , 10.624
10.640 , 10.631
10.633 , 10.620
10.678 , 10.632
10.682 , 10.643
10.657 , 10.642
10.650 , 10.631
10.657 , 10.638
10.664 , 10.636
10.637 , 10.624
10.638 , 10.629
10.642 , 10.634
10.637 , 10.625
10.638 , 10.628
10.633 , 10.628
10.632 , 10.628
10.630 , 10.626
10.628 , 10.625
10.627 , 10.624
10.624 , 10.619
10.636 , 10.623
10.638 , 10.629
10.639 , 10.630
10.639 , 10.635
10.645 , 10.634
10.645 , 10.635
10.648 , 10.641
10.646 , 10.641
10.647 , 10.642
10.652 , 10.640
10.658 , 10.646
10.650 , 10.646
10.646 , 10.640
10.644 , 10.634
10.638 , 10.634
10.636 , 10.633
10.636 , 10.633
10.636 , 10.632
10.634 , 10.631
10.634 , 10.627
10.637 , 10.626
10.631 , 10.625
10.636 , 10.630
10.637 , 10.633
10.637 , 10.633
10.639 , 10.633
10.637 , 10.630
10.631 , 10.629
10.638 , 10.613
10.617 , 10.599
10.605 , 10.589
10.604 , 10.592
10.592 , 10.579
10.585 , 10.573
10.579 , 10.568
10.578 , 10.569
10.577 , 10.572
10.583 , 10.576
10.583 , 10.572
10.579 , 10.573
10.583 , 10.576
10.584 , 10.579'''

对上面的数据加工,计算出当前K线前两天的最大和最小值的均值

new_str='''10.588,10.579
10.588,10.579
10.59,10.581
10.596,10.585
10.599,10.588
10.596,10.588
10.593,10.587
10.595,10.588
10.608,10.593
10.621,10.604
10.625,10.611
10.62,10.607
10.611,10.604
10.612,10.605
10.615,10.606
10.616,10.607
10.62,10.611
10.627,10.616
10.628,10.617
10.626,10.618
10.625,10.619
10.625,10.62
10.626,10.621
10.633,10.623
10.634,10.624
10.634,10.624
10.633,10.623
10.627,10.621
10.626,10.619
10.626,10.619
10.628,10.621
10.633,10.625
10.637,10.628
10.642,10.632
10.643,10.635
10.643,10.636
10.644,10.63
10.643,10.628
10.636,10.625
10.655,10.626
10.68,10.637
10.669,10.643
10.654,10.636
10.654,10.634
10.66,10.637
10.651,10.63
10.637,10.627
10.64,10.631
10.639,10.63
10.637,10.627
10.636,10.628
10.633,10.628
10.631,10.627
10.629,10.625
10.628,10.625
10.626,10.622
10.63,10.621
10.637,10.626
10.639,10.63
10.639,10.633
10.642,10.634
10.645,10.634
10.646,10.638
10.647,10.641
10.646,10.642
10.649,10.641
10.655,10.643
10.654,10.646
10.648,10.643
10.645,10.637
10.641,10.634
10.637,10.633
10.636,10.633
10.636,10.633
10.635,10.631
10.634,10.629
10.636,10.627
10.634,10.625
10.633,10.628
10.636,10.631
10.637,10.633
10.638,10.633
10.638,10.631
10.634,10.63
10.634,10.621
10.628,10.606
10.611,10.594
10.604,10.591
10.598,10.585
10.588,10.576
10.582,10.57
10.579,10.569
10.578,10.57
10.58,10.574
10.583,10.574
10.581,10.572
10.581,10.575'''

用代码处理


tg_list=[]
for i in mystr.splitlines():
    a,b=i.split(',')
    c=float(a)
    d=float(b)
    tg_list.append([c,d])
print(tg_list)

new_list=[]
for i in new_str.splitlines():
    a,b=i.split(',')
    c,d=float(a),float(b)
    new_list.append([c,d])
print(new_list)


# print(len(tg_list))
# print(len(new_list))


buy_price=10.585
is_hold=True
count_exchange=0
sum_benefit=0
pre_hold=True
for i in range(1,len(tg_list)):
    if pre_hold is True:
        if is_hold is True and (tg_list[i][1]<=new_list[i][1] or i==len(tg_list)-1):
            if i==24:
                print(tg_list[i][1])
                print(new_list[i][1])
            sale_price=new_list[i][1]
            count_exchange+=1
            sum_benefit+=round(sale_price-buy_price,3)
            print(i,buy_price,sale_price)
            is_hold=False
            pre_hold=False
        if i not in [24] and is_hold is False and tg_list[i][0]>=new_list[i][0]:
            buy_price=new_list[i][0]
            print('buy',i)
            is_hold=True
            pre_hold=True
    else:
        if is_hold is False and tg_list[i][0]>=new_list[i][0]:
            buy_price=new_list[i][0]
            print('buy',i)
            is_hold=True
            pre_hold=True
        if is_hold is True and (tg_list[i][1]<=new_list[i][1] or i==len(tg_list)-1):
            sale_price=new_list[i][1]
            count_exchange+=1
            sum_benefit+=round(sale_price-buy_price,3)
            print(i,buy_price,sale_price)
            is_hold=False
            pre_hold=False
print(count_exchange)
print(sum_benefit)
print(round(10.582-10.585,3))

输出结果

[[10.588, 10.579], [10.593, 10.583], [10.6, 10.587], [10.598, 10.59], [10.593, 10.587], [10.594, 10.587], [10.597, 10.59], [10.619, 10.597], [10.623, 10.61], [10.627, 10.611], [10.612, 10.603], [10.611, 10.604], [10.613, 10.606], [10.617, 10.606], [10.614, 10.607], [10.625, 10.614], [10.628, 10.617], [10.628, 10.617], [10.624, 10.619], [10.625, 10.618], [10.624, 10.621], [10.628, 10.621], [10.638, 10.624], [10.631, 10.624], [10.637, 10.624], [10.629, 10.623], [10.626, 10.619], [10.626, 10.618], [10.626, 10.619], [10.631, 10.623], [10.634, 10.627], [10.641, 10.629], [10.643, 10.635], [10.644, 10.635], [10.643, 10.636], [10.645, 10.624], [10.64, 10.631], [10.633, 10.62], [10.678, 10.632], [10.682, 10.643], [10.657, 10.642], [10.65, 10.631], [10.657, 10.638], [10.664, 10.636], [10.637, 10.624], [10.638, 10.629], [10.642, 10.634], [10.637, 10.625], [10.638, 10.628], [10.633, 10.628], [10.632, 10.628], [10.63, 10.626], [10.628, 10.625], [10.627, 10.624], [10.624, 10.619], [10.636, 10.623], [10.638, 10.629], [10.639, 10.63], [10.639, 10.635], [10.645, 10.634], [10.645, 10.635], [10.648, 10.641], [10.646, 10.641], [10.647, 10.642], [10.652, 10.64], [10.658, 10.646], [10.65, 10.646], [10.646, 10.64], [10.644, 10.634], [10.638, 10.634], [10.636, 10.633], [10.636, 10.633], [10.636, 10.632], [10.634, 10.631], [10.634, 10.627], [10.637, 10.626], [10.631, 10.625], [10.636, 10.63], [10.637, 10.633], [10.637, 10.633], [10.639, 10.633], [10.637, 10.63], [10.631, 10.629], [10.638, 10.613], [10.617, 10.599], [10.605, 10.589], [10.604, 10.592], [10.592, 10.579], [10.585, 10.573], [10.579, 10.568], [10.578, 10.569], [10.577, 10.572], [10.583, 10.576], [10.583, 10.572], [10.579, 10.573], [10.583, 10.576], [10.584, 10.579]]
[[10.588, 10.579], [10.588, 10.579], [10.59, 10.581], [10.596, 10.585], [10.599, 10.588], [10.596, 10.588], [10.593, 10.587], [10.595, 10.588], [10.608, 10.593], [10.621, 10.604], [10.625, 10.611], [10.62, 10.607], [10.611, 10.604], [10.612, 10.605], [10.615, 10.606], [10.616, 10.607], [10.62, 10.611], [10.627, 10.616], [10.628, 10.617], [10.626, 10.618], [10.625, 10.619], [10.625, 10.62], [10.626, 10.621], [10.633, 10.623], [10.634, 10.624], [10.634, 10.624], [10.633, 10.623], [10.627, 10.621], [10.626, 10.619], [10.626, 10.619], [10.628, 10.621], [10.633, 10.625], [10.637, 10.628], [10.642, 10.632], [10.643, 10.635], [10.643, 10.636], [10.644, 10.63], [10.643, 10.628], [10.636, 10.625], [10.655, 10.626], [10.68, 10.637], [10.669, 10.643], [10.654, 10.636], [10.654, 10.634], [10.66, 10.637], [10.651, 10.63], [10.637, 10.627], [10.64, 10.631], [10.639, 10.63], [10.637, 10.627], [10.636, 10.628], [10.633, 10.628], [10.631, 10.627], [10.629, 10.625], [10.628, 10.625], [10.626, 10.622], [10.63, 10.621], [10.637, 10.626], [10.639, 10.63], [10.639, 10.633], [10.642, 10.634], [10.645, 10.634], [10.646, 10.638], [10.647, 10.641], [10.646, 10.642], [10.649, 10.641], [10.655, 10.643], [10.654, 10.646], [10.648, 10.643], [10.645, 10.637], [10.641, 10.634], [10.637, 10.633], [10.636, 10.633], [10.636, 10.633], [10.635, 10.631], [10.634, 10.629], [10.636, 10.627], [10.634, 10.625], [10.633, 10.628], [10.636, 10.631], [10.637, 10.633], [10.638, 10.633], [10.638, 10.631], [10.634, 10.63], [10.634, 10.621], [10.628, 10.606], [10.611, 10.594], [10.604, 10.591], [10.598, 10.585], [10.588, 10.576], [10.582, 10.57], [10.579, 10.569], [10.578, 10.57], [10.58, 10.574], [10.583, 10.574], [10.581, 10.572], [10.581, 10.575]]
4 10.585 10.588
buy 6
10 10.593 10.611
buy 12
19 10.611 10.618
buy 21
10.624
10.624
24 10.625 10.624
buy 28
28 10.626 10.619
buy 29
35 10.626 10.636
buy 35
37 10.643 10.628
buy 38
41 10.636 10.643
buy 42
44 10.654 10.637
buy 46
47 10.637 10.631
buy 55
64 10.626 10.642
buy 64
67 10.646 10.646
buy 72
72 10.636 10.633
buy 75
75 10.634 10.629
buy 77
80 10.634 10.633
buy 80
81 10.637 10.633
buy 83
83 10.634 10.63
buy 92
93 10.578 10.574
buy 93
94 10.58 10.574
buy 95
96 10.581 10.575
buy 96
20
-0.018000000000000002
-0.003

如上,股价仅下跌了0.003,却亏损了0.018,该策略在该区间失效,还需要分析该策略失效的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值