历史高低点的中点画线公式源码_中点划线法代码

hacker|
142

文章目录:

求中点画线算法的c++代码...

直线方程:a*x+b*y+c=0, p1(x1,y1), p2(x2,y2)== a=y1-y2;b=x2-x1.

点到直线的距离:distance=|a*x0-b*y0+c|/sqrt(a*a + b*b)

设directionX,directionY分别为从(x1,y1)==(x2,y2)的单位变化量(+/-1)

当直线偏向X轴时,当前象素为(xk, yk),下一个象素可能为:(xk+directionX, yk)或者(xk+directionX,yk+directionY)这两点到直线的距离分别为:

d1=|a*xk+b*yk+c+a*directionX|/sqrt(a*a + b*b);

d2=|a*xk+b*yk+c+a*directionX+b*directonY|/sqrt(a*a + b*b);

便于运算,定义:f(xk,yk)= d2 * d2 - d1 * d1 (将d1和d2的分母去掉了的)

= b*b + 2*b*directonY*(a*xk+b*yk+c+a*directionX) ;

当f(xk,yk)0的时候,下一个点为(xk+directionX,yk+directionY):

f(xk+directionX,yk+directionY)=f(xk,yk) +2*b*b+2*a*b*directionX*directionY ;

当f(xk,yk)=0的时候,下一个点为(xk+directionX, yk) :

f(xk+directionX, yk) = f(xk,yk) + 2*a*b*directionX*directionY ;

当直线偏向Y轴时,当前象素为(xk, yk),下一个象素可能为:(xk, yk+directionY)或者(xk+directionX,yk+directionY)这两点到直线的距离分别为:

d1=|a*xk+b*yk+c+b*directionY|/sqrt(a*a + b*b);

d2=|a*xk+b*yk+c+b*directionY+a*directonX|/sqrt(a*a + b*b);

便于运算,定义:f(xk,yk)= d2 * d2 - d1 * d1 (将d1和d2的分母去掉了的)

= a*a + 2*a*directonX*(a*xk+b*yk+c+b*directionY) ;

当f(xk,yk)0的时候,下一个点为(xk+directionX,yk+directionY):

f(xk+directionX,yk+directionY)=f(xk,yk) +2*a*a+2*a*b*directionX*directionY ;

当f(xk,yk)=0的时候,下一个点为(xk+directionX, yk) :

f(xk+directionX, yk) = f(xk,yk) + 2*a*b*directionX*directionY ;

/*

* 中点画线算法

*/

void LineMLDA(HDC hdc, POINT ptSrc, POINT ptDec, COLORREF cr)

{

int a, b ;

a = ptSrc.y - ptDec.y ;

b = ptDec.x - ptSrc.x ;

int iDirectionX, iDirectionY ;

iDirectionX = iDirectionY = 1 ;

if(b0)

iDirectionX = -1 ;

if(a0)

iDirectionY = -1 ;

int iDistance,

iDeltaSmall, iDeltaBig ,

iCurrX, iCurrY ;

int iStep ;

iDeltaSmall = 2*a*b*iDirectionX*iDirectionY ;

iCurrX = ptSrc.x ;

iCurrY = ptSrc.y ;

if(abs(b) abs(a))

{

iDeltaBig = 2*b*b + iDeltaSmall ;

iDistance = b*b + iDeltaSmall ;

iStep = abs(b) ;

while (iStep-- 0)

{

SetPixel(hdc, iCurrX, iCurrY, cr) ;

iCurrX += iDirectionX ;

if(iDistance 0)

{

iCurrY += iDirectionY ;

iDistance += iDeltaBig ;

}

else

{

iDistance += iDeltaSmall ;

}

}

}

else

{

iDeltaBig = 2*a*a + iDeltaSmall ;

iDistance = a*a + iDeltaSmall ;

iStep = abs(a) ;

while (iStep-- 0)

{

SetPixel(hdc, iCurrX, iCurrY, cr) ;

iCurrY += iDirectionY ;

if(iDistance 0)

{

iCurrX += iDirectionX ;

iDistance += iDeltaBig ;

}

else

{

iDistance += iDeltaSmall ;

}

}

}

SetPixel(hdc, ptDec.x, ptDec.y, cr) ;

}

前期高低点画线代码有哪些?

前期高低点画线代码

将下面的代码加入均线系统中就OK了

一、通信达

VAR31:=BACKSET(REF(HIGH,2)=HHV(HIGH,5),3);

VAR41:=CROSS(VAR31,0.9);

VAR51:=BACKSET(REF(LOW,2)=LLV(LOW,5),3);

VAR61:=CROSS(VAR51,0.9);

压力:= REF(HIGH,BARSLAST(VAR41));

STICKLINE(C,REF(HIGH,BARSLAST(VAR41)),REF(HIGH,BARSLAST(VAR41)),8,1),COLOR00FFFF;

支撑:= REF(LOW,BARSLAST(VAR61));

STICKLINE(C,REF(LOW,BARSLAST(VAR61)),REF(LOW,BARSLAST(VAR61)),8,1),COLORRED;

DRAWICON(CROSS(C,压力),L*1.00,7);

DRAWICON(CROSS(支撑,C),H*1.00,8);

二、博易大师

VAR31:=BACKSET(REF(HIGH,2)=HHV(HIGH,5),3);

VAR41:=CROSS(VAR31,0.9);

