커뮤니티

75485 추세선의 값 재문의

프로필 이미지
와글이
2022-01-13 04:41:08
1513
글번호 155392
답변완료

첨부 이미지

답변주신 내용대로 또 밤을 세워 시험해 봤습니다. 올려주신 답변 내용으로는 별문제가 없어보이는데.... 원하는 답이 아니네요 어디가 틀린걸까요! 시험 챠트와 소스올립니다. 조언부탁드립니다. 두개의 임의 추세선 교차지점을 알고 싶은겁니다. // 75485 // // Test_f8 // var : TL1(0); var : TL2(0); var : Text1(0); var : PM5(0); var : PM6(0); var : i(0); //if sDate == 20220111 and sTime == 140000 Then //{ If Index == 1 then { TL1 = TL_New(sDate,sTime,387,sDate,sTime,387); TL_SetSize(TL1,1); TL_SetColor(TL1,Red); } Else { // TL_SetBegin(TL1,20220111,90000,387); // 1차 표시 TL_SetEnd(TL1,20220111,140000,389); TL_SetSize(TL1,1); TL_SetColor(TL1,Red); // } //} //if sDate == 20220111 and sTime == 150000 Then //{ If Index == 1 then { TL2 = TL_New(sDate,sTime,389,sDate,sTime,389); TL_SetSize(TL2,1); TL_SetColor(TL2,BLACK); } Else { // TL_SetBegin(TL2,20220111,90000,389); // 1차 표시 TL_SetEnd(TL2,20220111,150000,387); TL_SetSize(TL2,1); TL_SetColor(TL2,BLACK); // } //} // 교차지점 값 // 20220111 114500 (388.09) /* 안나옴 If PM5 > 0 and PM6 > 0 and PM5 == PM6 then { Text1 = Text_New(20220111,114500,PM5, NumToStr(PM5,2) + "->"); } */ // 이상위치에 2개 표시 For i = 100 to 1000 step 100 { PM5 = TL_Getvalue(TL1,20220111,114000 + i); PM6 = TL_Getvalue(TL1,20220111,114000 + i); // If PM5 > 0 and PM6 > 0 and PM5 == PM6 then If PM5 == PM6 then { Text1 = Text_New(20220111,110000 + i,PM5, NumToStr(PM5,2) + "->"); i = 9999; } } // // 오류땜 If PM5 == 0 then { Buy("매수"); } If PM5 == 0 then { Sell("매도"); }
지표
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2022-01-13 13:10:53

> 와글이 님이 쓴 글입니다. > 제목 : 75485 추세선의 값 재문의 > 답변주신 내용대로 또 밤을 세워 시험해 봤습니다. 올려주신 답변 내용으로는 별문제가 없어보이는데.... 원하는 답이 아니네요 어디가 틀린걸까요! 시험 챠트와 소스올립니다. 조언부탁드립니다. 두개의 임의 추세선 교차지점을 알고 싶은겁니다. // 75485 // // Test_f8 // var : TL1(0); var : TL2(0); var : Text1(0); var : PM5(0); var : PM6(0); var : i(0); //if sDate == 20220111 and sTime == 140000 Then //{ If Index == 1 then { TL1 = TL_New(sDate,sTime,387,sDate,sTime,387); TL_SetSize(TL1,1); TL_SetColor(TL1,Red); } Else { // TL_SetBegin(TL1,20220111,90000,387); // 1차 표시 TL_SetEnd(TL1,20220111,140000,389); TL_SetSize(TL1,1); TL_SetColor(TL1,Red); // } //} //if sDate == 20220111 and sTime == 150000 Then //{ If Index == 1 then { TL2 = TL_New(sDate,sTime,389,sDate,sTime,389); TL_SetSize(TL2,1); TL_SetColor(TL2,BLACK); } Else { // TL_SetBegin(TL2,20220111,90000,389); // 1차 표시 TL_SetEnd(TL2,20220111,150000,387); TL_SetSize(TL2,1); TL_SetColor(TL2,BLACK); // } //} // 교차지점 값 // 20220111 114500 (388.09) /* 안나옴 If PM5 > 0 and PM6 > 0 and PM5 == PM6 then { Text1 = Text_New(20220111,114500,PM5, NumToStr(PM5,2) + "->"); } */ // 이상위치에 2개 표시 For i = 100 to 1000 step 100 { PM5 = TL_Getvalue(TL1,20220111,114000 + i); PM6 = TL_Getvalue(TL1,20220111,114000 + i); // If PM5 > 0 and PM6 > 0 and PM5 == PM6 then If PM5 == PM6 then { Text1 = Text_New(20220111,110000 + i,PM5, NumToStr(PM5,2) + "->"); i = 9999; } } // // 오류땜 If PM5 == 0 then { Buy("매수"); } If PM5 == 0 then { Sell("매도"); }
프로필 이미지

