老师您好,我是一名TB的初学者,我想把同花顺和通信达里面的lon长线指标转换成为TB的代码,经过我自己的改写,一直都无法实现等效转换,请老师帮忙,谢谢!!!
这一段是同花顺中lon长线的代码
LC:=REF(CLOSE, 1);
VID:=SUM(VOL, 2)/((HHV(HIGH,2)-LLV(LOW,2))*100);
RC:=(CLOSE-LC)*VID;
LONG:=SUM(RC, 0);
LONGMA1:=SMA(LONG,10,1);
LONGMA2:=SMA(LONG,20,1);
LON:(LONGMA1-LONGMA2),COLORSTICK;
LONGMA:MA(LON, 10);
这一段是python版的代码
import pandas as pd
def lon(df, n=10):
lc = df[\'close\'].shift(1)
a = (df[\'high\'].rolling(2).max() - df[\'low\'].rolling(2).min()) * 100
vid = df[\'volume\'].rolling(2).sum() / a
rc = (df[\'close\'] - lc) * vid
long = rc.cumsum()
dif = long.ewm(com=9, adjust=False).mean()
dea = long.ewm(com=19, adjust=False).mean()
lon = dif - dea
return pd.DataFrame({\'lon\': lon, \'lonma\': lon.rolling(n).mean()}, index=df.index)
这一段是我自己写的代码
Params
Numeric N(10); // DIFF和DEA的周期参数
Vars
Series<Numeric> LC;
Series<Numeric> VID;
Series<Numeric> RC;
Series<Numeric> LONG1;
Series<Numeric> DIFF;
Series<Numeric> DEA;
Series<Numeric> LON;
Series<Numeric> LONMA;
Series<Numeric> LONT;
Series<Numeric> H1;
Series<Numeric> L1;
Events
OnBar(ArrayRef<Integer> indexs)
{
{
LC = close [1];
H1 = HighD (2);
L1 = LowD (2);
VID = SummationFC(V, 2) /(( H1 - L1 )* 100);
RC = (Close - LC) * VID;
LONG1 = Summation(RC, N);
DIFF = SMA(LONG1, 10, 1);
DEA = SMA(LONG1, 20, 1);
LON = DIFF - DEA;
LONMA = SMA(LON, N,0);
}
PlotNumeric (\"Lon\", LON);
PlotNumeric (\"LONG1\", LONG1);
}
然后在我自己写的代码中,画线是画在主图里面,我想把图画在附图。希望老师指导,非常感谢!!!
一个简单的方法,就是把你策略公式的属性中显示方式,由主图改为子图,这样就显示在副图中了,另外同花顺里的MA,对应的函数是AverageFC,不是SMA,高低点也取错了,结果肯定不同了,供参考吧
可私