VAR51:=BACKSET(REF(LOW,2)=LLV(LOW,5),3);

VAR61:=CROSS(VAR51,0.9);

压力:= REF(HIGH,BARSLAST(VAR41));

STICKLINE(C,REF(HIGH,BARSLAST(VAR41)),REF(HIGH,BARSLAST(VAR41)),8,1),COLOR00FFFF;

支撑:= REF(LOW,BARSLAST(VAR61));

STICKLINE(C,REF(LOW,BARSLAST(VAR61)),REF(LOW,BARSLAST(VAR61)),8,1),COLORRED;

DRAWICON(CROSS(C,压力),L*1.00,1);

DRAWICON(CROSS(支撑,C),H*1.00,2);

求前期高低点画线代码?求前期高低高点自动画线代码?

前期高低点画线代码

将下面的代码加入均线系统中就OK了

一、通信达

VAR31:=BACKSET(REF(HIGH,2)=HHV(HIGH,5),3);

VAR41:=CROSS(VAR31,0.9);

VAR51:=BACKSET(REF(LOW,2)=LLV(LOW,5),3);

VAR61:=CROSS(VAR51,0.9);

压力:= REF(HIGH,BARSLAST(VAR41));

STICKLINE(C,REF(HIGH,BARSLAST(VAR41)),REF(HIGH,BARSLAST(VAR41)),8,1),COLOR00FFFF;

支撑:= REF(LOW,BARSLAST(VAR61));

STICKLINE(C,REF(LOW,BARSLAST(VAR61)),REF(LOW,BARSLAST(VAR61)),8,1),COLORRED;

DRAWICON(CROSS(C,压力),L*1.00,7);

DRAWICON(CROSS(支撑,C),H*1.00,8);

二、博易大师

VAR31:=BACKSET(REF(HIGH,2)=HHV(HIGH,5),3);

VAR41:=CROSS(VAR31,0.9);

VAR51:=BACKSET(REF(LOW,2)=LLV(LOW,5),3);

VAR61:=CROSS(VAR51,0.9);

压力:= REF(HIGH,BARSLAST(VAR41));

STICKLINE(C,REF(HIGH,BARSLAST(VAR41)),REF(HIGH,BARSLAST(VAR41)),8,1),COLOR00FFFF;

支撑:= REF(LOW,BARSLAST(VAR61));

STICKLINE(C,REF(LOW,BARSLAST(VAR61)),REF(LOW,BARSLAST(VAR61)),8,1),COLORRED;

DRAWICON(CROSS(C,压力),L*1.00,1);

DRAWICON(CROSS(支撑,C),H*1.00,2);

求 通达信 高手 编写 主图 高点和高点 画线公式 低点和低点画线公式

通达信可以编写两个高点连线并且延长,两个低点连线并且延长,也可以显示成虚线,但这个看起来应该比较乱这点要注意,我没有你的源码,那就找一个高点指标公式是一个效果,高点连线显示黄色虚线,低点连线显示绿色虚线。

效果如下图。

通达信波段高低点显示公式,将历史的每个波段的高低点都在主图上显示。最好能加上每个波段的振幅提示。

你要先明确你的历史波段的高低点是以什么确定的,是跌涨幅大于百分之多少才定通义为顶点或谷点。以下是我给你写的公式,其中的N按你的想法来换数字,比如你的想法是涨跌超过10%才能算谷点或顶点,你就把N改为10。另外,判断顶点或谷点是后知后觉的,比如你看今天是最高了,但明天如果收盘更高,那今天的这个位置就不能算顶点,顶点要向后移了。因此,这个公式只能做参考,切莫以这个公式做选股用。以下的公式你先试试,应该没有问题。

折线:ZIG(3,N);

前波峰值:=PEAK(3,N,1);

前波谷值:=TROUGH(3,N,1);

DRAWNUMBER(折线REF(折线,1)

AND

REF(折线,1)REF(折线,2),REF(C,1),-(前波峰值-REF(C,1))/前波峰值*100);

DRAWNUMBER(折线REF(折线,1)

AND

REF(折线,1)REF(折线,2),REF(C,1),(REF(C,1)-前波谷值)/前波谷值*100);

4条大神的评论

  • avatar
    访客 2022-07-05 上午 01:33:19

    ACKSET(REF(LOW,2)=LLV(LOW,5),3);VAR61:=CROSS(VAR51,0.9);压力:= REF(HIGH,BARSLAST(VAR41));STICKLINE(C,REF(HIGH,BARSLAST(VAR41)),REF(

  • avatar
    访客 2022-07-04 下午 11:39:29

    f(xk+directionX,yk+directionY)=f(xk,yk) +2*a*a+2*a*b*directionX*directionY ;当f(xk,yk)=0的时候,下一个点为(xk+dir

  • avatar
    访客 2022-07-05 上午 08:01:41

    rectionX,yk+directionY)=f(xk,yk) +2*a*a+2*a*b*directionX*directionY ;当f(xk,yk)=0的

  • avatar
    访客 2022-07-05 上午 04:27:22

    REF(折线,1)REF(折线,2),REF(C,1),-(前波峰值-REF(C,1))/前波峰值*100);DRAWNUMBER(折线REF(折线,1)ANDREF(折线,1)REF(折线,2),REF(C,1),(REF(C,1)-前波谷值)/前波谷值*100);

发表评论