커뮤니티
질문 42340 보완
2015-06-10 19:56:08
132
글번호 87057
첨부했던 그림은 다른 싸이트에서 Capture한 것으로 그런 수식을 좀 작성해 달라는 부탁을 드린건데 해당 수식을 작성하기에는 자료가 부족했나보군요.
그래서 제가 가지고 있는 Stochastics다이버전스 수식을 첨부하오니 이것을 이용해서 제가 원하는 것을 만드실수 있으면 좋겠군요.
감사합니다.
=======================================================================================
#==========================================#
# 지표명 :Stochastics다이버전스 주가파동선
#==========================================#
Input:Period1(12),Period2(6),지표변동폭(5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),지표파동선(0),방향(0),지표V(0),추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
지표고[20](0),지표저[20](0),지표고Bar[20](0),지표저Bar[20](0);
지표V = StochasticsK(Period1,Period2);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
지표고Bar[j] = 지표고Bar[j] + 1;
지표저Bar[j] = 지표저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If 지표고[0] <= 지표V || 지표고[0] == 0 || IsNaN(지표고[0]) == True Then
{
지표고[0] = 지표V;
지표고Bar[0] = 0;
}
Else
지표고Bar[0] = 지표고Bar[0] + 1;
If 지표저[0] >= 지표V || 지표저[0] == 0 || IsNaN(지표저[0]) == True Then
{
지표저[0] = 지표V;
지표저Bar[0] = 0;
}
Else
지표저Bar[0] = 지표저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 지표저[0][1] + 지표변동폭 > 지표V[1] &&
지표저[0][1] + 지표변동폭 <= 지표V Then 방향 = 상승;
If 지표고[0][1] - 지표변동폭 < 지표V[1] &&
지표고[0][1] - 지표변동폭 >= 지표V Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
지표저[j+1] = 지표저[j];
지표저Bar[j+1] = 지표저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
지표저[1] = 지표저[0];
지표저Bar[1] = 지표저Bar[0];
지표파동선 = 지표저[0];
지표저[0] = 지표V;
지표저Bar[0] = 0;
지표고[0] = 지표V;
지표고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
{
지표고[j+1] = 지표고[j];
지표고Bar[j+1] = 지표고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
지표고[1] = 지표고[0];
지표고Bar[1] = 지표고Bar[0];
지표파동선 = 지표고[0];
지표고[0] = 지표V;
지표고Bar[0] = 0;
지표저[0] = 지표V;
지표저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 지표고[1] < 지표고[0] &&
지표고[0][1] - 지표변동폭 <= 지표V[1] &&
지표고[0][1] - 지표변동폭 > 지표V Then
{
지표고[1] = 지표고[0];
지표고Bar[1] = 지표고Bar[0];
지표파동선 = 지표고[0];
지표고[0] = 지표V;
지표고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 지표저[1] > 지표저[0] &&
지표저[0][1] + 지표변동폭 >= 지표V[1] &&
지표저[0][1] + 지표변동폭 < 지표V Then
{
지표저[1] = 지표저[0];
지표저Bar[1] = 지표저Bar[0];
지표파동선 = 지표저[0];
지표저[0] = 지표V;
지표저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If 지표파동선[1] != 지표파동선 Then Plot1(파동선); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,고[0],저[0]));
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
지표저[2] < 지표저[1] Then // 볼밴폭이 줄어들때만 다이버전스 표시(볼밴을타고갈때는 표시안함)
{
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2];
Plot2(추세선);
// PlaySound("C:₩예스트레이더₩data₩Sound₩매수신호발생1.wav");
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
지표고[2] > 지표고[1] Then // 볼밴폭이 줄어들때만 다이버전스 표시(볼밴을타고갈때는 표시안함)
{
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2];
Plot3(추세선);
// PlaySound("C:₩예스트레이더₩data₩Sound₩매도신호발생1.wav");
}
답변 1
예스스탁 예스스탁 답변
2015-06-11 09:09:51
안녕하세요
예스스탁입니다.
#==========================================#
# 지표명 :Stochastics다이버전스 주가파동선
#==========================================#
Input:Period1(12),Period2(6),지표변동폭(5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),지표파동선(0),방향(0),지표V(0),추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
지표고[20](0),지표저[20](0),지표고Bar[20](0),지표저Bar[20](0);
지표V = StochasticsK(Period1,Period2);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
지표고Bar[j] = 지표고Bar[j] + 1;
지표저Bar[j] = 지표저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If 지표고[0] <= 지표V || 지표고[0] == 0 || IsNaN(지표고[0]) == True Then
{
지표고[0] = 지표V;
지표고Bar[0] = 0;
}
Else
지표고Bar[0] = 지표고Bar[0] + 1;
If 지표저[0] >= 지표V || 지표저[0] == 0 || IsNaN(지표저[0]) == True Then
{
지표저[0] = 지표V;
지표저Bar[0] = 0;
}
Else
지표저Bar[0] = 지표저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 지표저[0][1] + 지표변동폭 > 지표V[1] &&
지표저[0][1] + 지표변동폭 <= 지표V Then 방향 = 상승;
If 지표고[0][1] - 지표변동폭 < 지표V[1] &&
지표고[0][1] - 지표변동폭 >= 지표V Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
지표저[j+1] = 지표저[j];
지표저Bar[j+1] = 지표저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
지표저[1] = 지표저[0];
지표저Bar[1] = 지표저Bar[0];
지표파동선 = 지표저[0];
지표저[0] = 지표V;
지표저Bar[0] = 0;
지표고[0] = 지표V;
지표고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
{
지표고[j+1] = 지표고[j];
지표고Bar[j+1] = 지표고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
지표고[1] = 지표고[0];
지표고Bar[1] = 지표고Bar[0];
지표파동선 = 지표고[0];
지표고[0] = 지표V;
지표고Bar[0] = 0;
지표저[0] = 지표V;
지표저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 지표고[1] < 지표고[0] &&
지표고[0][1] - 지표변동폭 <= 지표V[1] &&
지표고[0][1] - 지표변동폭 > 지표V Then
{
지표고[1] = 지표고[0];
지표고Bar[1] = 지표고Bar[0];
지표파동선 = 지표고[0];
지표고[0] = 지표V;
지표고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 지표저[1] > 지표저[0] &&
지표저[0][1] + 지표변동폭 >= 지표V[1] &&
지표저[0][1] + 지표변동폭 < 지표V Then
{
지표저[1] = 지표저[0];
지표저Bar[1] = 지표저Bar[0];
지표파동선 = 지표저[0];
지표저[0] = 지표V;
지표저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#가격 전고점을 돌파하고 지표는 상승중
if crossup(c,고[1]) and 지표v > 지표v[1] Then
buy("b1");
#지표 전고점을 돌파하고 가격은 상승중
if crossup(지표v,지표고[1]) and C > C[1] Then
buy("b2");
#가격 전저점을 이탈하고 지표는 하락중
if CrossDown(c,저[1]) and 지표v < 지표v[1] Then
sell("s1");
#지표 전저점을 이탈하고 가격은 하락중
if CrossDown(지표v,지표저[1]) and C < C[1] Then
sell("s2");
즐거운 하루되세요
> 매버릭 님이 쓴 글입니다.
> 제목 : 질문 42340 보완
> 첨부했던 그림은 다른 싸이트에서 Capture한 것으로 그런 수식을 좀 작성해 달라는 부탁을 드린건데 해당 수식을 작성하기에는 자료가 부족했나보군요.
그래서 제가 가지고 있는 Stochastics다이버전스 수식을 첨부하오니 이것을 이용해서 제가 원하는 것을 만드실수 있으면 좋겠군요.
감사합니다.
=======================================================================================
#==========================================#
# 지표명 :Stochastics다이버전스 주가파동선
#==========================================#
Input:Period1(12),Period2(6),지표변동폭(5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),지표파동선(0),방향(0),지표V(0),추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
지표고[20](0),지표저[20](0),지표고Bar[20](0),지표저Bar[20](0);
지표V = StochasticsK(Period1,Period2);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
지표고Bar[j] = 지표고Bar[j] + 1;
지표저Bar[j] = 지표저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If 지표고[0] <= 지표V || 지표고[0] == 0 || IsNaN(지표고[0]) == True Then
{
지표고[0] = 지표V;
지표고Bar[0] = 0;
}
Else
지표고Bar[0] = 지표고Bar[0] + 1;
If 지표저[0] >= 지표V || 지표저[0] == 0 || IsNaN(지표저[0]) == True Then
{
지표저[0] = 지표V;
지표저Bar[0] = 0;
}
Else
지표저Bar[0] = 지표저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 지표저[0][1] + 지표변동폭 > 지표V[1] &&
지표저[0][1] + 지표변동폭 <= 지표V Then 방향 = 상승;
If 지표고[0][1] - 지표변동폭 < 지표V[1] &&
지표고[0][1] - 지표변동폭 >= 지표V Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
지표저[j+1] = 지표저[j];
지표저Bar[j+1] = 지표저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
지표저[1] = 지표저[0];
지표저Bar[1] = 지표저Bar[0];
지표파동선 = 지표저[0];
지표저[0] = 지표V;
지표저Bar[0] = 0;
지표고[0] = 지표V;
지표고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
{
지표고[j+1] = 지표고[j];
지표고Bar[j+1] = 지표고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
지표고[1] = 지표고[0];
지표고Bar[1] = 지표고Bar[0];
지표파동선 = 지표고[0];
지표고[0] = 지표V;
지표고Bar[0] = 0;
지표저[0] = 지표V;
지표저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 지표고[1] < 지표고[0] &&
지표고[0][1] - 지표변동폭 <= 지표V[1] &&
지표고[0][1] - 지표변동폭 > 지표V Then
{
지표고[1] = 지표고[0];
지표고Bar[1] = 지표고Bar[0];
지표파동선 = 지표고[0];
지표고[0] = 지표V;
지표고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 지표저[1] > 지표저[0] &&
지표저[0][1] + 지표변동폭 >= 지표V[1] &&
지표저[0][1] + 지표변동폭 < 지표V Then
{
지표저[1] = 지표저[0];
지표저Bar[1] = 지표저Bar[0];
지표파동선 = 지표저[0];
지표저[0] = 지표V;
지표저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If 지표파동선[1] != 지표파동선 Then Plot1(파동선); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,고[0],저[0]));
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
지표저[2] < 지표저[1] Then // 볼밴폭이 줄어들때만 다이버전스 표시(볼밴을타고갈때는 표시안함)
{
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2];
Plot2(추세선);
// PlaySound("C:₩예스트레이더₩data₩Sound₩매수신호발생1.wav");
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
지표고[2] > 지표고[1] Then // 볼밴폭이 줄어들때만 다이버전스 표시(볼밴을타고갈때는 표시안함)
{
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2];
Plot3(추세선);
// PlaySound("C:₩예스트레이더₩data₩Sound₩매도신호발생1.wav");
}