
等级: 新手上路
- 注册:
- 2023-5-12
- 曾用名:
|
//#MAINCHART
INPUT:
LineWidth(2,1,5,1), // 格线的粗细
BaseDate('20130129'), // 第一根红线开始日期
StartTime(930,900,930,1); // 每天第一根K线开始的时间
#Define PR_GVAR 'v201412281526'
#Define LCNT PR_GVAR+'icnt_g' // 全局变量记录格线数
#Define FIRLINE PR_GVAR+'var0_g' // 全局变量记录是否找到图表上的第一根格线,0:末找到,1:找到
#Define BEFDATE PR_GVAR+'var1_g' // 全局变量记录上一根格线的日期
Variables:
nColorIndex(0),nLineWidth(1),
bCon(0),nDateDif(0),nColor,bFirst(0),bNext(0),
nBy(0),nBm(0),nBd(0);
nBy = STRTONUM(STRLEFT(BaseDate,4));
nBm = STRTONUM(STRMID(BaseDate,5,2));
nBd = STRTONUM(STRRIGHT(BaseDate,2));
//aa:nBy;
//bb:nBm;
//cc:nBd;
// 确定第一根红线
bCon = YEAR > nBy;
bCon = bCon || (YEAR==nBy && MONTH>nBm);
bCon = bCon || (YEAR==nBy && MONTH==nBm && DAY>nBd);
bCon = bCon || (YEAR==nBy && MONTH==nBm && DAY==nBd && TIME >= StartTime*100);
IF !bCon THEN RETURN;
// 初始化
IF YEAR==nBy && MONTH==nBm && DAY==nBd && TIME == StartTime*100 THEN BEGIN
SETGLOBALVAR(LCNT,0);
SETGLOBALVAR(FIRLINE,0);
SETGLOBALVAR(BEFDATE,DATE);
END
// 设置格线粗细
switch LineWidth BEGIN
CASE 1: nLineWidth = LineThick1;
CASE 2: nLineWidth = LineThick2;
CASE 3: nLineWidth = LineThick3;
CASE 4: nLineWidth = LineThick4;
CASE 5: nLineWidth = LineThick5;
END
// 画格线
bCon = (TIME == StartTime*100);
nDateDif = DateDiff(GETGLOBALVAR(BEFDATE),DATE);
IF bCon THEN BEGIN
IF 0 == GETGLOBALVAR(FIRLINE) THEN BEGIN
// 找到第一根格线的位置
nColorIndex = 0;
SETGLOBALVAR(LCNT,0);
SETGLOBALVAR(FIRLINE,1);
SETGLOBALVAR(BEFDATE,DATE);
END ELSE BEGIN
// 找到其它格线的位置
nColorIndex = MOD(GETGLOBALVAR(LCNT) + nDateDif,4);
SETGLOBALVAR(LCNT,MOD(nColorIndex,4));
SETGLOBALVAR(BEFDATE,DATE);
END
END
VERTLINE(bCon && 0 == nColorIndex),nLineWidth,ColorRed;
VERTLINE(bCon && 1 == nColorIndex),nLineWidth,ColorBlue;
VERTLINE(bCon && 2 == nColorIndex),nLineWidth,ColorGreen;
VERTLINE(bCon && 3 == nColorIndex),nLineWidth,ColorMagenta;
|
|