커뮤니티

수식 수정부탁드립니다

프로필 이미지
해피오
2022-09-19 15:09:37
1094
글번호 162316
답변완료
input : P1(5),P2(20),Period1(20),변곡기간(3); var : A5(0),A20(0),A5U(False),A5D(False),A20U(False),A20D(False); var : A5UN(False),A5DN(False),A20UN(False),A20DN(False); var : Ucnt1(0),Ucnt2(0),Ucnt3(0),Dcnt1(0),Dcnt2(0),Dcnt3(0); var : Utx1(0),Utx2(0),Utx3(0),Dtx1(0),Dtx2(0),Dtx3(0); var : HMAD(False),HMAU(false); #이평선 상승하락 정의 A5 = ma(C,P1);# 5이평 A20 = ma(C,P2);# 20이평 A5U = A5[2] > A5[1] and A5[1] < A5 ; //5이평선 하락후 상승전환 A5D = A5[2] < A5[1] and A5[1] > A5 ; //5이평선 상승후 하락전환 A20U = A20[2] > A20[1] and A20[1] < A20 ; //20이평선 하락후 상승전환 A20D = A20[2] < A20[1] and A20[1] > A20 ; //20이평선 상승후 하락전환 #HMA선 상승하락 정의 var1 = ma(C,Period1/2); var2 = ma(C,Period1); var3 = ma(2*var1-Var2,SqRt(Period1)); #HMA선 HMAU = var3 > var3[1] and CountIf( var3<var3[1], 변곡기간 )[1] == 변곡기간 ; #HMA선 상승전환(연속3봉하락후) HMAD = var3 < var3[1] and CountIf( var3>var3[1], 변곡기간 )[1] == 변곡기간 ; #HMA선 하락전환(연속3봉상승후) //5이평선 하락후 상승전환 if A5U == true Then { value1 = A5[1]; Value2 = value1[1]; if value1 >= Value2 Then Ucnt1 = Ucnt1+1; //5이평상승의 전변곡점보다 높아지면 올람숫자카운팅을 계속해야하고 Else Ucnt1 = 1; //5이평상승의 전변곡점보다 낮아지면 0이아닌 1로 계속 재세팅카운팅한다 Utx1 = text_new(sDate[1],sTime[1],L[1],NumToStr(Ucnt1,0)); //텍스트 신규숫자(날자, 시간, 표시위치, 넘버링) Text_SetStyle(Utx1,2,0); //지정한 텍스트(Utx1)개체의 수평및수직의 정렬위치 설정/(개체,수평, 수직위치)/수평-왼쪽0,오른쪽1,중앙2/수직-상단0,하단1,중앙2 Text_SetSize(Utx1,14+(Ucnt1*6)); //발생횟수표현 숫자의 크기? Text_SetColor(Utx1,Red); //발생횟수표현 숫자의 색상? } //5이평선 상승후 하락전환 if A5D == true Then { value3 = A5[1]; Value4 = value3[1]; if value3 < Value4 Then Dcnt1 = Dcnt1+1; //5이평하락의 전변곡점보다 낮아지면 올람숫자카운팅을 계속해야하고 Else Dcnt1 = 1; //5이평하락의 전변곡점보다 높아지면 0이아닌 1로 계속 재세팅카운팅한다 Dtx1 = text_new(sDate[1],sTime[1],H[1],NumToStr(Dcnt1,0)); Text_SetStyle(Dtx1,2,1); Text_SetSize(Dtx1,14+(Dcnt1*4)); Text_SetColor(Dtx1,Blue); } //20이평선 하락후 상승전환 if A20U == true Then { value5 = A20[1]; Value6 = value5[1]; if value5 >= Value6 Then Ucnt2 = Ucnt2+1; Else Ucnt2 = 1; Utx2 = text_new(sDate[1],sTime[1],L[1],NumToStr(Ucnt2,0)); Text_SetStyle(Utx2,2,0); Text_SetSize(Utx2,16+(Ucnt1*4)); Text_SetColor(Utx2,Yellow); } //20이평선 상승후 하락전환 if A20D == true Then { value7 = A20[1]; Value8 = value7[1]; if value7 < Value8 Then Dcnt2 = Dcnt2+1; Else Dcnt2 = 1; Dtx2 = text_new(sDate[1],sTime[1],H[1],NumToStr(Dcnt2,0)); Text_SetStyle(Dtx2,2,1); Text_SetSize(Dtx2,16+(Dcnt1*4)); Text_SetColor(Dtx2,Turquoise); } //HMA선 하락후 상승전환 if HMAU == true Then { value9 = Var3[1]; Value10 = value9[1]; if value9 >= Value10 Then Ucnt3 = Ucnt3+1; Else Ucnt3 = 1; Utx3 = text_new(sDate[1],sTime[1],value9,NumToStr(Ucnt3,0)); Text_SetStyle(Utx3,2,0); Text_SetSize(Utx3,18+(Ucnt1*4)); Text_SetColor(Utx3,White); } //HMA선 상승후 하락전환 if HMAD == true Then { value11 = Var3[1]; Value12 = value11[1]; if value11 < Value12 Then Dcnt3 = Dcnt3+1; Else Dcnt3 = 1; Dtx3 = text_new(sDate[1],sTime[1],value11,NumToStr(Dcnt3,0)); Text_SetStyle(Dtx3,2,1); Text_SetSize(Dtx3,18+(Dcnt1*4)); Text_SetColor(Dtx3,Black); } 위 수식에서 몇가지의 수정보완사항을 요청드립니다. 1. 이평선의 상승 또는 하락변곡이 있음에도 카운팅 표시가 되지 않는게 있는데 다시 한번도 수식재검토를 요청하고요 2. 제가 SetStyle에 대한 것을 공부해서 적용해도 잘 이해를 할 수가 없어 부탁드리는 것인데 5이평과 20이평선의 해당봉의 고가(하락변곡시), 저가(상승변곡시)에 카운팅 숫자가 표시하되 5이평선변곡은 원형 숫자로, 20이평선은 4각형테두리 숫자로 표시되고, HMA선의 변곡시에는 HMA선의 위/아래에 마름모테두리 숫자로 표시되게 해주세요
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-09-20 10:35:43

