打字猴:1.700510854e+09
1700510854 第3种情况是CLOSE在HIGH与LOW之上,这是一种“下跌”的态势,如图18-15所示。
1700510855
1700510856
1700510857
1700510858
1700510859 图18-15 CLOSE在HIGH与LOW之上
1700510860
1700510861 通过滑动窗口把这3种情况在每一分钟“向后看”的过程中都找出来。在这里,为了给出一个相对清晰的分类,把态势分成了7种,分别是涨幅超过40个点(RISE3)、涨幅超过20个点(RISE2)、涨幅超过10个点(RISE1)、涨跌幅度在10个点以内(NONE)、跌幅超过10个点(FALL1)、跌幅超过20个点(FALL2)和跌幅超过40个点(FALL3)。
1700510862
1700510863 调用这个Python文件,把内容输出到一个名为slidewindow.csv的文件中去。
1700510864
1700510865 python slidewindow.py>slidewindow.csv
1700510866
1700510867 下载文件,如图18-16所示。
1700510868
1700510869
1700510870
1700510871
1700510872 图18-16 sIidewindow.csv文件内容
1700510873
1700510874 第1个字段是当前时间;第2个字段是未来60分钟内的高点减去当前这一分钟收盘价的值,也就是涨幅;第3个字段是当前这一分钟的收盘价的值减去未来60分钟内的低点值;第4个字段是第2个字段值和第3个字段值的商,这个值可以粗略地分为正值较大(如图18-17所示)、正值较小(如图18-18所示)、负值较大(如图18-19所示)和负值较小(如图18-20所示)4种情况。
1700510875
1700510876
1700510877
1700510878
1700510879
1700510880   图18-17 正值较大     图18-18 正值较小     图18-19 负值较大     图18-20 负值较小   从形态上来看,我们肯定希望找到那些涨势/跌势明显的点。正值很大,表示明显的涨势;正值为1以内非常小的值,表示非常明显的跌势。在负值较小的情况下越接近1,说明涨势越明显;在负值较大的情况下越接近1(最大就是1),说明跌势越明显。正值且接近1的情况就不太好了,说明涨跌幅度相近,这非常不利于交易。所以,显然是幅度越大且涨跌态势越明确(不震荡)的情形是最好的下单入场点。
1700510881
1700510882 通过分析这个文件就会发现,只有正值较大和正值较小两种情况,也就是说,CLOSE一直都在HIGH和LOW之间。这种情况下就要看波动向哪边偏斜了,那些偏斜大的是我们比较喜欢的。在1小时内升幅最大的是386个点,跌幅最大的是266个点。我们试着找出那些波动幅度明显属于向高方向偏斜的(这里可以考虑大于1.5的),以及波动幅度明显属于向低方向偏斜的(这里可以考虑小于0.66的),看看数量分别有多少。
1700510883
1700510884 建立一个临时表SLIDEWINDOW。
1700510885
1700510886 CREATE TABLE SLIDEWINDOW(   DT DATETIME,   RISE_PIP DECIMAL(10,4),   FALL_PIP DECIMAL(10,4),   PROPORTION DECIMAL(10,4));
1700510887
1700510888 将分析结果插入这个临时表,编写Python文件slidewindow_insert.py。
1700510889
1700510890 #!/usr/bin/pythonimport os,sys,MySQLdb    try db=MySQLdb.connect(host=‘localhost’, user=‘root’, passwd=‘111111’, db=‘FOREX’)      cursor=db.cursor()  counter=0  cursor.execute(‘USE FOREX;’)  sql=‘SELECT * FROM EURUSD_1M’  cursor.execute(sql);  result=cursor.fetchall()    for i in range(0, cursor.rowcount):    startdt=str(result[i][0])    startpip=str(result[i][4])    cursor1=db.cursor()    cursor1.execute(‘USE FOREX;’)    sql1=‘INSERT INTO SLIDEWINDOW SELECT DT, MAX(HIGH)-‘ + startpip + ‘ AS RISE_PIP, ‘ + startpip + ‘-MIN(LOW)AS FALL_PIP, CASE WHEN ‘+ startpip + ‘<>MIN(LOW)THEN(MAX(HIGH)-‘ + startpip + ‘)/(‘ + startpip + ‘-MIN(LOW))ELSE(MAX(HIGH)-‘ + startpip + ‘)/0.0001 END FROM EURUSD_1M WHERE DT BETWEEN ”’ + startdt + ’” AND DATE_ADD(”’ + startdt + ’”, INTERVAL 60 MINUTE)’    cursor1.execute(sql1)        if i%2000==0:      db.commit()  db.commit()except MySQLdb.Error,e print “Error %s” %(str(e.args[0])+’:’+str(e.args[1]))  exit(1)cursor1.close()cursor.close()db.close()
1700510891
1700510892 使用SQL语句,计算涨幅与跌幅波动比大于1.5且涨幅大于10个点的分钟数。
1700510893
1700510894 SELECT   COUNT(*)FROM   SLIDEWINDOWWHERE   PROPORTION>=1.5 AND RISE_PIP>=0.0010;
1700510895
1700510896
1700510897 共找到1606759分钟的数据,占5447760分钟记录的29.5%,说起来不算太差。在这种情况下,理论上有超过的时间可以下单买涨。
1700510898
1700510899 下面计算一下涨幅与跌幅波动比小于0.66且跌幅大于10个点的分钟数。
1700510900
1700510901 SELECT   COUNT(*)FROM   SLIDEWINDOWWHERE   PROPORTION<=0.66 AND FALL_PIP>=0.0010;
1700510902
1700510903 共找到1576827分钟的数据,占5447760分钟记录的28.9%,与涨势的情况相差无几。
[ 上一页 ]  [ :1.700510854e+09 ]  [ 下一页 ]