QUANTAXIS
QUANTAXIS copied to clipboard
[群友指标] 趋势指标 FROM 浙江一柱擎天xinan
今天我们拿到群友(浙江一柱擎天xinan)的一个通达信指标 让我们快速改写 展示下吧
这是原指标
N:=20;
N1:=7;
N2:=69;
T1:=IF((DATE<=1341231),1,0);
M3:=EMA(CLOSE,3);
M8:EMA(CLOSE,8),COLOR008000;
M13:EMA(M8,13),COLOR0000FF;
M62:EMA(M8,55),COLORF0F000;
VAR1:=EMA(M13,62);
M81:EMA(M62,81),COLOR00FFFF;
M144:EMA(VAR1,144),LINETHICK2,COLOR0000FF;
M250:EMA(VAR1,250),POINTDOT,LINETHICK2,COLORF00FF0;
VAR2:=(CLOSE+HIGH+LOW)/(3);
VAR3:=(EMA(VAR2,10))*(T1);
VAR4:=(REF(VAR3,1))*(T1);
STICKLINE((VAR3>VAR4),VAR3,VAR4,4,0),COLOR00FFFF;
STICKLINE((VAR3<VAR4),VAR3,VAR4,4,0),COLORFF0000;
VAR5:((REF(HIGH,1)+REF(LOW,1))/(2))*(T1);
VAR6:MA(CLOSE,N)+((2)*(STD(CLOSE,N)))*(T1);
DRAWTEXT(CROSS(VAR3,VAR4),(VAR3)*(0.98),'★'),COLOR00FFFF;
DRAWTEXT(CROSS(VAR5,VAR6),(HIGH)*(1.04),'↓卖'),COLOR008000;
VAR7:=REF(CLOSE,1);
VAR8:=((SMA(MAX(CLOSE-VAR7,0),N1,1))/(SMA(ABS(CLOSE-VAR7),N1,1)))*(100);
VAR9:=CROSS(N2,VAR8);
VARA:=(FILTER(VAR9,4))*(T1);
DRAWTEXT(VARA,(HIGH)*(1.04),'↓卖'),COLORFFFFFF;
VARB:=((2)*(CLOSE)+HIGH+LOW)/(4);
VARC:=LLV(LOW,34);
VARD:=HHV(HIGH,34);
VARE:=(EMA(((VARB-VAR1)/(VAR5-VAR1))*(100),7))*(T1);
VARF:=(EMA((0.667)*(REF(VARE,1))+(0.333)*(VARE),5))*(T1);
DRAWTEXT(IF(((COUNT((CLOSE<REF(CLOSE,1)),8))/(8)>0.6) AND (VOL>=(1.5)*(MA(VOL,5))) AND COUNT((VARE>=VARF),3) AND (REF(LOW,1)=LLV(LOW,120)),1,0),LOW,'●买进'),COLORFF00FF;
DRAWTEXT(IF(((COUNT((CLOSE<REF(CLOSE,1)),13))/(13)>0.6) AND COUNT((VARE>VARF),6) AND (REF(LOW,5)=LLV(LOW,120)) AND REF((CLOSE>=OPEN),4) AND REF((CLOSE>OPEN),3) AND REF((CLOSE>OPEN),2) AND REF((OPEN>CLOSE),1) AND (OPEN>REF(CLOSE,1)),1,0),LOW,'●买进'),COLOR00FFFF;
VAR10:=(MA(CLOSE,80)-(MA(CLOSE,10))/(3))*(T1);
DRAWTEXT(IF((CLOSE<VAR10) AND ((VOL)/(240)>(MA(VOL,5))/(240)) AND (CLOSE>(REF(CLOSE,1))*(1.08)) AND (CLOSE<(MA(CLOSE,13))*(1.3)),1,0),LOW,'●抄底'),COLOR0000FF;
wow 看起来这个指标又大又圆 非常酷炫, 让我们快速改写成python版本的吧
首先我们升级到最新版本的quantaxis, 因为加了个FILTER的函数
docker用户 请docker-compose pull 来更新下你的docker镜像
pip install quantaxis==1.5.21
然后我们愉快的开始吧
import QUANTAXIS as QA
data = QA.QA_fetch_stock_day_adv('000001')
data = data.to_qfq()
此处我们在add_func前动态的增加了一列 因为通达信有个神奇的date属性是用19000000+这个值= 真实值 虽然神奇 但是实现起来也非常容易
DATE
取得该周期从1900以来的的年月日.
用法:
DATE
例如函数返回1000101,表示2000年1月1日,DATE+19000000后才是真正的日期值
data.data = data.data.assign(date=data.date.map(lambda x: str(x)[0:10]).map(QA.QA_util_date_str2int).map(lambda x: x-19000000))
我们只需要对通达信的代码 进行快速批量替换即可:
:= 换成 =
; 换成 空的
OPEN 换成 data.open
HIGH 换成 data.high
LOW 换成 data.low
CLOSE 换成 data.close
VOLUME 换成 data.volume
AND 换成 &
DRAWTEXT 换成 text_ =
DRAWLINE 换成 line_ =
from QUANTAXIS.QAIndicator.base import *
def indx(data):
N=20
N1=7
N2=69
#T1=IF((DATE<=1341231),1,0)
#print(data.date)
T1 = data.date.apply(lambda x: 1 if x<=1341231 else 0)
M3=EMA(data.close,3)
M8=EMA(data.close,8)
# M8:EMA(data.close,8),COLOR008000
M13 = EMA(M8, 13)
# M13:EMA(M8,13),COLOR0000FF
M62 = EMA(M8, 55)
# M62:EMA(M8,55),COLORF0F000
VAR1=EMA(M13,62)
M81 = EMA(M62,81)
M144 = EMA(VAR1, 144)
M250 = EMA(VAR1,250)
# M81:EMA(M62,81),COLOR00FFFF
# M144:EMA(VAR1,144),LINETHICK2,COLOR0000FF
# M250:EMA(VAR1,250),POINTDOT,LINETHICK2,COLORF00FF0
VAR2=(data.close+data.high+data.low)/(3)
VAR3=(EMA(VAR2,10))*(T1)
VAR4=(REF(VAR3,1))*(T1)
Line1 = IF(VAR3>VAR4, VAR3, VAR4)
Line2 = IF(VAR3<VAR4, VAR3, VAR4)
# STICKLINE((VAR3>VAR4),VAR3,VAR4,4,0),COLOR00FFFF
# STICKLINE((VAR3<VAR4),VAR3,VAR4,4,0),COLORFF0000
VAR5=((REF(data.high,1)+REF(data.low,1))/(2))*(T1)
VAR6=MA(data.close,N)+((2)*(STD(data.close,N)))*(T1)
Text1 =CROSS(VAR3,VAR4)
Text2 = CROSS(VAR5,VAR6)
# DRAWTEXT(CROSS(VAR3,VAR4),(VAR3)*(0.98),'¡ï'),COLOR00FFFF
# DRAWTEXT(CROSS(VAR5,VAR6),(data.high)*(1.04),'¡ýÂô'),COLOR008000
VAR7=REF(data.close,1)
VAR8=((SMA(MAX(data.close-VAR7,0),N1,1))/(SMA(ABS(data.close-VAR7),N1,1)))*(100)
VAR9=CROSS(N2,VAR8)
VARA=(FILTER(VAR9,4))*(T1)
Text3= VARA
# DRAWTEXT(VARA,(data.high)*(1.04),'¡ýÂô'),COLORFFFFFF
VARB=((2)*(data.close)+data.high+data.low)/(4)
VARC=LLV(data.low,34)
VARD=HHV(data.high,34)
VARE=(EMA(((VARB-VAR1)/(VAR5-VAR1))*(100),7))*(T1)
VARF=(EMA((0.667)*(REF(VARE,1))+(0.333)*(VARE),5))*(T1)
Text4 = IF(((COUNT((data.close<REF(data.close,1)),8))/(8)>0.6) & (data.volume>=(1.5)*(MA(data.volume,5))) & COUNT((VARE>=VARF),3) & (REF(data.low,1)==LLV(data.low,120)),1,0)
Text5 = IF(((COUNT((data.close<REF(data.close,1)),13))/(13)>0.6)&
COUNT((VARE>VARF),6) &
(REF(data.low,5)==LLV(data.low,120)) &
REF((data.close>=data.open),4) &
REF((data.close>data.open),3) &
REF((data.close>data.open),2) &
REF((data.open>data.close),1) &
(data.open>REF(data.close,1)),1,0)
# DRAWTEXT(IF(((COUNT((data.close<REF(data.close,1)),8))/(8)>0.6) & (data.volume>=(1.5)*(MA(data.volume,5))) & COUNT((VARE>=VARF),3) & (REF(data.low,1)=LLV(data.low,120)),1,0),data.low,'¡ñÂò½ø'),COLORFF00FF
# DRAWTEXT(IF(((COUNT((data.close<REF(data.close,1)),13))/(13)>0.6) & COUNT((VARE>VARF),6) & (REF(data.low,5)=LLV(data.low,120)) & REF((data.close>=data.open),4) & REF((data.close>data.open),3) & REF((data.close>data.open),2) & REF((data.open>data.close),1) & (data.open>REF(data.close,1)),1,0),data.low,'¡ñÂò½ø'),COLOR00FFFF
VAR10=(MA(data.close,80)-(MA(data.close,10))/(3))*(T1)
return pd.DataFrame({
'M3': M3,
'VAR1': VAR1,
'VAR2': VAR2,
'VAR3': VAR3,
'VAR4': VAR4,
'VAR5': VAR5,
'VAR6': VAR6,
'VAR7': VAR7,
'VAR8': VAR8,
'VAR9': VAR9,
'VARA': VARA,
'VARB': VARB,
'VARC': VARC,
'VARD': VARD,
'VARE': VARE,
'VARF': VARF,
'VAR10': VAR10,
'Line1': Line1,
'Line2': Line2,
'Text1': Text1,
'Text2': Text2,
'Text3': Text3,
'Text4': Text4,
'Text5': Text5,
})
指标写完了 你肯定想看看效果 满足你 此处数据太多 我们展示最后25行
ind = data.add_func(indx)
ind.tail(25)
M3 | VAR1 | VAR2 | VAR3 | VAR4 | VAR5 | VAR6 | VAR7 | VAR8 | VAR9 | ... | VARE | VARF | VAR10 | Line1 | Line2 | Text1 | Text2 | Text3 | Text4 | Text5 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
date | code | |||||||||||||||||||||
2019-08-14 | 000001 | 14.877021 | 13.373625 | 14.996667 | 14.418641 | 14.290191 | 14.910 | 15.119495 | 14.89 | 70.181181 | 0 | ... | 63.375610 | 20.599233 | 8.637583 | 14.418641 | 14.290191 | 0 | 0 | 0 | 0 | 0 |
2019-08-15 | 000001 | 14.908510 | 13.398722 | 14.833333 | 14.494040 | 14.418641 | 15.010 | 15.223727 | 14.97 | 68.851490 | 1 | ... | 70.204363 | 35.616017 | 8.612208 | 14.494040 | 14.418641 | 0 | 0 | 0 | 0 | 0 |
2019-08-16 | 000001 | 14.904255 | 13.425360 | 14.940000 | 14.575123 | 14.494040 | 14.780 | 15.312648 | 14.94 | 66.880366 | 0 | ... | 80.421536 | 48.279572 | 8.582917 | 14.575123 | 14.494040 | 0 | 0 | 0 | 0 | 0 |
2019-08-19 | 000001 | 14.912128 | 13.453400 | 14.793333 | 14.614798 | 14.575123 | 14.960 | 15.393137 | 14.90 | 67.424380 | 0 | ... | 83.076009 | 59.288206 | 8.541208 | 14.614798 | 14.575123 | 0 | 0 | 0 | 0 | 0 |
2019-08-20 | 000001 | 14.951064 | 13.482734 | 14.986667 | 14.682410 | 14.614798 | 14.730 | 15.469484 | 14.92 | 69.471949 | 0 | ... | 92.468296 | 68.260018 | 8.494083 | 14.682410 | 14.614798 | 0 | 0 | 0 | 0 | 0 |
2019-08-21 | 000001 | 14.700532 | 13.512667 | 14.573333 | 14.662578 | 14.682410 | 14.985 | 15.477505 | 14.99 | 44.371096 | 1 | ... | 86.837639 | 75.704441 | 8.467750 | 14.682410 | 14.662578 | 0 | 0 | 1 | 0 | 0 |
2019-08-22 | 000001 | 14.505266 | 13.542552 | 14.320000 | 14.600291 | 14.662578 | 14.635 | 15.480541 | 14.45 | 39.999731 | 0 | ... | 82.862440 | 78.974260 | 8.476583 | 14.662578 | 14.600291 | 0 | 0 | 0 | 0 | 0 |
2019-08-23 | 000001 | 14.577633 | 13.572288 | 14.580000 | 14.596602 | 14.600291 | 14.325 | 15.505853 | 14.31 | 53.093099 | 0 | ... | 96.197431 | 81.750504 | 8.479125 | 14.600291 | 14.596602 | 0 | 0 | 0 | 0 | 0 |
2019-08-26 | 000001 | 14.413816 | 13.601382 | 14.300000 | 14.542674 | 14.596602 | 14.545 | 15.504805 | 14.65 | 40.855926 | 0 | ... | 90.325930 | 85.914410 | 8.513125 | 14.596602 | 14.542674 | 0 | 0 | 0 | 0 | 0 |
2019-08-27 | 000001 | 14.361908 | 13.629573 | 14.343333 | 14.506431 | 14.542674 | 14.325 | 15.502408 | 14.25 | 43.149005 | 0 | ... | 93.103939 | 87.693276 | 8.550458 | 14.542674 | 14.506431 | 0 | 0 | 0 | 0 | 0 |
2019-08-28 | 000001 | 14.315954 | 13.656663 | 14.200000 | 14.450716 | 14.506431 | 14.360 | 15.504222 | 14.31 | 41.885923 | 0 | ... | 89.762817 | 89.125966 | 8.590292 | 14.506431 | 14.450716 | 0 | 0 | 0 | 0 | 0 |
2019-08-29 | 000001 | 14.222977 | 13.682399 | 14.150000 | 14.396040 | 14.450716 | 14.165 | 15.504098 | 14.27 | 37.413859 | 0 | ... | 91.286061 | 89.507330 | 8.636417 | 14.450716 | 14.396040 | 0 | 0 | 0 | 0 | 0 |
2019-08-30 | 000001 | 14.191489 | 13.706679 | 14.216667 | 14.363427 | 14.396040 | 14.160 | 15.487581 | 14.13 | 39.040973 | 0 | ... | 95.808358 | 90.602215 | 8.686083 | 14.396040 | 14.363427 | 0 | 0 | 0 | 0 | 0 |
2019-09-02 | 000001 | 14.320744 | 13.729765 | 14.353333 | 14.361592 | 14.363427 | 14.245 | 15.415975 | 14.16 | 52.861858 | 0 | ... | 103.285372 | 93.167545 | 8.723875 | 14.363427 | 14.361592 | 0 | 0 | 0 | 0 | 0 |
2019-09-03 | 000001 | 14.310372 | 13.751701 | 14.353333 | 14.360090 | 14.361592 | 14.305 | 15.312087 | 14.45 | 46.499911 | 0 | ... | 104.045453 | 96.624523 | 8.771875 | 14.361592 | 14.360090 | 0 | 0 | 0 | 0 | 0 |
2019-09-04 | 000001 | 14.375186 | 13.772682 | 14.416667 | 14.370377 | 14.360090 | 14.380 | 15.210253 | 14.30 | 52.698667 | 0 | ... | 104.783586 | 99.180099 | 8.796583 | 14.370377 | 14.360090 | 1 | 0 | 0 | 0 | 0 |
2019-09-05 | 000001 | 14.477593 | 13.792994 | 14.660000 | 14.423036 | 14.370377 | 14.405 | 15.214165 | 14.44 | 58.331246 | 0 | ... | 113.187268 | 101.980737 | 8.808333 | 14.423036 | 14.370377 | 0 | 0 | 0 | 0 | 0 |
2019-09-06 | 000001 | 14.643797 | 13.813059 | 14.746667 | 14.481878 | 14.423036 | 14.700 | 15.236314 | 14.58 | 66.074257 | 0 | ... | 111.652124 | 105.545846 | 8.827500 | 14.481878 | 14.423036 | 0 | 0 | 0 | 0 | 0 |
2019-09-09 | 000001 | 14.666898 | 13.833019 | 14.763333 | 14.533051 | 14.481878 | 14.715 | 15.167597 | 14.81 | 59.360063 | 0 | ... | 109.589451 | 107.352315 | 8.840958 | 14.533051 | 14.481878 | 0 | 0 | 0 | 0 | 0 |
2019-09-10 | 000001 | 14.608449 | 13.852810 | 14.533333 | 14.533103 | 14.533051 | 14.800 | 15.131346 | 14.69 | 52.147513 | 0 | ... | 100.263702 | 107.062869 | 8.860083 | 14.533103 | 14.533051 | 0 | 0 | 0 | 0 | 0 |
2019-09-11 | 000001 | 14.584225 | 13.872386 | 14.576667 | 14.541023 | 14.533103 | 14.525 | 15.076714 | 14.55 | 52.627183 | 0 | ... | 102.017382 | 104.991139 | 8.875417 | 14.541023 | 14.533103 | 0 | 0 | 0 | 0 | 0 |
2019-09-12 | 000001 | 14.632112 | 13.891829 | 14.663333 | 14.563262 | 14.541023 | 14.585 | 15.034383 | 14.56 | 58.457105 | 0 | ... | 104.488490 | 104.274179 | 8.885583 | 14.563262 | 14.541023 | 0 | 0 | 0 | 0 | 0 |
2019-09-16 | 000001 | 14.541056 | 13.910944 | 14.523333 | 14.556002 | 14.563262 | 14.655 | 14.980293 | 14.68 | 45.842009 | 0 | ... | 98.326423 | 103.661627 | 8.902917 | 14.563262 | 14.556002 | 0 | 0 | 0 | 0 | 0 |
2019-09-17 | 000001 | 14.390528 | 13.929391 | 14.290000 | 14.507638 | 14.556002 | 14.560 | 14.915828 | 14.45 | 37.273719 | 0 | ... | 87.545335 | 100.686525 | 8.933542 | 14.556002 | 14.507638 | 0 | 0 | 0 | 0 | 0 |
2019-09-18 | 000001 | 14.400264 | 13.947127 | 14.376667 | 14.483825 | 14.507638 | 14.315 | 14.813055 | 14.24 | 46.685140 | 0 | ... | 95.416077 | 97.179781 | 8.955375 | 14.507638 | 14.483825 | 0 | 0 | 0 | 0 | 0 |
25 rows × 24 columns
你会惊讶 卧槽 这么简单的吗, 没错 让我们来对比下数据
so easy 麻麻再也不用担心通达信的代码转换问题了
厉害厉害,特来给天神点个赞
牛逼!
闹不住
威武!!!
牛逼
天神v5