예스스탁
예스스탁 답변
2023-09-08 11:43:35
안녕하세요
예스스탁입니다.
해당 수식에서 추세선은 240봉 신저가/신고가 발생을 기준으로 합니다.
신저가 발생 후 더 낮은 저가가 발생할 때마다 추세선이 갱신되고
신고가 발생 후 더 높은 고가가 발생할 때마다 추세선이 갱신됩니다.
최고가와 최저가가 갱신되면 추세선이 과거 고/저점부터 다시 그려지게 됩니다.
현재봉 종가가 현재봉 고가보다 클수 없듯이
현재봉 종가가 추세선보다 크면 이미 추세선도 해당봉의 고가로 변경되어 있어
종가가 추세선값 보다 클수 없습니다.
수정해 드린다면 아래 내용 정도로 변경해 드릴수 있습니다.
현재봉 종가와저가와 1봉전 기준 추세선 값과 비교해서 조건체크하게 작성해 드립니다.
1
종목검색에서는 추세선 함수를 사용할 수 없습니다.
별도로 추세선에 해당하는 값을 계산해서 사용하셔야 합니다.
Input : Change(240);#240일
Input : Mult1(1.03),Mult2(0.5),DV(100000);
Array : HD[10](0),HT[10](0),HV[10](0),HI[10](0);
Array : LD[10](0),LT[10](0),LV[10](0),LI[10](0);
Var : Cnt(0),Hprice(0),Lprice(0);
Var : UpTrend(false),DownTrend(False),Trend(0);
Var : ZigZagTL(0);
HPrice = H;
LPrice = L;
if Index == 0 Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
HI[0] = Index;
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
LI[0] = Index;
}
Else
{
UpTrend = HPrice >= Highest(HPrice,Change)[1];
DownTrend = LPrice <= Lowest(LPrice,Change)[1];
if Trend <= 0 and UpTrend == true Then
{
Trend = 1;
For cnt = 9 DownTo 1
{
HD[cnt] = HD[cnt-1];
HT[cnt] = HT[cnt-1];
HV[cnt] = HV[cnt-1];
HI[cnt] = HI[cnt-1];
}
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
HI[0] = Index;
var1 = (HV[0]-LV[0])/(HI[0]-LI[0]);
Var2 = HV[0];
}
Else if Trend >= 0 and DownTrend Then//하락추세 전환
{
Trend = -1;
For cnt = 9 DownTo 1
{
LD[cnt] = LD[cnt-1];
LT[cnt] = LT[cnt-1];
LV[cnt] = LV[cnt-1];
LI[cnt] = LI[cnt-1];
}
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
LI[0] = Index;
}
Else
{
if Trend == 1 Then
{
if HPrice > HV[0] Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
HI[0] = Index;
var1 = (HV[0]-LV[0])/(HI[0]-LI[0]);
Var2 = HV[0];
}
Else
Var2 = Var2+var1;
if Condition1 == False and C > Var2[1] and Var2[1] > L Then
{
Condition1 = true;
if C > DayOpen and C >= DayClose(1)*Mult1 and
DayVolume(0) >= DV and DayVolume(0)>DayVolume(1)*mult2 and
Asks > Bids Then
Find(1);
}
}
if Trend == -1 Then
{
if LPrice < LV[0] Then
{
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
LI[0] = Index;
}
}
}
}
2
Input : Change(240);
Array : HD[10](0),HT[10](0),HV[10](0);
Array : LD[10](0),LT[10](0),LV[10](0);
Var : cnt(0),Hprice(0),Lprice(0);
Var : UpTrend(false),DownTrend(False),Trend(0);
Var : ZigZagTL(0),tx(0);
HPrice = H;
LPrice = L;
if Index == 0 Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
}
Else
{
UpTrend = HPrice >= Highest(HPrice,Change)[1];
DownTrend = LPrice <= Lowest(LPrice,Change)[1];
if Trend <= 0 and UpTrend == true Then
{
Trend = 1;
For Cnt = 9 DownTo 1
{
HD[Cnt] = HD[Cnt-1];
HT[Cnt] = HT[Cnt-1];
HV[Cnt] = HV[Cnt-1];
}
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
TL_SetExtRight(ZigZagTL,False);
ZigZagTL = TL_New(LD[0],LT[0],LV[0],HD[0],HT[0],HV[0]);
TL_SetColor(ZigZagTL,Red);
TL_SetSize(ZigZagTL,1);
TL_SetExtRight(ZigZagTL,true);
Condition1 = False;
}
Else if trend >= 0 and DownTrend Then//하락추세 전환
{
Trend = -1;
For Cnt = 9 DownTo 1
{
LD[Cnt] = LD[Cnt-1];
LT[Cnt] = LT[Cnt-1];
LV[Cnt] = LV[Cnt-1];
}
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
TL_SetExtRight(ZigZagTL,False);
ZigZagTL = TL_New(HD[0],HT[0],HV[0],LD[0],LT[0],LV[0]);
TL_SetColor(ZigZagTL,Blue);
TL_SetSize(ZigZagTL,1);
TL_SetExtRight(ZigZagTL,true);
}
Else
{
if Trend == 1 Then
{
if HPrice > HV[0] Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
TL_SetEnd(ZigZagTL,HD[0],HT[0],HV[0]);
}
if Condition1 == False and C > TL_GetValue(ZigZagTL,sDate[1],sTime[1]) and TL_GetValue(ZigZagTL,sDate[1],sTime[1]) > L Then
{
Condition1 = true;
Var1 = L;
}
}
if Trend == -1 Then
{
if LPrice < LV[0] Then
{
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
TL_SetEnd(ZigZagTL,LD[0],LT[0],LV[0]);
}
}
}
}
if Var1 > 0 Then
Plot1(Var1,"매수");
즐거운 하루되세요
> 심홍 님이 쓴 글입니다.
> 제목 : 수식문의
> 수고하십니다.
1번 종목검색(일봉 500봉기준) 및 2번 지표가 구현이 안됩니다. 검토 부탁드립니다
1.종목검색
Input : Change(240);#240일
Input : Mult1(1.03),Mult2(0.5),DV(100000);
Array : HD[10](0),HT[10](0),HV[10](0);
Array : LD[10](0),LT[10](0),LV[10](0);
Var : Cnt(0),Hprice(0),Lprice(0);
Var : UpTrend(false),DownTrend(False),Trend(0);
Var : ZigZagTL(0);
HPrice = H;
LPrice = L;
if Index == 0 Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
}
Else
{
UpTrend = HPrice >= Highest(HPrice,Change)[1];
DownTrend = LPrice <= Lowest(LPrice,Change)[1];
if Trend <= 0 and UpTrend == true Then
{
Trend = 1;
For cnt = 9 DownTo 1
{
HD[cnt] = HD[cnt-1];
HT[cnt] = HT[cnt-1];
HV[cnt] = HV[cnt-1];
}
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
Condition1 = False;
}
Else if Trend >= 0 and DownTrend Then//하락추세 전환
{
Trend = -1;
For cnt = 9 DownTo 1
{
LD[cnt] = LD[cnt-1];
LT[cnt] = LT[cnt-1];
LV[cnt] = LV[cnt-1];
}
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
}
Else
{
if Trend == 1 Then
{
if HPrice > HV[0] Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
}
if Condition1 == False and C > TL_GetValue(ZigZagTL,sDate,sTime) and
TL_GetValue(ZigZagTL,sDate,sTime) > L Then
{
Condition1 = true;
if C > DayOpen and C >= DayClose(1)*Mult1 and
DayVolume(0) >= DV and DayVolume(0)>DayVolume(1)*mult2 and
Asks > Bids Then
Find(1);
}
}
if Trend == -1 Then
{
if LPrice < LV[0] Then
{
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
}
}
}
}
2.지표
Input : Change(240);
Array : HD[10](0),HT[10](0),HV[10](0);
Array : LD[10](0),LT[10](0),LV[10](0);
Var : cnt(0),Hprice(0),Lprice(0);
Var : UpTrend(false),DownTrend(False),Trend(0);
Var : ZigZagTL(0),tx(0);
HPrice = H;
LPrice = L;
if Index == 0 Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
}
Else
{
UpTrend = HPrice >= Highest(HPrice,Change)[1];
DownTrend = LPrice <= Lowest(LPrice,Change)[1];
if Trend <= 0 and UpTrend == true Then
{
Trend = 1;
For Cnt = 9 DownTo 1
{
HD[Cnt] = HD[Cnt-1];
HT[Cnt] = HT[Cnt-1];
HV[Cnt] = HV[Cnt-1];
}
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
TL_SetExtRight(ZigZagTL,False);
ZigZagTL = TL_New(LD[0],LT[0],LV[0],HD[0],HT[0],HV[0]);
TL_SetColor(ZigZagTL,Red);
TL_SetSize(ZigZagTL,1);
TL_SetExtRight(ZigZagTL,true);
Condition1 = False;
}
Else if trend >= 0 and DownTrend Then//하락추세 전환
{
Trend = -1;
For Cnt = 9 DownTo 1
{
LD[Cnt] = LD[Cnt-1];
LT[Cnt] = LT[Cnt-1];
LV[Cnt] = LV[Cnt-1];
}
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
TL_SetExtRight(ZigZagTL,False);
ZigZagTL = TL_New(HD[0],HT[0],HV[0],LD[0],LT[0],LV[0]);
TL_SetColor(ZigZagTL,Blue);
TL_SetSize(ZigZagTL,1);
TL_SetExtRight(ZigZagTL,true);
}
Else
{
if Trend == 1 Then
{
if HPrice > HV[0] Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
TL_SetEnd(ZigZagTL,HD[0],HT[0],HV[0]);
}
if Condition1 == False and C > TL_GetValue(ZigZagTL,sDate,sTime) and TL_GetValue(ZigZagTL,sDate,sTime) > L Then
{
Condition1 = true;
Var1 = L;
}
}
if Trend == -1 Then
{
if LPrice < LV[0] Then
{
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
TL_SetEnd(ZigZagTL,LD[0],LT[0],LV[0]);
}
}
}
}
if Var1 > 0 Then
Plot1(Var1,"매수");