안녕하세요 예스스탁입니다. 1 각 라인의 상승전환/하락전환이 판단에 수평일때가 포함되어 있지 않습니다. 하락후 1봉이상 수평이다가 상승하는 경우나 상승후 1봉이상 수평이다가 하락하는 경우에는 체크되지 않습니다. 위 경우가 포함되게 수정해 드립니다. 2 text_SetStyle은 출력된 텍스트의 상하 좌우 정렬을 지정하는 함수입니다. 언급하신 원형숫자나 사각형테ㅜ리로 표시는 가능하지 않습니다. 3 input : P1(5),P2(20),Period1(20),변곡기간(3); var : A5(0),A20(0),A5U(False),A5D(False),A20U(False),A20D(False); var : A5UN(False),A5DN(False),A20UN(False),A20DN(False); var : Ucnt1(0),Ucnt2(0),Ucnt3(0),Dcnt1(0),Dcnt2(0),Dcnt3(0); var : Utx1(0),Utx2(0),Utx3(0),Dtx1(0),Dtx2(0),Dtx3(0); var : HMAD(False),HMAU(false); var : T5(0),T20(0),T3(0); #이평선 상승하락 정의 A5 = ma(C,P1);# 5이평 A20 = ma(C,P2);# 20이평 if A5 > A5[1] Then T5 = 1; if A5 < A5[1] Then T5 = -1; if A20 > A20[1] Then T20 = 1; if A20 < A20[1] Then T20 = -1; A5U = T5 == 1 and T5 != T5[1] ; //5이평선 하락후 상승전환 A5D = T5 == -1 and T5 != T5[1]; //5이평선 상승후 하락전환 A20U = T20 == 1 and T20 != T20[1] ; //20이평선 하락후 상승전환 A20D = T20 == -1 and T20 != T20[1] ; //20이평선 상승후 하락전환 #HMA선 상승하락 정의 var1 = ma(C,Period1/2); var2 = ma(C,Period1); var3 = ma(2*var1-Var2,SqRt(Period1)); #HMA선 if var3 > var3[1] Then T3 = 1; if var3 < var3[1] Then T3 = -1; HMAU = T3 == 1 and CountIf(T3 == -1, 변곡기간 )[1] == 변곡기간 ; #HMA선 상승전환(연속3봉하락후) HMAD = T3 == -1 and CountIf(T3 == 1, 변곡기간 )[1] == 변곡기간 ; #HMA선 하락전환(연속3봉상승후) //5이평선 하락후 상승전환 if A5U == true Then { value1 = A5[1]; Value2 = value1[1]; if value1 >= Value2 Then Ucnt1 = Ucnt1+1; //5이평상승의 전변곡점보다 높아지면 올람숫자카운팅을 계속해야하고 Else Ucnt1 = 1; //5이평상승의 전변곡점보다 낮아지면 0이아닌 1로 계속 재세팅카운팅한다 Utx1 = text_new(sDate[1],sTime[1],L[1],NumToStr(Ucnt1,0)); //텍스트 신규숫자(날자, 시간, 표시위치, 넘버링) Text_SetStyle(Utx1,2,0); //지정한 텍스트(Utx1)개체의 수평및수직의 정렬위치 설정/(개체,수평, 수직위치)/수평-왼쪽0,오른쪽1,중앙2/수직-상단0,하단1,중앙2 Text_SetSize(Utx1,14+(Ucnt1*6)); //발생횟수표현 숫자의 크기? Text_SetColor(Utx1,Red); //발생횟수표현 숫자의 색상? } //5이평선 상승후 하락전환 if A5D == true Then { value3 = A5[1]; Value4 = value3[1]; if value3 < Value4 Then Dcnt1 = Dcnt1+1; //5이평하락의 전변곡점보다 낮아지면 올람숫자카운팅을 계속해야하고 Else Dcnt1 = 1; //5이평하락의 전변곡점보다 높아지면 0이아닌 1로 계속 재세팅카운팅한다 Dtx1 = text_new(sDate[1],sTime[1],H[1],NumToStr(Dcnt1,0)); Text_SetStyle(Dtx1,2,1); Text_SetSize(Dtx1,14+(Dcnt1*4)); Text_SetColor(Dtx1,Blue); } //20이평선 하락후 상승전환 if A20U == true Then { value5 = A20[1]; Value6 = value5[1]; if value5 >= Value6 Then Ucnt2 = Ucnt2+1; Else Ucnt2 = 1; Utx2 = text_new(sDate[1],sTime[1],L[1],NumToStr(Ucnt2,0)); Text_SetStyle(Utx2,2,0); Text_SetSize(Utx2,16+(Ucnt1*4)); Text_SetColor(Utx2,Yellow); } //20이평선 상승후 하락전환 if A20D == true Then { value7 = A20[1]; Value8 = value7[1]; if value7 < Value8 Then Dcnt2 = Dcnt2+1; Else Dcnt2 = 1; Dtx2 = text_new(sDate[1],sTime[1],H[1],NumToStr(Dcnt2,0)); Text_SetStyle(Dtx2,2,1); Text_SetSize(Dtx2,16+(Dcnt1*4)); Text_SetColor(Dtx2,Turquoise); } //HMA선 하락후 상승전환 if HMAU == true Then { value9 = Var3[1]; Value10 = value9[1]; if value9 >= Value10 Then Ucnt3 = Ucnt3+1; Else Ucnt3 = 1; Utx3 = text_new(sDate[1],sTime[1],value9,NumToStr(Ucnt3,0)); Text_SetStyle(Utx3,2,0); Text_SetSize(Utx3,18+(Ucnt1*4)); Text_SetColor(Utx3,White); } //HMA선 상승후 하락전환 if HMAD == true Then { value11 = Var3[1]; Value12 = value11[1]; if value11 < Value12 Then Dcnt3 = Dcnt3+1; Else Dcnt3 = 1; Dtx3 = text_new(sDate[1],sTime[1],value11,NumToStr(Dcnt3,0)); Text_SetStyle(Dtx3,2,1); Text_SetSize(Dtx3,18+(Dcnt1*4)); Text_SetColor(Dtx3,Black); } 즐거운 하루되세요 > 해피오 님이 쓴 글입니다. > 제목 : 수식 수정부탁드립니다 > input : P1(5),P2(20),Period1(20),변곡기간(3); var : A5(0),A20(0),A5U(False),A5D(False),A20U(False),A20D(False); var : A5UN(False),A5DN(False),A20UN(False),A20DN(False); var : Ucnt1(0),Ucnt2(0),Ucnt3(0),Dcnt1(0),Dcnt2(0),Dcnt3(0); var : Utx1(0),Utx2(0),Utx3(0),Dtx1(0),Dtx2(0),Dtx3(0); var : HMAD(False),HMAU(false); #이평선 상승하락 정의 A5 = ma(C,P1);# 5이평 A20 = ma(C,P2);# 20이평 A5U = A5[2] > A5[1] and A5[1] < A5 ; //5이평선 하락후 상승전환 A5D = A5[2] < A5[1] and A5[1] > A5 ; //5이평선 상승후 하락전환 A20U = A20[2] > A20[1] and A20[1] < A20 ; //20이평선 하락후 상승전환 A20D = A20[2] < A20[1] and A20[1] > A20 ; //20이평선 상승후 하락전환 #HMA선 상승하락 정의 var1 = ma(C,Period1/2); var2 = ma(C,Period1); var3 = ma(2*var1-Var2,SqRt(Period1)); #HMA선 HMAU = var3 > var3[1] and CountIf( var3<var3[1], 변곡기간 )[1] == 변곡기간 ; #HMA선 상승전환(연속3봉하락후) HMAD = var3 < var3[1] and CountIf( var3>var3[1], 변곡기간 )[1] == 변곡기간 ; #HMA선 하락전환(연속3봉상승후) //5이평선 하락후 상승전환 if A5U == true Then { value1 = A5[1]; Value2 = value1[1]; if value1 >= Value2 Then Ucnt1 = Ucnt1+1; //5이평상승의 전변곡점보다 높아지면 올람숫자카운팅을 계속해야하고 Else Ucnt1 = 1; //5이평상승의 전변곡점보다 낮아지면 0이아닌 1로 계속 재세팅카운팅한다 Utx1 = text_new(sDate[1],sTime[1],L[1],NumToStr(Ucnt1,0)); //텍스트 신규숫자(날자, 시간, 표시위치, 넘버링) Text_SetStyle(Utx1,2,0); //지정한 텍스트(Utx1)개체의 수평및수직의 정렬위치 설정/(개체,수평, 수직위치)/수평-왼쪽0,오른쪽1,중앙2/수직-상단0,하단1,중앙2 Text_SetSize(Utx1,14+(Ucnt1*6)); //발생횟수표현 숫자의 크기? Text_SetColor(Utx1,Red); //발생횟수표현 숫자의 색상? } //5이평선 상승후 하락전환 if A5D == true Then { value3 = A5[1]; Value4 = value3[1]; if value3 < Value4 Then Dcnt1 = Dcnt1+1; //5이평하락의 전변곡점보다 낮아지면 올람숫자카운팅을 계속해야하고 Else Dcnt1 = 1; //5이평하락의 전변곡점보다 높아지면 0이아닌 1로 계속 재세팅카운팅한다 Dtx1 = text_new(sDate[1],sTime[1],H[1],NumToStr(Dcnt1,0)); Text_SetStyle(Dtx1,2,1); Text_SetSize(Dtx1,14+(Dcnt1*4)); Text_SetColor(Dtx1,Blue); } //20이평선 하락후 상승전환 if A20U == true Then { value5 = A20[1]; Value6 = value5[1]; if value5 >= Value6 Then Ucnt2 = Ucnt2+1; Else Ucnt2 = 1; Utx2 = text_new(sDate[1],sTime[1],L[1],NumToStr(Ucnt2,0)); Text_SetStyle(Utx2,2,0); Text_SetSize(Utx2,16+(Ucnt1*4)); Text_SetColor(Utx2,Yellow); } //20이평선 상승후 하락전환 if A20D == true Then { value7 = A20[1]; Value8 = value7[1]; if value7 < Value8 Then Dcnt2 = Dcnt2+1; Else Dcnt2 = 1; Dtx2 = text_new(sDate[1],sTime[1],H[1],NumToStr(Dcnt2,0)); Text_SetStyle(Dtx2,2,1); Text_SetSize(Dtx2,16+(Dcnt1*4)); Text_SetColor(Dtx2,Turquoise); } //HMA선 하락후 상승전환 if HMAU == true Then { value9 = Var3[1]; Value10 = value9[1]; if value9 >= Value10 Then Ucnt3 = Ucnt3+1; Else Ucnt3 = 1; Utx3 = text_new(sDate[1],sTime[1],value9,NumToStr(Ucnt3,0)); Text_SetStyle(Utx3,2,0); Text_SetSize(Utx3,18+(Ucnt1*4)); Text_SetColor(Utx3,White); } //HMA선 상승후 하락전환 if HMAD == true Then { value11 = Var3[1]; Value12 = value11[1]; if value11 < Value12 Then Dcnt3 = Dcnt3+1; Else Dcnt3 = 1; Dtx3 = text_new(sDate[1],sTime[1],value11,NumToStr(Dcnt3,0)); Text_SetStyle(Dtx3,2,1); Text_SetSize(Dtx3,18+(Dcnt1*4)); Text_SetColor(Dtx3,Black); } 위 수식에서 몇가지의 수정보완사항을 요청드립니다. 1. 이평선의 상승 또는 하락변곡이 있음에도 카운팅 표시가 되지 않는게 있는데 다시 한번도 수식재검토를 요청하고요 2. 제가 SetStyle에 대한 것을 공부해서 적용해도 잘 이해를 할 수가 없어 부탁드리는 것인데 5이평과 20이평선의 해당봉의 고가(하락변곡시), 저가(상승변곡시)에 카운팅 숫자가 표시하되 5이평선변곡은 원형 숫자로, 20이평선은 4각형테두리 숫자로 표시되고, HMA선의 변곡시에는 HMA선의 위/아래에 마름모테두리 숫자로 표시되게 해주세요