예스스탁 예스스탁 답변

2022-01-13 15:28:35

안녕하세요 예스스탁입니다. 수식은 차트에 적용되면 차트 첫봉부터 마지막봉으로 동작하게 됩니다. 첫봉에서 마지막봉쪽으로 오면서 각봉기준으로 오른쪽봉(미래봉)의 값을 가져오거나 동작을 하게 되어 있지 않습니다. 일반적인 차트기반의 언어들은 모두 위와 같은 체계입니다. 또한 추세선함수들은 특성상 날짜나 시간을 지정하면 현재봉기준 지정한 날짜와 시간에 가장 근접한 위치의 값을 찾아 추세선을 그리거나 지정한 값을 리턴해 주게 됩니다. If Index == 1 then { TL2 = TL_New(sDate,sTime,389,sDate,sTime,389); TL_SetSize(TL1,1); TL_SetColor(TL1,Red); } Else { TL_SetBegin(TL2,20220111,90000,388); // 1차 표시 TL_SetEnd(TL2,20220111,150000,387); TL_SetSize(TL2,1); TL_SetColor(TL2,BLACK); } 그러므로 위와 같이 작성하시면 해당 수식은 차트 두번째봉(index == 1)에서 시작점/끝점 모두 388로 최초 그려지고 2022/01/11 9시가 될때 까지는 매봉에 시작점/끝점을 389로 해서 위치만 이동하게 됩니다. 이후 2022/01/11의 9시 이후가 되면 시작점은 2022/01/11 9시봉으로 고점되고 이후 15시봉 까지 끝점만 387값으로 매봉이동되게 됩니다 매봉 끝점이 이동하면서 경사각도 변경이 되어 다른추세선과 교차점이 계속 변경이 되고 최종 고정되는것은 15시입니다. 작성하신 수식의 추세선은 2022/01/11에 첨부된 그림과 같이 변경되게 됩니다. 그러므로 2개의 추세선의 교차점을 찾은 것은 2개의 추세선이 모두 최종완성된 시점 이전에 찾는것은 의미가 없습니다. 최종 완료가 되어 더이상 변동이 없을때 찾게 하셔야 합니다. 최종 추세선이 그려진 이후에 서로 겹치는 구간만 산정해 값을 가져와 교차를 비교해서 값을 찾으셔야 합니다. 또한 2개선의 값이 같은봉을 찾으시면 안됩니다, 봉기준으로 값을 리턴해서 봉과 봉사이에 교차된값을 리턴하지 못합니다. var : TL1(0); var : TL2(0); var : Text1(0); var : PM5(0),PM51(0); var : PM6(0),PM61(0); var : i(0); If Index == 1 then { TL1 = TL_New(sDate,sTime,387,sDate,sTime,387); TL_SetSize(TL1,1); TL_SetColor(TL1,Red); } Else { TL_SetBegin(TL1,20220111,90000,387); // 1차 표시 TL_SetEnd(TL1,20220111,140000,389); TL_SetSize(TL1,1); TL_SetColor(TL1,Red); } If Index == 1 then { TL2 = TL_New(sDate,sTime,389,sDate,sTime,389); TL_SetSize(TL2,1); TL_SetColor(TL2,BLACK); } Else { TL_SetBegin(TL2,20220111,90000,389); // 1차 표시 TL_SetEnd(TL2,20220111,150000,387); TL_SetSize(TL2,1); TL_SetColor(TL2,BLACK); } #추세선이 겹치는 구간의 시작봉 인덱스 if sDate == 20220111 and sTime == 90000 Then var1 = Index; #추세선이 겹치는 구간의 끝봉 인덱스 if sDate == 20220111 and sTime == 140000 Then var2 = Index; #2개 추세선이 모두 완료된 봉에서 if sDate == 20220111 and sTime == 150000 Then { Var3 = -1; For i = Index-Var2 to Index-Var1 step 1 { PM5 = TL_Getvalue(TL1,sDate[i],sTime[i]); PM51 = TL_Getvalue(TL1,sDate[i+1],sTime[i+1]); PM6 = TL_Getvalue(TL2,sDate[i],sTime[i]); PM61 = TL_Getvalue(TL2,sDate[i+1],sTime[i+1]); #교차지점을 찾으면 if PM5 > 0 and PM6 > 0 and ((PM5 >= PM6 and PM51 < PM61) or (PM5 <= PM6 and PM51 > PM61)) Then { Var3 = i;#몇봉전인지 저장하고 Var4 = (PM5+PM6)/2;# 2개선의 중간값 저장 } } If Var3 > 0 then { Text1 = Text_New(sDate[Var3],sTime[Var3],Var4, NumToStr(Var4,2) + "->"); Text_SetStyle(text1,1,2); } } 즐거운 하루되세요 > 와글이 님이 쓴 글입니다. > 제목 : 75485 추세선의 값 재문의 > 답변주신 내용대로 또 밤을 세워 시험해 봤습니다. 올려주신 답변 내용으로는 별문제가 없어보이는데.... 원하는 답이 아니네요 어디가 틀린걸까요! 시험 챠트와 소스올립니다. 조언부탁드립니다. 두개의 임의 추세선 교차지점을 알고 싶은겁니다. // 75485 // // Test_f8 // var : TL1(0); var : TL2(0); var : Text1(0); var : PM5(0); var : PM6(0); var : i(0); //if sDate == 20220111 and sTime == 140000 Then //{ If Index == 1 then { TL1 = TL_New(sDate,sTime,387,sDate,sTime,387); TL_SetSize(TL1,1); TL_SetColor(TL1,Red); } Else { // TL_SetBegin(TL1,20220111,90000,387); // 1차 표시 TL_SetEnd(TL1,20220111,140000,389); TL_SetSize(TL1,1); TL_SetColor(TL1,Red); // } //} //if sDate == 20220111 and sTime == 150000 Then //{ If Index == 1 then { TL2 = TL_New(sDate,sTime,389,sDate,sTime,389); TL_SetSize(TL2,1); TL_SetColor(TL2,BLACK); } Else { // TL_SetBegin(TL2,20220111,90000,389); // 1차 표시 TL_SetEnd(TL2,20220111,150000,387); TL_SetSize(TL2,1); TL_SetColor(TL2,BLACK); // } //} // 교차지점 값 // 20220111 114500 (388.09) /* 안나옴 If PM5 > 0 and PM6 > 0 and PM5 == PM6 then { Text1 = Text_New(20220111,114500,PM5, NumToStr(PM5,2) + "->"); } */ // 이상위치에 2개 표시 For i = 100 to 1000 step 100 { PM5 = TL_Getvalue(TL1,20220111,114000 + i); PM6 = TL_Getvalue(TL1,20220111,114000 + i); // If PM5 > 0 and PM6 > 0 and PM5 == PM6 then If PM5 == PM6 then { Text1 = Text_New(20220111,110000 + i,PM5, NumToStr(PM5,2) + "->"); i = 9999; } } // // 오류땜 If PM5 == 0 then { Buy("매수"); } If PM5 == 0 then { Sell("매도"); }