[box=Orange]
631.问:
原来公式:今日下影线‘大于’上影线3倍以上
MIN(o,c)-l>2.2*(h-MAX(o,c));
答(一鸣):
(h-MAX(o,c))/(MIN(o,c)-l)>3;
632.问:
原公式:最近一次“下跌”走势最后收盘价高于前一次“下跌”走势最后收盘价
bk1:=barslast(cross(ma(c,2),c+0.0009))+1;
llv(c,bk1)>ref(llv(c,bk1),bk1);
请改为:最近一次“上涨”走势最后收盘价高于前一次“上涨”走势最后收盘价
答(一鸣):
bk1:=barslast(cross(c,ma(c,2)+0.0009))+1;
hhv(c,bk1)>ref(hhv(c,bk1),bk1);
问:
条件不应该包括当天反弹和近几天连续上涨的走势,(即如果今天或近几天是上涨则是上一次上涨走势和再上一次上涨走势的比较)
答(一鸣):
{这次上涨不算}
bk0:=barslast(cross(c,ma(c,2)+0.0009))+1;
bk1:=sumbars(cross(ma(c,2),c+0.0009),1);
bk2:=sumbars(cross(ma(c,2),c+0.0009),2);
ref(hhv(c,bk0),bk1)>ref(hhv(c,bk0),bk2);
633.问:
牵牛的爱憎分明能改成DZH吗
DRAWGBK(C>O,COLORRGB(0,11,150),COLORRGB(55,50,100),1);
Var1:=MA(CLOSE,20);
高手多等待: 100*(CLOSE-Var1)/STD(CLOSE,20),LINETHICK0 ;
低手多无奈: EMA(高手多等待,10),LINETHICK0 ;
Var2:=EMA(高手多等待,5);
Var3:=EMA(低手多无奈,5);
Var4:=EMA(HHV(HIGH,500),21);
Var5:=EMA(HHV(HIGH,250),21);
Var6:=EMA(HHV(HIGH,90),21);
Var7:=EMA(LLV(LOW,500),21);
Var8:=EMA(LLV(LOW,250),21);
Var9:=EMA(LLV(LOW,90),21);
VarA:=EMA((Var7*0.96+Var8*0.96+Var9*0.96+Var4*0.558+Var5*0.558+Var6*0.558)/6,21);
VarB:=EMA((Var7*1.25+Var8*1.23+Var9*1.2+Var4*0.55+Var5*0.55+Var6*0.65)/6,21);
VarC:=EMA((Var7*1.3+Var8*1.3+Var9*1.3+Var4*0.68+Var5*0.68+Var6*0.68)/6,21);
VarD:=EMA((VarA*3+VarB*2+VarC)/6*1.738,21);
VarE:=REF(LOW,1);
VarF:=SMA(ABS(LOW-VarE),3,1)/SMA(MAX(LOW-VarE,0),3,1)*100;
Var10:=IF(CLOSE*1.35<=VarD,VarF*10,VarF/10);
Var11:=EMA(Var10,3);
Var12:=LLV(LOW,30);
Var13:=HHV(Var11,30);
Var14:=IF(LOW<=Var12,(Var11+Var13*2)/2,0);
Var15:=EMA(Var14,3)/500-100;
Var16:=0.2*Var15;
Var17:=1.2*Var15;
Var18:=(2*CLOSE+HIGH+LOW)/4;
Var19:=LLV(LOW,34);
Var1A:=HHV(HIGH,34);
Var1B:=(Var18-LLV(LOW,7))/(HHV(HIGH,7)-LLV(LOW,7))*100;
Var1C:=EMA(Var1B,3);
Var1D:=EMA(Var1C,3);
Var1E:=EMA((Var18-Var19)/(Var1A-Var19)*100,9);
Var1F:=EMA(0.667*REF(Var1E,1)+0.333*Var1E,3);
Var20:=LLV(HIGH,240);
Var21:=100*(CLOSE-Var20)/Var20;
Var22:=HHV(HIGH,240);
Var23:=100*(Var22-CLOSE)/CLOSE;
Var24:=REF(HHV(CLOSE,60),1);
Var25:=REF(LLV(CLOSE,60),1);
Var26:=100*(CLOSE-Var25)/(Var24-Var25);
{画柱线}
STICKLINE(高手多等待>=低手多无奈,高手多等待,低手多无奈,6,0),colorcc99ff;
STICKLINE(高手多等待<低手多无奈,低手多无奈,高手多等待,6,0),colorcc6600;
STICKLINE(Var2>=Var3,Var2,Var3,6,0),colorcc99ff;//柱线下段
STICKLINE(Var2<Var3,Var3,Var2,6,0),colorcc6600;
STICKLINE(CROSS(高手多等待,低手多无奈),高手多等待,低手多无奈,8,0),colorred;
STICKLINE(高手多等待>=170,高手多等待,低手多无奈,6,0),colorcc99ff;
答(广州宝贝):
DZH
Var1:=MA(CLOSE,20);
高手多等待: 100*(CLOSE-Var1)/STD(CLOSE,20),LINETHICK0 ;
低手多无奈: EMA(高手多等待,10),LINETHICK0 ;
Var2:=EMA(高手多等待,5);
Var3:=EMA(低手多无奈,5);
Var4:=EMA(HHV(HIGH,500),21);
Var5:=EMA(HHV(HIGH,250),21);
Var6:=EMA(HHV(HIGH,90),21);
Var7:=EMA(LLV(LOW,500),21);
Var8:=EMA(LLV(LOW,250),21);
Var9:=EMA(LLV(LOW,90),21);
VarA:=EMA((Var7*0.96+Var8*0.96+Var9*0.96+Var4*0.558+Var5*0.558+Var6*0.558)/6,21);
VarB:=EMA((Var7*1.25+Var8*1.23+Var9*1.2+Var4*0.55+Var5*0.55+Var6*0.65)/6,21);
VarC:=EMA((Var7*1.3+Var8*1.3+Var9*1.3+Var4*0.68+Var5*0.68+Var6*0.68)/6,21);
VarD:=EMA((VarA*3+VarB*2+VarC)/6*1.738,21);
VarE:=REF(LOW,1);
VarF:=SMA(ABS(LOW-VarE),3,1)/SMA(MAX(LOW-VarE,0),3,1)*100;
Var10:=IF(CLOSE*1.35<=VarD,VarF*10,VarF/10);
Var11:=EMA(Var10,3);
Var12:=LLV(LOW,30);
Var13:=HHV(Var11,30);
Var14:=IF(LOW<=Var12,(Var11+Var13*2)/2,0);
Var15:=EMA(Var14,3)/500-100;
Var16:=0.2*Var15;
Var17:=1.2*Var15;
Var18:=(2*CLOSE+HIGH+LOW)/4;
Var19:=LLV(LOW,34);
Var1A:=HHV(HIGH,34);
Var1B:=(Var18-LLV(LOW,7))/(HHV(HIGH,7)-LLV(LOW,7))*100;
Var1C:=EMA(Var1B,3);
Var1D:=EMA(Var1C,3);
Var1E:=EMA((Var18-Var19)/(Var1A-Var19)*100,9);
Var1F:=EMA(0.667*REF(Var1E,1)+0.333*Var1E,3);
Var20:=LLV(HIGH,240);
Var21:=100*(CLOSE-Var20)/Var20;
Var22:=HHV(HIGH,240);
Var23:=100*(Var22-CLOSE)/CLOSE;
Var24:=REF(HHV(CLOSE,60),1);
Var25:=REF(LLV(CLOSE,60),1);
Var26:=100*(CLOSE-Var25)/(Var24-Var25);
{画柱线}
STICKLINE(高手多等待>=低手多无奈,高手多等待,低手多无奈,5,0),colorcc99ff;
STICKLINE(高手多等待<低手多无奈,低手多无奈,高手多等待,5,0),colorcc6600;
STICKLINE(Var2>=Var3,Var2,Var3,5,0),colorcc99ff;
STICKLINE(Var2<Var3,Var3,Var2,5,0),colorcc6600;
STICKLINE(CROSS(高手多等待,低手多无奈),高手多等待,低手多无奈,7,0),colorred;
STICKLINE(高手多等待>=170,高手多等待,低手多无奈,5,0),colorcc99ff;
634.问:
如何用dll文件制作公式?
答(wanghuo):
为什么要用dll文件来开发公式?
1.为了突破分析家和飞狐现有功能的限制。
2.为了提高公式速度。
3.为了加密公式的理念。
4.增加新的功能。
下面我们逐渐用vc++ 6.0来讲制作分析家dll公式的过程。
[第一讲]准备的东东
1.安装VC++ 6.0软件
2.下载分析家C语言接口文件。
3.具备C++编程的知识。
如果不会,自己下载教学软件,或找本相关的书籍。
4.会分析家基本公式编写。
如果不会,在本站下载相关分析家公式编写资料。
准备好后,我开始讲一个完整公式的编写过程。
[第二讲]练习编译dll文件。
1.解包分析家c语言接口
2.启动Vc++
点击菜单[File]选Open Workspace。
选择文件FxjFunc.dsw
3.选择菜单[Build],选择Build FxjFunc.dll
生成FxjFunc.dll文件。如果没有错误,显示下面结果。
--------------------Configuration: FxjFunc - Win32 Debug--------------------
FxjFunc.dll - 0 error(s), 0 warning(s)
4.生成的FxjFunc.dll文件在D:\SUPERSTK目录中。
如果不在当前使用的分析家目录,可以将FxjFunc.dll文件复制到分析家目录中,也可以复制到飞狐
\FoxTrader\FmlDLL目录中。
5.在飞狐或分析家建立公式,看看结果。公式只有下面一句,10日close均线。
ma1:"fxjfunc@mymaclose"(10); 如果结果正确,你已经成功编写了dll公式了。
在后面的讲课中介绍编写技巧。
第三讲]分析家扩展函数规范及设计
分析家扩展函数规范如下:
///////////////////////////////////////////////////////////////////////////
#ifndef __FXJFUNC_H_INCLUDE
#define __FXJFUNC_H_INCLUDE
/*
///////////////////////////////////////////////////////////////////////////
分析家扩展函数规范V3.10
1.本规范适用于分析家3.10标准版和专业版公式系统.
2.扩展函数用于实现系统函数不能实现的特殊算法.
3.扩展函数用windows 32位动态连接库实现,建议使用Microsoft Visual C++编程.
4.调用时在公式编辑器中写"动态库名称@函数名称"(参数表)即可,例如下面函数可以写
为"FXJFUNC@MYCMALOSE"(5)
5.动态连接库名称和函数名称可以自己定义.
6.使用时可以将动态库拷贝到分析家目录下使用.
*/
#ifdef __cplusplus
extern "C"
{
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
//分析周期
enum DATA_TYPE
{
TICK_DATA=2, //分笔成交
MIN1_DATA, //1分钟线
MIN5_DATA, //5分钟线
MIN15_DATA, //15分钟线
MIN30_DATA, //30分钟线
MIN60_DATA, //60分钟线
DAY_DATA, //日线
WEEK_DATA, //周线
MONTH_DATA, //月线
MULTI_DATA //多日线
};
///////////////////////////////////////////////////////////////////////////
//基本数据
typedef struct tagSTKDATA
{
time_t m_time; //时间,UCT
float m_fOpen; //开盘
float m_fHigh; //最高
float m_fLow; //最低
float m_fClose; //收盘
float m_fVolume; //成交量
float m_fAmount; //成交额
WORD m_wAdvance; //上涨家数(仅大盘有效)
WORD m_wDecline; //下跌家数(仅大盘有效)
} STKDATA;
////////////////////////////////////////////////////////////////////////////
//扩展数据,用于描述分笔成交数据的买卖盘
typedef union tagSTKDATAEx
{
struct
{
float m_fBuyPrice[3]; //买1--买3价
float m_fBuyVol[3]; //买1--买3量
float m_fSellPrice[3]; //卖1--卖3价
float m_fSellVol[3]; //卖1--卖3量
};
float m_fDataEx[12]; //保留
} STKDATAEx;
/////////////////////////////////////////////////////////////////////////////
/*财务数据顺序(m_pfFinData内容)
序号 内容
0 总股本(万股),
1 国家股,
2 发起人法人股,
3 法人股,
4 B股,
5 H股,
6 流通A股,
7 职工股,
8 A2转配股,
9 总资产(千元),
10 流动资产,
11 固定资产,
12 无形资产,
13 长期投资,
14 流动负债,
15 长期负债,
16 资本公积金,
17 每股公积金,
18 股东权益,
19 主营收入,
20 主营利润,
21 其他利润,
22 营业利润,
23 投资收益,
24 补贴收入,
25 营业外收支,
26 上年损益调整,
27 利润总额,
28 税后利润,
29 净利润,
30 未分配利润,
31 每股未分配,
32 每股收益,
33 每股净资产,
34 调整每股净资,
35 股东权益比,
36 净资收益率
*/
/////////////////////////////////////////////////////////////////////////////
//函数数据结构
typedef struct tagCALCINFO
{
const DWORD m_dwSize; //结构大小
const DWORD m_dwVersion; //调用软件版本(V2.10 : 0x210)
const DWORD m_dwSerial; //调用软件序列号
const char* m_strStkLabel; //股票代码
const BOOL m_bIndex; //大盘
const int m_nNumData; //数据数量(pData,pDataEx,pResultBuf数据数量)
const STKDATA* m_pData; //常规数据,注意:当m_nNumData==0时可能为 NULL
const STKDATAEx* m_pDataEx; //扩展数据,分笔成交买卖盘,注意:可能为 NULL
const int m_nParam1Start; //参数1有效位置
const float* m_pfParam1; //调用参数1
const float* m_pfParam2; //调用参数2
const float* m_pfParam3; //调用参数3
const float* m_pfParam4; //调用参数3
float* m_pResultBuf; //结果缓冲区
const DATA_TYPE m_dataType; //数据类型
const float* m_pfFinData; //财务数据
} CALCINFO;
/*
注:
1.函数调用参数由m_pfParam1--m_pfParam4带入,若为NULL则表示该参数无效.
2.当一个参数无效时,则其后的所有参数均无效.
如:m_pfParam2为NULL,则m_pfParam3,m_pfParam4一定为NULL.
3.参数1可以是常数参数或序列数参数,其余参数只能为常数参数.
4.若m_nParam1Start<0, 则参数1为常数参数,参数等于*m_pfParam1;
5.若m_nParam1Start>=0,则参数1为序列数参数,m_pfParam1指向一个浮点型数组,
数组大小为m_nNumData,数据有效范围为m_nParam1Start--m_nNumData.
在时间上m_pData[x] 与 m_pfParam1[x]是一致的
*/
///////////////////////////////////////////////////////////////////////////////////
/* 函数输出
__declspec(dllexport) int xxxxxxxx(CALCINFO* pData); ---------- A
__declspec(dllexport) int xxxxxxxxVAR(CALCINDO* pData); ---------- B
1.函数名称需全部大写.
2.函数必须以上述A,B两种形式之一声明,请用实际函数名称替代xxxxxxxx;
对于C++程序还需包括在 extern "C" { } 括号中.
3.上述形式A用于声明不带参数或全部参数为常数的函数;
形式B用于声明参数1为序列数的函数;两种函数的区别在于后者以VAR结尾.
4.函数计算结果用pData->m_pResultBuf带回.
5.函数返回-1表示错误或全部数据无效,否则返回第一个有效值位置,即:
m_pResultBuf[返回值] -- m_pResultBuf[m_nNumData-1]间为有效值.
6.函数名称长度不能超过15字节,动态连接库文件名不能超过9字节(不包括扩展名),动态库名称不能叫
SYSTEM,EXPLORER
7.编译时请请选择1字节对齐
*/
//示例函数,使用时用实际名称替换
__declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData);
__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData);
__declspec(dllexport) int WINAPI MYMACLOSE_CALC_PREV(CALCINFO* pData);
__declspec(dllexport) int WINAPI MYMAVAR_CALC_PREV(CALCINFO* pData);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__FXJFUNC_H_INCLUDE
////////////////////////////////////////////////////////////////////////
分析家的数据结构见上面。
//基本数据
typedef struct tagSTKDATA
{
time_t m_time; //时间,UCT
float m_fOpen; //开盘
float m_fHigh; //最高
float m_fLow; //最低
float m_fClose; //收盘
float m_fVolume; //成交量
float m_fAmount; //成交额
WORD m_wAdvance; //上涨家数(仅大盘有效)
WORD m_wDecline; //下跌家数(仅大盘有效)
} STKDATA;
在前一讲中,求均线ma(c,x),是用收盘价,我们可以改成中值(h+l+c)/3的均线。
将FxjFunc.cpp程序中
fTotal += pData->m_pData[i-j].m_fClose;
改为
fTotal=fTotal + ( pData->m_pData[i-j].m_fClose+ pData->m_pData[i-j].m_fLow+ pData->m_pData
[i-j].m_fHigh )/3;
将上面接口规范看懂后,你可以创作各种函数。
当将你公式中的一些分析家函数替换成dll中的函数,可以实现简单的加密。
另一方面,使用dll文件读取数据,是没有经过精度转换的原始记录数据,有助
于精确分析。此外用c++编写公式可以使用循环,遍历等很多分析家所不能实现
的功能。
[第四讲]公式中的数据传递
一.dll公式计算的结果如何返回到分析家中
dll函数计算结果用pData->m_pResultBuf带回.
也就是说dll函数必须有值返回。
函数返回-1表示错误或全部数据无效,否则返回第一个有效值位置,即:
m_pResultBuf[返回值] -- m_pResultBuf[m_nNumData-1]间为有效值.
例如上例:i表示当前所计算的周期。
pData->m_pResultBuf = fTotal/nPeriod;
全部数据为m_nNumData组。超过会出现错误。数据下标从0开始到m_nNumData-1二.分析家中公式的参数如
何传递到dll公式。
1.函数调用参数由m_pfParam1--m_pfParam4带入,若为NULL则表示该参数无效.
2.当一个参数无效时,则其后的所有参数均无效.
如:m_pfParam2为NULL,则m_pfParam3,m_pfParam4一定为NULL.
3.参数1可以是常数参数或序列数参数,其余参数只能为常数参数.
4.若m_nParam1Start<0, 则参数1为常数参数,参数等于*m_pfParam1;
5.若m_nParam1Start>=0,则参数1为序列数参数,m_pfParam1指向一个浮点型数组,数组大小为m_nNumData,
数据有效范围为m_nParam1Start--m_nNumData.在时间上m_pData[x] 与 m_pfParam1[x]是一致的
在参数上,分析家不如飞狐交易师灵活。分析家只允许1个变化序列数据,飞狐可以允许四个变化序列数
据。三.公式的设计和使用
1.调用时在公式编辑器中写"动态库名称@函数名称"(参数表)即可,例如下面函数可以写
为"FXJFUNC@MYCMALOSE"(5)
2.动态连接库名称和函数名称可以自己定义.
3.使用时可以将动态库拷贝到分析家目录下使用.
分析家在SUPERSTK目录中
飞狐在FoxTrader\FmlDLL目录中例子:在公式接口中有,这个例子告诉你如何使用两个参数。
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期
//调用方法:
// MYMAVAR(CLOSE-OPEN,5)
__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData)
{
float f,fTotal;
const float* pvalue;
int nPeriod,nFirst,i,j;
if(pData->m_pfParam1 && pData->m_pfParam2 && //参数1,2有效
pData->m_nParam1Start>=0 && //参数1为序列数
pData->m_pfParam3==NULL) //有2个参数
{
pvalue = pData->m_pfParam1; //参数1
nFirst = pData->m_nParam1Start; //有效值
f = *pData->m_pfParam2;
nPeriod = (int)f; //参数2
if(nFirst>=0 && nPeriod>0)
{
for(i=nFirst+nPeriod-1;i<pData->m_nNumData;i++)
{
fTotal = 0.0f;
for(j=0;j<nPeriod;j++) //累加
fTotal += pData->m_pData[i-j].m_fClose;
pData->m_pResultBuf = fTotal/nPeriod; //平均
}
return nFirst+nPeriod-1;
}
}
return -1;
}大家可以参照上例来设计自己的dll公式。实际上我设计公式也是从看懂例
- 635.问:
- INDEXC,LINETHICK;
- 涨幅:(INDEXC-"引用.大盘前收##day")/"引用.大盘前收##day",COLORWHITE;
- 涨跌:INDEXC-"引用.大盘前收##day",LINETHICK,COLORWHITE;
- 成交额(亿):sum(INDEXA/100000000,OPENMINUTES(time)),PRECISION2, LINETHICK0;
- rc:=0;
- s2:=sma(涨幅,2,1);
- s6:=sma(涨幅,6,1);
- dk:=2*(s2-s6);
- STICKLINE(dk>0,rc,rc+dk,0,1),COLORRED;
- STICKLINE(dk<0,rc,rc+dk,0,1),COLORCYAN;
- VERTLINE(MINUTE=30 or MINUTE=0),COLORRED,POINTDOT;
- VERTLINE(HOUR=15),COLORRED
- 这个指标有个问题就是对停牌的股票显示不好 因为大盘前收引用的是大盘的
- 收盘价它和各股同时显示希望帮助我解决了,说明一下这个是副图指标
- 答(懒汉):
- 分时 叠加大盘
- pc:="1A0001$CLOSE";RC:=DYNAINFO( 3);
- OO:=O;
- CH:=HHV(MAX(h,RC),0);
- CL:=LLV(MIN(L,RC),0);
- PH:=HHV(PC,0);
- PL:=LLV(PC,0);
- B:=(CH-CL)/(PH-PL)*0.8;
- Y:=(CH+CL-B*(PH+PL))/2;
- P:=PC*B[DATACOUNT]+Y[DATACOUNT];
- PP:P-(P[1]-OO[1]);
- 1分钟叠加大盘
- w0:=BARSLAST(DAY<>REF(DAY,1));
- VERTLINE(w0=0)COLORBROWN,POINTDOT;
- w:=BARSLAST(CROSS(BACKSET(ISLASTBAR,w0+1),0.5))*0;
- pc:="1A0001$CLOSE"+w;RC:DYNAINFO(3)+w;DRAWTEXT(ISLASTBAR,rc,'昨\n收');
- OO:=OPEN+w;
- CH:=HHV(MAX(HIGH+w,rc),w0);
- CL:=LLV(MIN(LOW+w,rc),w0);
- PH:=HHV(PC,w0);
- PL:=LLV(PC,w0);
- B:=(CH-CL)/(PH-PL)*0.8;
- Y:=(CH+CL-B*(PH+PL))/2;
- da:=DATACOUNT;
- P:=PC*B[DA]+Y[DA];
- PP:P-(P[da-w0[da]]-OO[da-w0[da]]);
- m:=SMA(CLOSE+w,6,1);
- e:=SMA(CLOSE+w,12,1);
- k:=2*(m-e);
- STICKLINE(k>0,rc,rc+k,0.1,0)colorred;
- STICKLINE(k<0,rc,rc+k,0.1,0)COLORCYAN;
复制代码
- 636.问:
- if datatype<>0 then begin
- drawtext(islastbar,0,'只能运行在分笔周期'),align2;
- exit;
- end;
- fv:=vol;
- fc:=close;
- fcp:=fc;
- a:=sortpos(fcp,0,1,datacount);
- fvmax:=0; fvmaxp:=1; fvtemp:=fv[fcp[1]];
- if datacount>1 then begin
- for i=2 to datacount do
- if fc[fcp[i]]=fc[fcp[i-1]] then fvtemp:=fvtemp+fv[fcp[i]]
- else begin
- if fvmax<fvtemp then begin
- fvmax:=fvtemp;
- fvmaxp:=i-1;
- end;
- fvtemp:=fv[fcp[i]];
- end;
- if fvmax<fvtemp then begin
- fvmax:=fvtemp;
- fvmaxp:=i-1;
- end;
- end;
- 集聚点:fc[fcp[fvmaxp]];
- 活跃上限:fc[fcp[svmaxp]];
- 用以上公式进行分笔扩展统计然后引用到日线中。
- jjl:=SELFDATA(' 集聚点');qys:=SELFDATA('活跃上限');
- qyx:=SELFDATA('活跃下限');
- STICKLINE(1,qys,qyx,8,1),COLORyellow;
- DRAWICON(1,jjl,10)
- 我以为,乾坤烛除表达了K线中的最高 最底 开盘 收盘外,还标出量的活跃上限 活跃下限 集聚点 尤其集聚点对以后股价运行颇具意义。以上公式网上得来我在飞狐中几经编辑测试都通不过
- 答(绿野浪子):
- 为了达到最佳效果,必须建扩展数据,但这样公式就只能盘后分析使用。
- 如要在实盘中使用,扩展数据必须实时更新,但这样软件太占资源,运行速度会很慢,反而不方便看盘。
- 要在实盘中使用,方便看盘分析,最好用日线数据。
- 荷蒲的高价公式中就有一个引用日线数据的K线乾坤烛。
- 答(abit):
- STICKLINE(open>=close ,close ,open,7,0 ),COLORFF2020;
- STICKLINE(open>=close ,close ,open,4,0 ),COLORFF2020;
- STICKLINE(open>=close ,close ,open,2,0 ),COLORFFFF00;
- STICKLINE(close>open,close,open,7 ,0 ),COLOR2020FF;
- STICKLINE(close>open,close,open,4 ,0 ),COLORB0B0FF;
- STICKLINE(close>open,close,open,2 ,0 ),COLOR00FFFF;
- STICKLINE(close>open,open,low,0.5,0 ),COLOR00FFFF;
- STICKLINE(close>open,close,HIGH,0.5 ,0 ),COLOR00FFFF;
- STICKLINE(open>=close,close,low,0.5 ,0 ),COLORFFFF80;
- STICKLINE(open>=close,open,HIGH,0.5 ,0 ),COLORFFFF80;
- STICKLINE(close=open AND C>REF(C,1),close,open,7 ,0 ),COLOR2020FF;
- STICKLINE(close=open AND C>REF(C,1),close,HIGH,0.5 ,0 ),COLOR2020FF;
- STICKLINE(close=open AND C>REF(C,1),open,low,0.5,0 ),COLOR2020FF;
- STICKLINE(open>=close ,close ,open,7,0 ),COLORFF2020;
- STICKLINE(open>=close ,close ,open,4,0 ),COLORFF2020;
- STICKLINE(open>=close ,close ,open,2,0 ),COLORFFFF00;
- STICKLINE(close>open,close,open,7 ,0 ),COLOR2020FF;
- STICKLINE(close>open,close,open,4 ,0 ),COLORB0B0FF;
- STICKLINE(close>open,close,open,2 ,0 ),COLOR00FFFF;
- STICKLINE(close>open,open,low,0.5,0 ),COLOR00FFFF;
- STICKLINE(close>open,close,HIGH,0.5 ,0 ),COLOR00FFFF;
- STICKLINE(open>=close,close,low,0.5 ,0 ),COLORFFFF80;
- STICKLINE(open>=close,open,HIGH,0.5 ,0 ),COLORFFFF80;
- STICKLINE(close=open AND C>REF(C,1),close,open,7 ,0 ),COLOR2020FF;
- STICKLINE(close=open AND C>REF(C,1),close,HIGH,0.5 ,0 ),COLOR2020FF;
- STICKLINE(close=open AND C>REF(C,1),open,low,0.5,0 ),COLOR2020FF;
- cb:=if(amount/v/100>100,(3*c+2*o+h+l)/7,amount/v/100);
- DRAWICON(cb>0,cb,19);
复制代码
637.问:
这公式为何再加入条件无效,应在那个位加入?例如:加入条件k>d.
Var41:=COST(10);
Var42:=(CLOSE>OPEN OR CLOSE>REF(CLOSE,1)) AND VOL>REF(VOL,1);
Var43:=COUNT(Var42,3)=3;
Var44:=LLV(LOW,5)=LLV(LOW,120);
Var45:=Var43 AND Var44;
Var46:=COUNT(CROSS(MA(CLOSE,10),MA(CLOSE,20)),2)=1 AND COUNT(CROSS(MA(CLOSE,5),MA(CLOSE,20)),2)=1;
Var47:=COUNT(Var45,3)>0 AND COUNT(Var46,3)>0;
Var48:=Var47 AND COUNT(Var47,20)=1;
Var49:=(INDEXC-LLV(INDEXL,89))/(HHV(INDEXH,89)-LLV(INDEXL,89))*100;
Var4A:=SMA(Var49,8,1);
Var4B:=SMA(Var4A,10,1);
Var4C:=Var4A>REF(Var4A,1) AND Var4A>Var4B AND BARSLAST(CROSS(Var4A,Var4B))<=21;
Var4D:=(CLOSE-LLV(LOW,89))/(HHV(HIGH,89)-LLV(LOW,89))*100;
Var4E:=SMA(Var4D,8,1);
Var4F:=SMA(Var4E,10,1);
Var50:=Var4E>REF(Var4E,1) AND Var4E>Var4F AND BARSLAST(CROSS(Var4E,Var4F))<=34;
Var51:=REF(INDEXC,1);
Var52:=SMA(MAX(INDEXC-Var51,0),6,1)/SMA(ABS(INDEXC-Var51),6,1)*100;
Var53:=Var52>=75 AND Var52<90 ;
Var2:=IF(EMA(CLOSE,5)/EMA(EMA(CLOSE,9),16)<=0.85 AND CLOSE/REF(CLOSE,1)>0.905 AND CLOSE/REF(CLOSE,1)<1.05 AND VOL/CAPITAL*100<5,50,0);
Var3:=(-100)*(HHV(HIGH,34)-CLOSE)/(HHV(HIGH,34)-LLV(LOW,34))+100;
Var4:=(-100)*(HHV(HIGH,50)-CLOSE)/(HHV(HIGH,50)-LLV(LOW,50))+100;
Var5:=(-100)*(HHV(HIGH,70)-CLOSE)/(HHV(HIGH,70)-LLV(LOW,70))+100;
Var6:=((CLOSE-MA(CLOSE,34))/MA(CLOSE,34)*100+10)*5;
Var7:=((CLOSE-MA(CLOSE,50))/MA(CLOSE,50)*100+10)*5;
Var8:=((CLOSE-MA(CLOSE,70))/MA(CLOSE,70)*100+10)*5;
Var9:=(Var3+Var4+Var5+Var6+Var7+Var8)/6;
VarA:=EMA(Var9,3);
VarB:=ABS(Var6-Var8);
VarC:=(Var9+VarB)/2;
VarD:=(-1)*(EMA(100*(1-WINNER(CLOSE)),1)-50)+50;
VarE:=VarD+VarC;
VarF:=IF(Var2>0 AND VarE<0,200,0);
Var10:=IF(VarC<0 AND CLOSE=LLV(CLOSE,5) AND CLOSE/REF(CLOSE,1)>0.905 AND CLOSE/REF(CLOSE,1)<1.05 AND VOL/CAPITAL*100<5,-50,0);
Var11:=IF(VarE<0 AND Var10=-50,100,0);
Var12:=MA(CLOSE,3);
Var13:=REF(CLOSE,2)*0.865;
Var14:=REF(CLOSE,13)*0.772;
Var15:=MIN(Var13,Var14);
Var16:=100*VOL/CAPITAL;
Var17:=MA(CLOSE,13);
Var18:=IF((CLOSE-Var15)/CLOSE<0.03 AND SUM(Var16,5)/5<1.8,1,0);
Var19:=IF(Var18>0 AND (Var10<0 OR Var2>0),100,0);
Var1A:=Var19;
Var1B:=IF(VarF>0 AND Var11>0 AND SUM(VOL/CAPITAL*100,5)/5<1 OR Var18>0 AND REF(CLOSE,1)/REF(CLOSE,2)>0.902 OR (VarF>0 AND Var11>0 AND SUM(VOL/CAPITAL*100,5)/5<1 OR Var18>0) AND (Var10<0 OR Var2>0) AND Var19<10,50,0);
Var1C:=(VarF>0 AND Var11>0 AND SUM(VOL/CAPITAL*100,5)/5<1 OR Var18>0) AND (Var10<0 OR Var2>0);
Var1D:=VarF>0 AND Var11>0 AND SUM(VOL/CAPITAL*100,5)/5<1 OR Var18>0 AND REF(CLOSE,1)/REF(CLOSE,2)>0.902;
Var22:=COST(10)*0;
Var23:=(MA(AMOUNT,5)/MA(VOL,5)/100-MA(AMOUNT,125)/MA(VOL,125)/100)/(MA(AMOUNT,5)/MA(VOL,5)/100);
Var24:=MA((LLV(LOW,45)-CLOSE)/(HHV(HIGH,45)-LLV(LOW,45))*100,5);
Var31:=AMOUNT/VOL/100;
Var32:=(3*HIGH+LOW+OPEN+2*CLOSE)/7;
Var33:=SUM(AMOUNT,13)/Var31/100;
Var34:=DMA(Var32,VOL/Var33);
Var35:=(CLOSE-Var34)/Var34*100;
Var36:=(INDEXC-LLV(INDEXL,9))/(HHV(INDEXH,9)-LLV(INDEXL,9))*100;
Var37:=SMA(Var36,3,1);
Var38:=SMA(Var37,3,1);
青龙:=Var1C OR Var1D or CROSS(-5,Var24) AND Var23<-0.4 AND (CLOSE-MA(CLOSE,30))/MA(CLOSE,30)<-0.19 or CROSS(Var37,Var38) AND Var37<20 AND
COUNT(Var35<=-21,5)>=1 or Var50 AND Var4C AND Var53 AND COUNT(Var48,6) ;
答(zmr666):
把最后一句里面的 “=” 号去掉,然后加上 and "kdj.k">"kdj.d" ,如下:
青龙:Var1C OR Var1D or CROSS(-5,Var24) AND Var23<-0.4 AND (CLOSE-MA(CLOSE,30))/MA(CLOSE,30)<-0.19 or CROSS(Var37,Var38) AND Var37<20 AND
COUNT(Var35<=-21,5)>=1 or Var50 AND Var4C AND Var53 AND COUNT(Var48,6) and "kdj.k">"kdj.d";
加入的 and 前面要注意留空格。
答(zmr666):
发现是有问题,可进行如下改进,先用 () 把原句中的内容全部括住,再加上 and "kdj.k">"kdj.d",结果如下:
青龙:(Var1C OR Var1D or CROSS(-5,Var24) AND Var23<-0.4 AND (CLOSE-MA(CLOSE,30))/MA(CLOSE,30)<-0.19 or CROSS(Var37,Var38) AND Var37<20 AND
COUNT(Var35<=-21,5)>=1 or Var50 AND Var4C AND Var53 AND COUNT(Var48,6)) and "kdj.k">"kdj.d";
638.问:
指标要求如下:
1,在主图上作出方框,方框内只容纳48根K线;
2,纵坐标9等分并显示股价;
3,隋"鼠标"水平托动;
答(bajatje):
写个三等分的,想九等分,自己照葫芦画瓢吧。颜色也自己搞
N:=48;
p:=SYSPARAM(1);
q:=BARPOS;
hh:=hhv(h,N);
LL:=LLv(L,N);
hL:=(hh-LL)/3;
DRAWSL(p=q,hh[p+n],0,n,3);
DRAWNUMBER(p+n=q,hh[p+n],hh[p+n],3);
DRAWSL(p=q,LL[p+n],0,n,3);
DRAWNUMBER(p+n=q,LL[p+n],LL[p+n],3);
DRAWSL(p=q,LL[p+n]+hL[p],0,n,3);
DRAWNUMBER(p+n=q,LL[p+n]+hL[p],LL[p+n]+hL[p],3);
DRAWSL(p=q,LL[p+n]+2*hL[p],0,n,3);
DRAWNUMBER(p+n=q,LL[p+n]+2*hL[p],LL[p+n]+2*hL[p],3);
STICKLINE(p+n=q or p=q,hh[p+n],LL[p+n],0.1,0); 639.问:
上面的方框向左画还要好看
答():
向左好办,+N变 -N 就可以了。改在中间要麻烦些 640.问:
帮忙写个公式:主图分钟K线,副图日K线.
答(静听花落):
主图小于日线时---看日k线
日K线副图
日开:STKINDI(StkLabel,'DAYK.DAYO',0,-1),LINETHICK0;
日高:STKINDI(StkLabel,'DAYK.DAYH',0,-1),LINETHICK0;
日低:STKINDI(StkLabel,'DAYK.DAYL',0,-1),LINETHICK0;
日收:STKINDI(StkLabel,'DAYK.DAYC',0,-1),LINETHICK0;
stickline(日收>0 AND 日收>=日开,日开,日收,5,1),colorred;
stickline(日收>0 AND 日收>=日开,日高,日收,0.1,0),colorred;
stickline(日收>0 AND 日收>=日开,日低,日开,0.1,0),colorred;
stickline(日收>0 AND 日收<日开,日开,日收,5,0),colorcyan;
stickline(日收>0 AND 日收<日开,日收,日低,0.1,0),colorcyan;
stickline(日收>0 AND 日收<日开,日开,日高,0.1,0),colorcyan;
主图小于周线时---看周k线
周K线副图
周开:STKINDI(StkLabel,'WEEKK.WEEKO',0,-1),LINETHICK0;
周高:STKINDI(StkLabel,'WEEKK.WEEKH',0,-1),LINETHICK0;
周低:STKINDI(StkLabel,'WEEKK.WEEKL',0,-1),LINETHICK0;
周收:STKINDI(StkLabel,'WEEKK.WEEKC',0,-1),LINETHICK0;
stickline(周收>=周开 AND 周收>0,周开,周收,5,1),colorred;
stickline(周收>=周开 AND 周收>0,周高,周收,0.1,0),colorred;
stickline(周收>=周开 AND 周收>0,周低,周开,0.1,0),colorred;
stickline(周收<周开 AND 周收>0,周开,周收,5,0),colorcyan;
stickline(周收<周开 AND 周收>0,周收,周低,0.1,0),colorcyan;
stickline(周收<周开 AND 周收>0,周开,周高,0.1,0),colorcyan;
主图小于月线时---看月k线
月K线副图
月开:STKINDI(StkLabel,'MONTHK.MONTHO',0,-1),LINETHICK0;
月高:STKINDI(StkLabel,'MONTHK.MONTHH',0,-1),LINETHICK0;
月低:STKINDI(StkLabel,'MONTHK.MONTHL',0,-1),LINETHICK0;
月收:STKINDI(StkLabel,'MONTHK.MONTHC',0,-1),LINETHICK0;
stickline(月收>0 AND 月收>=月开,月开,月收,5,1),colorred;
stickline(月收>0 AND 月收>=月开,月高,月收,0.1,0),colorred;
stickline(月收>0 AND 月收>=月开,月低,月开,0.1,0),colorred;
stickline(月收>0 AND 月收<月开,月开,月收,5,0),colorcyan;
stickline(月收>0 AND 月收<月开,月收,月低,0.1,0),colorcyan;
stickline(月收>0 AND 月收<月开,月开,月高,0.1,0),colorcyan; [/box]
[ 本帖最后由 阿耀 于 2005-12-4 20:07 编辑 ]
|