커뮤니티
수식 문의 드립니다.
2019-01-28 11:26:50
264
글번호 125631
안녕하십니까
매번 고생이 많으십니다.
질문은 아래 고저라인 파동식을 그리는 지표인데,
고저라인이 바뀔때... 즉, 고점처리 → 저점처리 혹은 저점처리 → 고점처리로 바뀌는
** 꼭지점 최근 10개 중 가장 높은 값의 (고점처리 부분)
꼭지점에서 보조지표 RSI 값(기간은 임의)을 "꼭지RSI" 로 할당하고 Text3으로 그 봉(꼭지점) 위에 RSI 값 표시,
꼭지점 이전 봉에서 RSI값을 "꼭지첫번째RSI" 로 할당하고 Text4로 그 봉(꼭지점 이전) 위에 RSI 값 표시,
** 꼭지점 최근 10개 중 두번째 높은 값의 (고점처리 부분)
꼭지점에서 보조지표 RSI 값(기간은 임의)을 "꼭지RSI" 로 할당하고 Text5으로 그 봉(꼭지점) 위에 RSI 값 표시,
꼭지점 이전 봉에서 RSI값을 "꼭지첫번째RSI" 로 할당하고 Text6으로 그 봉(꼭지점 이전) 위에 RSI 값 표시,
** 가장 높은 꼭지점 의 RSI값과 두번째 꼭지점의 RSI값을 비교하는 수식
(자세한 것은 첨부된 그림 참조)
식 어디 부분에 작성해야 하고, 어떻게 작성해야 할지 몰라 문의드립니다.
※ 식이 복잡해진다면 어느 부분에 대충 이런 수식을 넣으면 될것 같다는 힌트(주석)이라도 부탁드리겠습니다.
항상 도움 주시는 것 감사드립니다....^^
항상 도움 주시는 것 다시 감사드립니다....^^
Input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0), Text1(0),처리구분("");
Array:고점[10,2](0),저점[10,2](0); //가격,위치
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리";
#====================고점처리========
If 처리구분 == "고점처리" Then
{
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1], sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1], NumToStr(고점[1,1],2));
Text_SetStyle(Text1, 2, 1);
}
}
If 처리구분 == "저점처리" Then
{
lastLoVal = L;
If 저점[1,2] < 고점[1,2] then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1], sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1], NumToStr(저점[1,1],2));
Text_SetStyle(Text1, 2, 0);
}
}
TL_SetSize(TL1,3);
TL_SetColor(TL1,CYAN);
- 1. 2019-01-27-CurrentChart-JEG.jpg (0.27 MB)
답변 1
예스스탁 예스스탁 답변
2019-01-28 15:21:04
안녕하세요
예스스탁입니다.
올려주신 내용을 정확히 이해하지 못했습니다.
매 고점에 RSI값과 최근 10개 고점 중 가장 높은 고점의 RSI과 두번째 높은 고점의 RSI,
매 저점에 RSI값과 최근 10개 저점 중 가장 낮은 저점의 RSI과 두번째 낮은 저점의 RSI
를 표시하게 추가했습니다.
해당 내용 참고하셔서 이후 내용 수정보완해 사용하시기 바랍니다.
Input : length(12),RSIP(9);
Var : j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0), Text1(0),처리구분("");
var : RSIV(0),H1R(0),H2R(0),L1R(0),L2R(0),cnt(0);
Array : 고점[10,4](0),저점[10,4](0); //가격,위치
RSIV = RSI(RSIP);
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리";
#====================고점처리========
If 처리구분 == "고점처리" Then
{
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
고점[j,3] = 고점[j-1,3];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
고점[1,3] = RSIV;
h1r = 0;
for cnt = 1 to 10
{
if h1r == 0 or (h1r > 0 and 고점[cnt,3] > h1r) Then
h1r = 고점[cnt,3];
}
h2r = 0;
for cnt = 1 to 10
{
if 고점[cnt,3] < h1r and(h2r == 0 or (h2r > 0 and 고점[cnt,3] > h2r)) Then
h2r = 고점[cnt,3];
}
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1], sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],
"고점 : "+NumToStr(고점[1,1],2)
+NewLine+"현재 :"+NumToStr(고점[1,3],2)
+NewLine+"최고1 :"+NumToStr(H1R,2)
+NewLine+"최고2 :"+NumToStr(H2R,2));
Text_SetStyle(Text1, 2, 1);
}
}
If 처리구분 == "저점처리" Then
{
lastLoVal = L;
If 저점[1,2] < 고점[1,2] then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
저점[j,3] = 저점[j-1,3];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then
{
저점[1,1] = L;
저점[1,2] = Index;
저점[1,3] = RSIV;
l1r = 0;
for cnt = 1 to 10
{
if l1r == 0 or (l1r > 0 and 저점[cnt,3] < l1r) Then
l1r = 저점[cnt,3];
}
l2r = 0;
for cnt = 1 to 10
{
if 저점[cnt,3] > l1r and (l2r == 0 or (l2r > 0 and 저점[cnt,3] < l2r)) Then
l2r = 저점[cnt,3];
}
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1], sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],
"저점 : "+ NumToStr(저점[1,1],2)
+NewLine+"현재 :"+NumToStr(저점[1,3],2)
+NewLine+"최저1 :"+NumToStr(L1R,2)
+NewLine+"최저2 :"+NumToStr(L2R,2));
Text_SetStyle(Text1, 2, 0);
}
}
TL_SetSize(TL1,3);
TL_SetColor(TL1,CYAN);
즐거운 하루되세요
> etm 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다.
> 안녕하십니까
매번 고생이 많으십니다.
질문은 아래 고저라인 파동식을 그리는 지표인데,
고저라인이 바뀔때... 즉, 고점처리 → 저점처리 혹은 저점처리 → 고점처리로 바뀌는
** 꼭지점 최근 10개 중 가장 높은 값의 (고점처리 부분)
꼭지점에서 보조지표 RSI 값(기간은 임의)을 "꼭지RSI" 로 할당하고 Text3으로 그 봉(꼭지점) 위에 RSI 값 표시,
꼭지점 이전 봉에서 RSI값을 "꼭지첫번째RSI" 로 할당하고 Text4로 그 봉(꼭지점 이전) 위에 RSI 값 표시,
** 꼭지점 최근 10개 중 두번째 높은 값의 (고점처리 부분)
꼭지점에서 보조지표 RSI 값(기간은 임의)을 "꼭지RSI" 로 할당하고 Text5으로 그 봉(꼭지점) 위에 RSI 값 표시,
꼭지점 이전 봉에서 RSI값을 "꼭지첫번째RSI" 로 할당하고 Text6으로 그 봉(꼭지점 이전) 위에 RSI 값 표시,
** 가장 높은 꼭지점 의 RSI값과 두번째 꼭지점의 RSI값을 비교하는 수식
(자세한 것은 첨부된 그림 참조)
식 어디 부분에 작성해야 하고, 어떻게 작성해야 할지 몰라 문의드립니다.
※ 식이 복잡해진다면 어느 부분에 대충 이런 수식을 넣으면 될것 같다는 힌트(주석)이라도 부탁드리겠습니다.
항상 도움 주시는 것 감사드립니다....^^
항상 도움 주시는 것 다시 감사드립니다....^^
Input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0), Text1(0),처리구분("");
Array:고점[10,2](0),저점[10,2](0); //가격,위치
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리";
#====================고점처리========
If 처리구분 == "고점처리" Then
{
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1], sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1], NumToStr(고점[1,1],2));
Text_SetStyle(Text1, 2, 1);
}
}
If 처리구분 == "저점처리" Then
{
lastLoVal = L;
If 저점[1,2] < 고점[1,2] then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1], sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1], NumToStr(저점[1,1],2));
Text_SetStyle(Text1, 2, 0);
}
}
TL_SetSize(TL1,3);
TL_SetColor(TL1,CYAN);
다음글
이전글