커뮤니티
문의드립니다.
2017-09-18 13:47:24
200
글번호 112856
수식지왕님의 피보나치 되돌림 지표입니다.
상승파동 하락파동에 따른 피보나치 되돌림 비율을 선으로 나타낸 지표인데요
이걸 시스템으로 만들고 싶습니다.
예들들어
상승파동끝나고 조정나올때(되돌림) 61.8%선에서 매수하고 100%선을 이탈하면 매도스위칭입니다.
하락파동이 끝나고 상승나올때 되돌림 61.8%선에서 매도하고 100%선을 돌파하면 매수스위칭입니다.
kbjmhlove@naver.com 이메일로 답변부탁드립니다. 감사합니다.
#==========================================#
# 지 표 명 : 피보나치되돌림
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
#==========================================#
Input:length(30),파동선두께(0.5),수치표시(1);
Var:j(0),jj(0),최종고가(0),최종저가(0),최종변곡점(""),처리구분(""),
TL1(0);
Array:고[5,4](0),저[5,4](0); // 1:가격, 2:Index, 3:sDate, 4:sTime
#==========================================#
If Index == 0 Then
{
고[1,1] = H;
저[1,1] = L;
}
Condition1 = Highest(H,length) == H and 최종고가 <> H;
Condition2 = Lowest (L,length) == L and 최종저가 <> L;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리
Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = H; // 신규고점을 체크하기 위해 저장
If 최종변곡점 == "저점" Then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); /// 상승파동
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,MAGENTA);
}
Else If 고[1,1] < H Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
최종변곡점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = L;
If 최종변곡점 == "고점" then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); /// 하락파동
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,CYAN);
}
Else If 저[1,1] > L then
{
저[1,1] = L;
저[1,3] = sDate;
저[1,4] = sTime;
저[1,2] = Index;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
최종변곡점 = "저점";
}
#==========================================#
Array: fr[7,4](0); // 1:비율, 2:값, 3:라인번호, 4:텍스트번호
If Index == 0 Then
{
fr[1,1] = 0;
fr[2,1] = 0.326;
fr[3,1] = 0.500;
fr[4,1] = 0.618;
fr[5,1] = 1.000;
fr[6,1] = 1.500;
fr[7,1] = 2.000;
}
If 최종변곡점[1] == "고점" and 최종변곡점 == "저점" Then // 상승파동 추세가 바뀔 때 피보나치 라인을 계산
{
for j = 1 to 7
{
//If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 하락파동에 대한 상승 기존 피보나치 라인은 지우고
fr[j,2] = 고[1,1] - ((고[1,1] - 저[2,1]) * fr[j,1]); // 하락 목표 피보나치 비율을 곱해서 계산
fr[j,3] = TL_New(저[2,3],저[2,4],fr[j,2],sDate,sTime,fr[j,2]); // 상승파에 대한 하락목표 라인을 생성
TL_SetColor(fr[j,3],LMAGENTA); // 하락 피보나치 목표 라인 색표현
If 수치표시 == 1 Then
{
If fr[j,4] > 0 Then Text_Delete(fr[j,4]); // 기존의 텍스트는 지우고 젤 뒤에것만 둔다
fr[j,4] = Text_New(저[2,3],저[2,4],fr[j,2]," (" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); /// 피보나치 텍스트 생성
Text_SetStyle(fr[j,4], 1, 2); // 왼쪽,중앙
Text_SetColor(fr[j,4],LMAGENTA); /// 수치값 색표현
}
}
}
Else If 최종변곡점[1] == "저점" and 최종변곡점 == "고점" Then // 하락파동 추세가 바뀔 때 피보나치 라인 계산
{
for j = 1 to 7
{
// If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 상승파동에 대한 하락 기존 피보나치 라인은 지우고
fr[j,2] = 저[1,1] + ((고[2,1] - 저[1,1]) * fr[j,1]); // 상승목표 피보나치 비율을 곱해서 계산
fr[j,3] = TL_New(고[2,3],고[2,4],fr[j,2],sDate,sTime,fr[j,2]); // 상승목표 라인을 생성
TL_SetColor(fr[j,3],CYAN); // 피보나치 라인 색표현
If 수치표시 == 1 Then
{
If fr[j,4] > 0 Then Text_Delete(fr[j,4]); // 기존의 텍스트는 지우고 젤 뒤에것만둔다.
fr[j,4] = Text_New(고[2,3],고[2,4],fr[j,2]," (" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); // 피보나치 비율을 곱해서 계산
Text_SetStyle(fr[j,4], 1, 2);
Text_SetColor(fr[j,4],CYAN);
}
}
}
//Else
//{
// for j = 1 to 7
// {
// TL_SetEnd(fr[j,3],sDate,sTime,fr[j,2]);
// }
//}
답변 2
예스스탁 예스스탁 답변
2017-09-19 10:14:30
안녕하세요
예스스탁입니다.
1
해당 지표에서 각 추세선이나 피보나치 선들은 사후적으로 그려지는 값들입니다.
상승이나 하락 변곡을 최초 인지한 시점이 이미 지정한 61.8%를 넘어가서 판단되는 경우가 많습니다.
수식 내용 확인하시기 바랍니다.
2
수식은 게시판으로만 답변을 드립니다.
3
수식입니다.
#==========================================#
# 지 표 명 : 피보나치되돌림
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
#==========================================#
Input:length(30),파동선두께(0.5),수치표시(1);
Var:j(0),jj(0),최종고가(0),최종저가(0),최종변곡점(""),처리구분(""),
TL1(0),T(0);
Array:고[5,4](0),저[5,4](0); // 1:가격, 2:Index, 3:sDate, 4:sTime
#==========================================#
If Index == 0 Then
{
고[1,1] = H;
저[1,1] = L;
}
Condition1 = Highest(H,length) == H and 최종고가 <> H;
Condition2 = Lowest (L,length) == L and 최종저가 <> L;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리
Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = H; // 신규고점을 체크하기 위해 저장
If 최종변곡점 == "저점" Then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); /// 상승파동
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,MAGENTA);
}
Else If 고[1,1] < H Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
최종변곡점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = L;
If 최종변곡점 == "고점" then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); /// 하락파동
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,CYAN);
}
Else If 저[1,1] > L then
{
저[1,1] = L;
저[1,3] = sDate;
저[1,4] = sTime;
저[1,2] = Index;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
최종변곡점 = "저점";
}
#==========================================#
Array: fr[7,4](0); // 1:비율, 2:값, 3:라인번호, 4:텍스트번호
If Index == 0 Then
{
fr[1,1] = 0;
fr[2,1] = 0.326;
fr[3,1] = 0.500;
fr[4,1] = 0.618;
fr[5,1] = 1.000;
fr[6,1] = 1.500;
fr[7,1] = 2.000;
}
If 최종변곡점[1] == "고점" and 최종변곡점 == "저점" Then // 상승파동 추세가 바뀔 때 피보나치 라인을 계산
{
T = -1;
for j = 1 to 7
{
//If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 하락파동에 대한 상승 기존 피보나치 라인은 지우고
fr[j,2] = 고[1,1] - ((고[1,1] - 저[2,1]) * fr[j,1]); // 하락 목표 피보나치 비율을 곱해서 계산
fr[j,3] = TL_New(저[2,3],저[2,4],fr[j,2],sDate,sTime,fr[j,2]); // 상승파에 대한 하락목표 라인을 생성
TL_SetColor(fr[j,3],LMAGENTA); // 하락 피보나치 목표 라인 색표현
If 수치표시 == 1 Then
{
If fr[j,4] > 0 Then Text_Delete(fr[j,4]); // 기존의 텍스트는 지우고 젤 뒤에것만 둔다
fr[j,4] = Text_New(저[2,3],저[2,4],fr[j,2]," (" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); /// 피보나치 텍스트 생성
Text_SetStyle(fr[j,4], 1, 2); // 왼쪽,중앙
Text_SetColor(fr[j,4],LMAGENTA); /// 수치값 색표현
}
}
}
Else If 최종변곡점[1] == "저점" and 최종변곡점 == "고점" Then // 하락파동 추세가 바뀔 때 피보나치 라인 계산
{
T = 1;
for j = 1 to 7
{
// If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 상승파동에 대한 하락 기존 피보나치 라인은 지우고
fr[j,2] = 저[1,1] + ((고[2,1] - 저[1,1]) * fr[j,1]); // 상승목표 피보나치 비율을 곱해서 계산
fr[j,3] = TL_New(고[2,3],고[2,4],fr[j,2],sDate,sTime,fr[j,2]); // 상승목표 라인을 생성
TL_SetColor(fr[j,3],CYAN); // 피보나치 라인 색표현
If 수치표시 == 1 Then
{
If fr[j,4] > 0 Then Text_Delete(fr[j,4]); // 기존의 텍스트는 지우고 젤 뒤에것만둔다.
fr[j,4] = Text_New(고[2,3],고[2,4],fr[j,2]," (" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); // 피보나치 비율을 곱해서 계산
Text_SetStyle(fr[j,4], 1, 2);
Text_SetColor(fr[j,4],CYAN);
}
}
}
//Else
//{
// for j = 1 to 7
// {
// TL_SetEnd(fr[j,3],sDate,sTime,fr[j,2]);
// }
//}
if T == -1 Then{
var1 = 고[1,1];
var2 = 저[2,1];
if CrossDown(C,var1-(var1-var2)*0.382) Then
buy();
if CrossDown(C,var2) Then
sell();
}
if T == 1 Then{
var1 = 고[2,1];
var2 = 저[1,1];
if CrossUp(C,var2+(var1-var2)*0.382) Then
sell();
if CrossUp(C,var1) Then
buy();
}
즐거운 하루되세요
> 불바다 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 수식지왕님의 피보나치 되돌림 지표입니다.
상승파동 하락파동에 따른 피보나치 되돌림 비율을 선으로 나타낸 지표인데요
이걸 시스템으로 만들고 싶습니다.
예들들어
상승파동끝나고 조정나올때(되돌림) 61.8%선에서 매수하고 100%선을 이탈하면 매도스위칭입니다.
하락파동이 끝나고 상승나올때 되돌림 61.8%선에서 매도하고 100%선을 돌파하면 매수스위칭입니다.
kbjmhlove@naver.com 이메일로 답변부탁드립니다. 감사합니다.
#==========================================#
# 지 표 명 : 피보나치되돌림
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
#==========================================#
Input:length(30),파동선두께(0.5),수치표시(1);
Var:j(0),jj(0),최종고가(0),최종저가(0),최종변곡점(""),처리구분(""),
TL1(0);
Array:고[5,4](0),저[5,4](0); // 1:가격, 2:Index, 3:sDate, 4:sTime
#==========================================#
If Index == 0 Then
{
고[1,1] = H;
저[1,1] = L;
}
Condition1 = Highest(H,length) == H and 최종고가 <> H;
Condition2 = Lowest (L,length) == L and 최종저가 <> L;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리
Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = H; // 신규고점을 체크하기 위해 저장
If 최종변곡점 == "저점" Then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); /// 상승파동
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,MAGENTA);
}
Else If 고[1,1] < H Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
최종변곡점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = L;
If 최종변곡점 == "고점" then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); /// 하락파동
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,CYAN);
}
Else If 저[1,1] > L then
{
저[1,1] = L;
저[1,3] = sDate;
저[1,4] = sTime;
저[1,2] = Index;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
최종변곡점 = "저점";
}
#==========================================#
Array: fr[7,4](0); // 1:비율, 2:값, 3:라인번호, 4:텍스트번호
If Index == 0 Then
{
fr[1,1] = 0;
fr[2,1] = 0.326;
fr[3,1] = 0.500;
fr[4,1] = 0.618;
fr[5,1] = 1.000;
fr[6,1] = 1.500;
fr[7,1] = 2.000;
}
If 최종변곡점[1] == "고점" and 최종변곡점 == "저점" Then // 상승파동 추세가 바뀔 때 피보나치 라인을 계산
{
for j = 1 to 7
{
//If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 하락파동에 대한 상승 기존 피보나치 라인은 지우고
fr[j,2] = 고[1,1] - ((고[1,1] - 저[2,1]) * fr[j,1]); // 하락 목표 피보나치 비율을 곱해서 계산
fr[j,3] = TL_New(저[2,3],저[2,4],fr[j,2],sDate,sTime,fr[j,2]); // 상승파에 대한 하락목표 라인을 생성
TL_SetColor(fr[j,3],LMAGENTA); // 하락 피보나치 목표 라인 색표현
If 수치표시 == 1 Then
{
If fr[j,4] > 0 Then Text_Delete(fr[j,4]); // 기존의 텍스트는 지우고 젤 뒤에것만 둔다
fr[j,4] = Text_New(저[2,3],저[2,4],fr[j,2]," (" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); /// 피보나치 텍스트 생성
Text_SetStyle(fr[j,4], 1, 2); // 왼쪽,중앙
Text_SetColor(fr[j,4],LMAGENTA); /// 수치값 색표현
}
}
}
Else If 최종변곡점[1] == "저점" and 최종변곡점 == "고점" Then // 하락파동 추세가 바뀔 때 피보나치 라인 계산
{
for j = 1 to 7
{
// If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 상승파동에 대한 하락 기존 피보나치 라인은 지우고
fr[j,2] = 저[1,1] + ((고[2,1] - 저[1,1]) * fr[j,1]); // 상승목표 피보나치 비율을 곱해서 계산
fr[j,3] = TL_New(고[2,3],고[2,4],fr[j,2],sDate,sTime,fr[j,2]); // 상승목표 라인을 생성
TL_SetColor(fr[j,3],CYAN); // 피보나치 라인 색표현
If 수치표시 == 1 Then
{
If fr[j,4] > 0 Then Text_Delete(fr[j,4]); // 기존의 텍스트는 지우고 젤 뒤에것만둔다.
fr[j,4] = Text_New(고[2,3],고[2,4],fr[j,2]," (" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); // 피보나치 비율을 곱해서 계산
Text_SetStyle(fr[j,4], 1, 2);
Text_SetColor(fr[j,4],CYAN);
}
}
}
//Else
//{
// for j = 1 to 7
// {
// TL_SetEnd(fr[j,3],sDate,sTime,fr[j,2]);
// }
//}
불바다
2017-09-29 02:25:39
답변 감사드립니다.
파동선이 상승파동 하락파동 그려지고 파동마다 피보나치되돌림선이 발생됩니다. 파동의 전고를 넘지 못하거나 파동의 전저를 이탈하지 못하는경우 즉 파동안에서 지그재그 움직일때는 피보나치되돌림선을 생성시키지 못하도록 하고싶습니다. 전고넘는 파동이 발생할경우 피보나치되돌림선 생성. 전저이탈하는 파동이 발생할경우 피보나치되돌림선을 생성하고 생성된 파동의 피보나치 되돌림 61.8선에서 매수 매도 하고 싶은데....방법이 없을까요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
> 안녕하세요
예스스탁입니다.
1
해당 지표에서 각 추세선이나 피보나치 선들은 사후적으로 그려지는 값들입니다.
상승이나 하락 변곡을 최초 인지한 시점이 이미 지정한 61.8%를 넘어가서 판단되는 경우가 많습니다.
수식 내용 확인하시기 바랍니다.
2
수식은 게시판으로만 답변을 드립니다.
다음글