커뮤니티
한번 더 부탁드립니다.
2014-11-28 17:23:18
200
글번호 80895
38810번으로 부탁드렸던 수식입니다.
ADX로 Divergence를 찾을수 있도록 한번 더 수고 부탁드립니다..
감사합니다.
#==========================================#
# 지표명 : RSI다이버전스 주가파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:Period(14),Rsi변동폭(5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),Rsi파동선(0),방향(0),RsiV(0),추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0);
RsiV = RSI(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
Rsi고Bar[j] = Rsi고Bar[j] + 1;
Rsi저Bar[j] = Rsi저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then
{
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
Else
Rsi고Bar[0] = Rsi고Bar[0] + 1;
If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then
{
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
Else
Rsi저Bar[0] = Rsi저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If Rsi저[0][1] + Rsi변동폭 > RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승;
If Rsi고[0][1] - Rsi변동폭 < RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
Rsi저[j+1] = Rsi저[j];
Rsi저Bar[j+1] = Rsi저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
Rsi고[j+1] = Rsi고[j];
Rsi고Bar[j+1] = Rsi고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If Rsi고[1] < Rsi고[0] &&
Rsi고[0][1] - Rsi변동폭 <= RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 > RsiV Then
{
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If Rsi저[1] > Rsi저[0] &&
Rsi저[0][1] + Rsi변동폭 >= RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 < RsiV Then
{
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If Rsi파동선[1] != Rsi파동선 Then Plot1(파동선); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,고[0],저[0]));
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
Rsi저[2] < Rsi저[1] Then
{
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2];
Plot2(추세선);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
Rsi고[2] > Rsi고[1] Then
{
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2];
Plot3(추세선);
}
#==========================================#
# 지표명 : RSI다이버전스 RSI지표파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:Period(14),Rsi변동폭(5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),Rsi파동선(0),방향(0),RsiV(0),Rsi추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0);
RsiV = RSI(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
Rsi고Bar[j] = Rsi고Bar[j] + 1;
Rsi저Bar[j] = Rsi저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then
{
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
Else
Rsi고Bar[0] = Rsi고Bar[0] + 1;
If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then
{
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
Else
Rsi저Bar[0] = Rsi저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If Rsi저[0][1] + Rsi변동폭 > RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승;
If Rsi고[0][1] - Rsi변동폭 < RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
Rsi저[j+1] = Rsi저[j];
Rsi저Bar[j+1] = Rsi저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
Rsi고[j+1] = Rsi고[j];
Rsi고Bar[j+1] = Rsi고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If Rsi고[1] < Rsi고[0] &&
Rsi고[0][1] - Rsi변동폭 <= RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 > RsiV Then
{
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If Rsi저[1] > Rsi저[0] &&
Rsi저[0][1] + Rsi변동폭 >= RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 < RsiV Then
{
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If Rsi파동선[1] != Rsi파동선 Then Plot1(Rsi파동선); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,Rsi고[0],Rsi저[0]));
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
Rsi저[2] < Rsi저[1] Then
{
Rsi추세선 = (Rsi저[1]-Rsi저[2])/(Rsi저Bar[2]-Rsi저Bar[1]) * Rsi저Bar[2] + Rsi저[2];
Plot2(Rsi추세선,"저점추세선",MAGENTA);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
Rsi고[2] > Rsi고[1] Then
{
Rsi추세선 = (Rsi고[1]-Rsi고[2])/(Rsi고Bar[2]-Rsi고Bar[1]) * Rsi고Bar[2] + Rsi고[2];
Plot3(Rsi추세선,"고점추세선",BLUE);
}
답변 1
예스스탁 예스스탁 답변
2014-11-28 18:33:19
안녕하세요
예스스탁입니다.
1.
#==========================================#
# 지표명 : RSI다이버전스 주가파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:Period(14),ADX변동폭(5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),ADx파동선(0),방향(0),ADxV(0),추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
ADx고[20](0),ADx저[20](0),ADx고Bar[20](0),ADx저Bar[20](0);
ADxV = ADx(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
ADx고Bar[j] = ADx고Bar[j] + 1;
ADx저Bar[j] = ADx저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If ADx고[0] <= ADxV || ADx고[0] == 0 || IsNaN(ADx고[0]) == True Then
{
ADx고[0] = ADxV;
ADx고Bar[0] = 0;
}
Else
ADx고Bar[0] = ADx고Bar[0] + 1;
If ADx저[0] >= ADxV || ADx저[0] == 0 || IsNaN(ADx저[0]) == True Then
{
ADx저[0] = ADxV;
ADx저Bar[0] = 0;
}
Else
ADx저Bar[0] = ADx저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If ADx저[0][1] + ADx변동폭 > ADxV[1] &&
ADx저[0][1] + ADx변동폭 <= ADxV Then 방향 = 상승;
If ADx고[0][1] - ADx변동폭 < ADxV[1] &&
ADx고[0][1] - ADx변동폭 >= ADxV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
ADx저[j+1] = ADx저[j];
ADx저Bar[j+1] = ADx저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
ADx저[1] = ADx저[0];
ADx저Bar[1] = ADx저Bar[0];
ADx파동선 = ADx저[0];
ADx저[0] = ADxV;
ADx저Bar[0] = 0;
ADx고[0] = ADxV;
ADx고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
ADx고[j+1] = ADx고[j];
ADx고Bar[j+1] = ADx고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
ADx고[1] = ADx고[0];
ADx고Bar[1] = ADx고Bar[0];
ADx파동선 = ADx고[0];
ADx고[0] = ADxV;
ADx고Bar[0] = 0;
ADx저[0] = ADxV;
ADx저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If ADx고[1] < ADx고[0] &&
ADx고[0][1] - ADx변동폭 <= ADxV[1] &&
ADx고[0][1] - ADx변동폭 > ADxV Then
{
ADx고[1] = ADx고[0];
ADx고Bar[1] = ADx고Bar[0];
ADx파동선 = ADx고[0];
ADx고[0] = ADxV;
ADx고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If ADx저[1] > ADx저[0] &&
ADx저[0][1] + ADx변동폭 >= ADxV[1] &&
ADx저[0][1] + ADx변동폭 < ADxV Then
{
ADx저[1] = ADx저[0];
ADx저Bar[1] = ADx저Bar[0];
ADx파동선 = ADx저[0];
ADx저[0] = ADxV;
ADx저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If ADx파동선[1] != ADx파동선 Then Plot1(파동선); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,고[0],저[0]));
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
ADx저[2] < ADx저[1] Then
{
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2];
Plot2(추세선);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
ADx고[2] > ADx고[1] Then
{
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2];
Plot3(추세선);
}
2.
#==========================================#
# 지표명 : ADX다이버전스 ADX지표파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:Period(14),ADX변동폭(5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),ADX파동선(0),방향(0),ADXV(0),ADX추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
ADX고[20](0),ADX저[20](0),ADX고Bar[20](0),ADX저Bar[20](0);
ADXV = ADX(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
ADX고Bar[j] = ADX고Bar[j] + 1;
ADX저Bar[j] = ADX저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If ADX고[0] <= ADXV || ADX고[0] == 0 || IsNaN(ADX고[0]) == True Then
{
ADX고[0] = ADXV;
ADX고Bar[0] = 0;
}
Else
ADX고Bar[0] = ADX고Bar[0] + 1;
If ADX저[0] >= ADXV || ADX저[0] == 0 || IsNaN(ADX저[0]) == True Then
{
ADX저[0] = ADXV;
ADX저Bar[0] = 0;
}
Else
ADX저Bar[0] = ADX저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If ADX저[0][1] + ADX변동폭 > ADXV[1] &&
ADX저[0][1] + ADX변동폭 <= ADXV Then 방향 = 상승;
If ADX고[0][1] - ADX변동폭 < ADXV[1] &&
ADX고[0][1] - ADX변동폭 >= ADXV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
ADX저[j+1] = ADX저[j];
ADX저Bar[j+1] = ADX저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
ADX저[1] = ADX저[0];
ADX저Bar[1] = ADX저Bar[0];
ADX파동선 = ADX저[0];
ADX저[0] = ADXV;
ADX저Bar[0] = 0;
ADX고[0] = ADXV;
ADX고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
ADX고[j+1] = ADX고[j];
ADX고Bar[j+1] = ADX고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
ADX고[1] = ADX고[0];
ADX고Bar[1] = ADX고Bar[0];
ADX파동선 = ADX고[0];
ADX고[0] = ADXV;
ADX고Bar[0] = 0;
ADX저[0] = ADXV;
ADX저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If ADX고[1] < ADX고[0] &&
ADX고[0][1] - ADX변동폭 <= ADXV[1] &&
ADX고[0][1] - ADX변동폭 > ADXV Then
{
ADX고[1] = ADX고[0];
ADX고Bar[1] = ADX고Bar[0];
ADX파동선 = ADX고[0];
ADX고[0] = ADXV;
ADX고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If ADX저[1] > ADX저[0] &&
ADX저[0][1] + ADX변동폭 >= ADXV[1] &&
ADX저[0][1] + ADX변동폭 < ADXV Then
{
ADX저[1] = ADX저[0];
ADX저Bar[1] = ADX저Bar[0];
ADX파동선 = ADX저[0];
ADX저[0] = ADXV;
ADX저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If ADX파동선[1] != ADX파동선 Then Plot1(ADX파동선); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,ADX고[0],ADX저[0]));
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
ADX저[2] < ADX저[1] Then
{
ADX추세선 = (ADX저[1]-ADX저[2])/(ADX저Bar[2]-ADX저Bar[1]) * ADX저Bar[2] + ADX저[2];
Plot2(ADX추세선,"저점추세선",MAGENTA);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
ADX고[2] > ADX고[1] Then
{
ADX추세선 = (ADX고[1]-ADX고[2])/(ADX고Bar[2]-ADX고Bar[1]) * ADX고Bar[2] + ADX고[2];
Plot3(ADX추세선,"고점추세선",BLUE);
}
즐거운 하루되세요
> YG_ma****** 님이 쓴 글입니다.
> 제목 : 한번 더 부탁드립니다.
> 38810번으로 부탁드렸던 수식입니다.
ADX로 Divergence를 찾을수 있도록 한번 더 수고 부탁드립니다..
감사합니다.
#==========================================#
# 지표명 : RSI다이버전스 주가파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:Period(14),Rsi변동폭(5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),Rsi파동선(0),방향(0),RsiV(0),추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0);
RsiV = RSI(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
Rsi고Bar[j] = Rsi고Bar[j] + 1;
Rsi저Bar[j] = Rsi저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then
{
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
Else
Rsi고Bar[0] = Rsi고Bar[0] + 1;
If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then
{
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
Else
Rsi저Bar[0] = Rsi저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If Rsi저[0][1] + Rsi변동폭 > RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승;
If Rsi고[0][1] - Rsi변동폭 < RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
Rsi저[j+1] = Rsi저[j];
Rsi저Bar[j+1] = Rsi저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
Rsi고[j+1] = Rsi고[j];
Rsi고Bar[j+1] = Rsi고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If Rsi고[1] < Rsi고[0] &&
Rsi고[0][1] - Rsi변동폭 <= RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 > RsiV Then
{
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If Rsi저[1] > Rsi저[0] &&
Rsi저[0][1] + Rsi변동폭 >= RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 < RsiV Then
{
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If Rsi파동선[1] != Rsi파동선 Then Plot1(파동선); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,고[0],저[0]));
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
Rsi저[2] < Rsi저[1] Then
{
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2];
Plot2(추세선);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
Rsi고[2] > Rsi고[1] Then
{
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2];
Plot3(추세선);
}
#==========================================#
# 지표명 : RSI다이버전스 RSI지표파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:Period(14),Rsi변동폭(5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),Rsi파동선(0),방향(0),RsiV(0),Rsi추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0);
RsiV = RSI(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
Rsi고Bar[j] = Rsi고Bar[j] + 1;
Rsi저Bar[j] = Rsi저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then
{
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
Else
Rsi고Bar[0] = Rsi고Bar[0] + 1;
If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then
{
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
Else
Rsi저Bar[0] = Rsi저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If Rsi저[0][1] + Rsi변동폭 > RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승;
If Rsi고[0][1] - Rsi변동폭 < RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
Rsi저[j+1] = Rsi저[j];
Rsi저Bar[j+1] = Rsi저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
Rsi고[j+1] = Rsi고[j];
Rsi고Bar[j+1] = Rsi고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If Rsi고[1] < Rsi고[0] &&
Rsi고[0][1] - Rsi변동폭 <= RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 > RsiV Then
{
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If Rsi저[1] > Rsi저[0] &&
Rsi저[0][1] + Rsi변동폭 >= RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 < RsiV Then
{
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If Rsi파동선[1] != Rsi파동선 Then Plot1(Rsi파동선); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,Rsi고[0],Rsi저[0]));
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
Rsi저[2] < Rsi저[1] Then
{
Rsi추세선 = (Rsi저[1]-Rsi저[2])/(Rsi저Bar[2]-Rsi저Bar[1]) * Rsi저Bar[2] + Rsi저[2];
Plot2(Rsi추세선,"저점추세선",MAGENTA);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
Rsi고[2] > Rsi고[1] Then
{
Rsi추세선 = (Rsi고[1]-Rsi고[2])/(Rsi고Bar[2]-Rsi고Bar[1]) * Rsi고Bar[2] + Rsi고[2];
Plot3(Rsi추세선,"고점추세선",BLUE);
}
다음글
이전글