커뮤니티

수식 보완 부탁합니다

프로필 이미지
yamu
2024-08-28 04:48:28
709
글번호 182883
답변완료

첨부 이미지

답변 감사합니다 그런데 제가 의도하는것과는 달라서 다시 문의하겠습니다 제가 원하는건 단일 추세선의 시작점 끝점 간의 봉갯수가 아니라 그림처럼 2개의 개별적인 추세선의 각각의 시작점- 시작점 간의 봉갯수 조건도 만들 수 있는지 여쭤본겁니다. array를 써서 이전 추세선 참조하면 가능할까요?? 상향추세선 일때는 시작점 사이가 10개 봉 이상일때 고점 갱신라인과 최고점에만 표시하기 2가지 경우로 하고 싶습니다. 그리고 하향추세선일때는 끝점-끝점 사이일때로 해주셨으면 감사하겠습니다 부탁드립니다 그리고 수식이 뭐가 잘못된건지 기간n 이 10일때와 20일때 지표가 다르게 나옵니다. 가장 기본조건이 n 기간내에 저가대비 고가가 10% 이상일때가 1번이상 나올때이고 (그 봉은 paintbar 로 표시했습니다) 조건에 충족하는데도 기간을 20으로 연장하면 안나오는 경우가 있네요...첨부파일 2번이 기간을 20으로 했을때, 3번파일이 10으로 했을때 입니다. 오렌지 선은 기간선입니다. 감사합니다 수식 ::::: var : n(20); var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TXn(0),txper(0),nline(0),tl2(0); var : txx(0); if CountIf(H >= L*1.1,n) >= 1 Then { #n개봉 최고가/최저가와 최고가/최저가 위치(몇봉전인지) 계산 hh = 0; hb = 0; ll = 0; lb = 0; For cnt = 0 to n-1 { if hh == 0 or (hh > 0 and h[cnt] > hh) Then { hh = h[cnt]; hb = cnt; } if ll == 0 or (ll > 0 and l[cnt] < ll) Then { ll = l[cnt]; lb = cnt; } // Plot4(ll,"ll",LightGreen); // TL2 = TL_New(sDate[n-1],sTime[n-1],hh,sDate[0],sTime[0],hh); // TL_SetColor(tl2,Yellow); } // plot1(hh,"high",Magenta); if (lb > hb and hh <= ll*1.25) or (lb < hb and ll >= hh*0.70) Then { // TL_Delete(TL); // Text_Delete(TX); //TL_Delete(TL1); if (hb < lb and abs(hb-lb) <= 20) or (hb > lb and abs(hb-lb) <=20) Then { #상향,하향 일때 봉갯수 조건 TL = TL_New(sDate[hb],sTime[hb],hh,sDate[lb],sTime[lb],ll); TL_SetDrawMode(tl,0); TL_SetExtRight(tl,true); } nline = TL_New(sDate[n-1],sTime[n-1],hh,sDate[0],sTime[0],hh); TL_SetDrawMode(nline,0); TL_SetColor(nline,Tomato); TL_SetSize(nline,1); if lb > hb Then { TL_SetColor(TL,Red); TL_SetStyle(tl,3); } Else { TL_SetColor(TL,LightBlue); TL_SetStyle(tl,2); } // if (lb > hb and hh >= ll * 1.3) Then TL_SetColor(tl,Yellow); if (hb > lb and abs(hb-lb) <= 10) Then { TL_SetColor(tl,Yellow); TXper= text_new(TL_GetEndDate(TL),TL_GetEndTime(TL),TL_GetendVal(TL),NumToStr((hh-ll)/hh*100,0)); Text_SetStyle(txper,2,0); } TXn = Text_New(TL_GetEndDate(TL),TL_GetEndTime(TL),TL_GetendVal(TL),NumToStr(abs(hb-lb),0)); // Text_SetSize(tx,12); } } if TL_GetValue(TL,sDate,stime) > 0 then { value1 = TL_GetValue(TL,sDate,sTime); if h >= value1 and h[1] < value1 Then { txx = Text_New(sDate,sTime,l,"●"); Text_SetColor(txx,Lime); Text_SetSize(txx,15); Text_SetStyle(txx,2,0); // Text_SetLocation(txx,sDate,sTime,h); } }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-08-29 12:48:20

> yamu 님이 쓴 글입니다. > 제목 : 수식 보완 부탁합니다 > 답변 감사합니다 그런데 제가 의도하는것과는 달라서 다시 문의하겠습니다 제가 원하는건 단일 추세선의 시작점 끝점 간의 봉갯수가 아니라 그림처럼 2개의 개별적인 추세선의 각각의 시작점- 시작점 간의 봉갯수 조건도 만들 수 있는지 여쭤본겁니다. array를 써서 이전 추세선 참조하면 가능할까요?? 상향추세선 일때는 시작점 사이가 10개 봉 이상일때 고점 갱신라인과 최고점에만 표시하기 2가지 경우로 하고 싶습니다. 그리고 하향추세선일때는 끝점-끝점 사이일때로 해주셨으면 감사하겠습니다 부탁드립니다 그리고 수식이 뭐가 잘못된건지 기간n 이 10일때와 20일때 지표가 다르게 나옵니다. 가장 기본조건이 n 기간내에 저가대비 고가가 10% 이상일때가 1번이상 나올때이고 (그 봉은 paintbar 로 표시했습니다) 조건에 충족하는데도 기간을 20으로 연장하면 안나오는 경우가 있네요...첨부파일 2번이 기간을 20으로 했을때, 3번파일이 10으로 했을때 입니다. 오렌지 선은 기간선입니다. 감사합니다 수식 ::::: var : n(20); var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TXn(0),txper(0),nline(0),tl2(0); var : txx(0); if CountIf(H >= L*1.1,n) >= 1 Then { #n개봉 최고가/최저가와 최고가/최저가 위치(몇봉전인지) 계산 hh = 0; hb = 0; ll = 0; lb = 0; For cnt = 0 to n-1 { if hh == 0 or (hh > 0 and h[cnt] > hh) Then { hh = h[cnt]; hb = cnt; } if ll == 0 or (ll > 0 and l[cnt] < ll) Then { ll = l[cnt]; lb = cnt; } // Plot4(ll,"ll",LightGreen); // TL2 = TL_New(sDate[n-1],sTime[n-1],hh,sDate[0],sTime[0],hh); // TL_SetColor(tl2,Yellow); } // plot1(hh,"high",Magenta); if (lb > hb and hh <= ll*1.25) or (lb < hb and ll >= hh*0.70) Then { // TL_Delete(TL); // Text_Delete(TX); //TL_Delete(TL1); if (hb < lb and abs(hb-lb) <= 20) or (hb > lb and abs(hb-lb) <=20) Then { #상향,하향 일때 봉갯수 조건 TL = TL_New(sDate[hb],sTime[hb],hh,sDate[lb],sTime[lb],ll); TL_SetDrawMode(tl,0); TL_SetExtRight(tl,true); } nline = TL_New(sDate[n-1],sTime[n-1],hh,sDate[0],sTime[0],hh); TL_SetDrawMode(nline,0); TL_SetColor(nline,Tomato); TL_SetSize(nline,1); if lb > hb Then { TL_SetColor(TL,Red); TL_SetStyle(tl,3); } Else { TL_SetColor(TL,LightBlue); TL_SetStyle(tl,2); } // if (lb > hb and hh >= ll * 1.3) Then TL_SetColor(tl,Yellow); if (hb > lb and abs(hb-lb) <= 10) Then { TL_SetColor(tl,Yellow); TXper= text_new(TL_GetEndDate(TL),TL_GetEndTime(TL),TL_GetendVal(TL),NumToStr((hh-ll)/hh*100,0)); Text_SetStyle(txper,2,0); } TXn = Text_New(TL_GetEndDate(TL),TL_GetEndTime(TL),TL_GetendVal(TL),NumToStr(abs(hb-lb),0)); // Text_SetSize(tx,12); } } if TL_GetValue(TL,sDate,stime) > 0 then { value1 = TL_GetValue(TL,sDate,sTime); if h >= value1 and h[1] < value1 Then { txx = Text_New(sDate,sTime,l,"●"); Text_SetColor(txx,Lime); Text_SetSize(txx,15); Text_SetStyle(txx,2,0); // Text_SetLocation(txx,sDate,sTime,h); } }