커뮤니티

종목검색식으로 변환이 어렵네요..

프로필 이미지
생각하는허수아비
2021-03-26 15:05:43
1281
글번호 147419
답변완료
항상 바쁘신 업무에 노고가 많읍니다. 과거 2009년에 올라온 자료중에서 제가 사용해 볼려고 하는 지표를 보고 검색식으로 전환하니 실제 검색이 안되어 도움을 청합니다. 트렌드 라인 으로 대신언어를 예스용으로 전환요구한 것 입니다. 수식은 input:speriod(200); var : InPhase(0),Quadrature(0),Phase(0),DeltaPhase(0), InstPeriod(0),Price(0),count(0),Period(0),Trendline(0); Price = (High+Low)/2 ; If CurrentBar > 5 Then{ #'현재bar가 5개 이상이면계산 Var1 = Price - Price[6]; Var2 = Var1[3]; Var3 = 0.75*(Var1 - Var1[6]) + 0.25*(Var1[2] - Var1[4]); InPhase = 0.33*var2 + 0.67*InPhase[1]; Quadrature = 0.2*var3 + 0.8*Quadrature[1]; If Abs(InPhase + InPhase[1]) > 0 Then{ Phase = ArcTangent(Abs((Quadrature + Quadrature[1]) / (InPhase + InPhase[1])))*180/Pie; } If InPhase < 0 And Quadrature > 0 Then{ Phase = 180 - Phase ; } If InPhase < 0 And Quadrature < 0 Then{ Phase = 180 + Phase ; } If InPhase > 0 And Quadrature < 0 Then{ Phase = 360 - Phase ; } DeltaPhase = Phase[1] - Phase ; If Phase[1] < 90 And Phase > 270 Then{ DeltaPhase = 360 + Phase[1] - Phase ; } If DeltaPhase < 1 Then { DeltaPhase = 1 ; } If DeltaPhase > 60 Then { Deltaphase = 60 ; } InstPeriod = 0 ; Var4 =0 ; For count = 0 To 40{ Var4 = Var4 + DeltaPhase[count]; If Var4 > 360 And InstPeriod == 0 Then { InstPeriod = count ; } } If InstPeriod = 0 Then { InstPeriod = InstPeriod[1]; } Var5 = .25 * (InstPeriod) + .75 * Var5[1]; Period = Int(Var5);# 'Var5의 정수값 Trendline = 0 ; For count=0 To Period + 1 { Trendline = Trendline + Price[count]; } If Period > 0 Then{ Trendline = Trendline / ( Period + 2);} Var11 = .33 * (Price + .5 * (Price - Price[3])) + .67 * Var11[1]; If CurrentBar < 26 Then { Trendline = Price ; Value11 = Price ; } Plot1(Trendline, "TR",REd,DEf,2) ; plot2(ema(trendline,speriod),"평균",CYAn,DEf,1);} 이렇게 되는데요. 원 수정 요구한 지표에서 트렌드라인 외에 다른 한개의 지표는 제가 빼고 plot1 값을 지수이평한 라인(plot2)을 추가했읍니다. 요구 사항은 plot1 이 plot2 를 돌파할때 종목검색을 하고자 합니다 . 제가 Price = (High+Low)/2 ; << 이 부분을 price = c ; 이렇게 변형해서 해보아도 검색이 안되는 결과를(""데이타가 없읍니다"") 초래해서 이렇게 도움을 청합니다 . 어떻게 해야 라인1이 평균라인2를 골드하는 지점을 찾을수 있을런지요. 미리 감사 인사 드립니다. 항상 고맙습니다.
종목검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-03-26 15:22:03

안녕하세요 예스스탁입니다. 수식 내용은 별도로 수정할 부분이 없습니다. 아래와 같이 작성해서 검색해 보았지만 정상적으로 종목이 검색되고 있습니다. 종목검색 속성에서 검색에 필요한 기간을 500봉으로 지정하고 검색한 결과입니다. Trendline의 시그널 계산에 지수이평이 사용되었는데 지수이평이 과거봉수에 영향을 받습니다. 종목검색속성에서 검색에 필요한 최소기간을 500봉으로 지정해서 검색하시고 차트도 500봉 조회해서 비교해 보시면 됩니다. input:speriod(200); var : InPhase(0),Quadrature(0),Phase(0),DeltaPhase(0), InstPeriod(0),Price(0),count(0),Period(0),Trendline(0),TrendlineSig(0); Price = (High+Low)/2 ; If CurrentBar > 5 Then { Var1 = Price - Price[6]; Var2 = Var1[3]; Var3 = 0.75*(Var1 - Var1[6]) + 0.25*(Var1[2] - Var1[4]); InPhase = 0.33*var2 + 0.67*InPhase[1]; Quadrature = 0.2*var3 + 0.8*Quadrature[1]; If Abs(InPhase + InPhase[1]) > 0 Then { Phase = ArcTangent(Abs((Quadrature + Quadrature[1]) / (InPhase + InPhase[1])))*180/Pie; } If InPhase < 0 And Quadrature > 0 Then{ Phase = 180 - Phase ; } If InPhase < 0 And Quadrature < 0 Then{ Phase = 180 + Phase ; } If InPhase > 0 And Quadrature < 0 Then{ Phase = 360 - Phase ; } DeltaPhase = Phase[1] - Phase ; If Phase[1] < 90 And Phase > 270 Then{ DeltaPhase = 360 + Phase[1] - Phase ; } If DeltaPhase < 1 Then { DeltaPhase = 1 ; } If DeltaPhase > 60 Then { Deltaphase = 60 ; } InstPeriod = 0 ; Var4 =0 ; For count = 0 To 40{ Var4 = Var4 + DeltaPhase[count]; If Var4 > 360 And InstPeriod == 0 Then { InstPeriod = count ; } } If InstPeriod = 0 Then { InstPeriod = InstPeriod[1]; } Var5 = .25 * (InstPeriod) + .75 * Var5[1]; Period = Int(Var5);# 'Var5의 정수값 Trendline = 0 ; For count=0 To Period + 1 { Trendline = Trendline + Price[count]; } If Period > 0 Then{ Trendline = Trendline / ( Period + 2);} Var11 = .33 * (Price + .5 * (Price - Price[3])) + .67 * Var11[1]; If CurrentBar < 26 Then { Trendline = Price ; Value11 = Price ; } TrendlineSig = ema(trendline,speriod); if CrossUp(Trendline,TrendlineSig) Then Find(1); } 즐거운 하루되세요 > 생각하는허수아비 님이 쓴 글입니다. > 제목 : 종목검색식으로 변환이 어렵네요.. > 항상 바쁘신 업무에 노고가 많읍니다. 과거 2009년에 올라온 자료중에서 제가 사용해 볼려고 하는 지표를 보고 검색식으로 전환하니 실제 검색이 안되어 도움을 청합니다. 트렌드 라인 으로 대신언어를 예스용으로 전환요구한 것 입니다. 수식은 input:speriod(200); var : InPhase(0),Quadrature(0),Phase(0),DeltaPhase(0), InstPeriod(0),Price(0),count(0),Period(0),Trendline(0); Price = (High+Low)/2 ; If CurrentBar > 5 Then{ #'현재bar가 5개 이상이면계산 Var1 = Price - Price[6]; Var2 = Var1[3]; Var3 = 0.75*(Var1 - Var1[6]) + 0.25*(Var1[2] - Var1[4]); InPhase = 0.33*var2 + 0.67*InPhase[1]; Quadrature = 0.2*var3 + 0.8*Quadrature[1]; If Abs(InPhase + InPhase[1]) > 0 Then{ Phase = ArcTangent(Abs((Quadrature + Quadrature[1]) / (InPhase + InPhase[1])))*180/Pie; } If InPhase < 0 And Quadrature > 0 Then{ Phase = 180 - Phase ; } If InPhase < 0 And Quadrature < 0 Then{ Phase = 180 + Phase ; } If InPhase > 0 And Quadrature < 0 Then{ Phase = 360 - Phase ; } DeltaPhase = Phase[1] - Phase ; If Phase[1] < 90 And Phase > 270 Then{ DeltaPhase = 360 + Phase[1] - Phase ; } If DeltaPhase < 1 Then { DeltaPhase = 1 ; } If DeltaPhase > 60 Then { Deltaphase = 60 ; } InstPeriod = 0 ; Var4 =0 ; For count = 0 To 40{ Var4 = Var4 + DeltaPhase[count]; If Var4 > 360 And InstPeriod == 0 Then { InstPeriod = count ; } } If InstPeriod = 0 Then { InstPeriod = InstPeriod[1]; } Var5 = .25 * (InstPeriod) + .75 * Var5[1]; Period = Int(Var5);# 'Var5의 정수값 Trendline = 0 ; For count=0 To Period + 1 { Trendline = Trendline + Price[count]; } If Period > 0 Then{ Trendline = Trendline / ( Period + 2);} Var11 = .33 * (Price + .5 * (Price - Price[3])) + .67 * Var11[1]; If CurrentBar < 26 Then { Trendline = Price ; Value11 = Price ; } Plot1(Trendline, "TR",REd,DEf,2) ; plot2(ema(trendline,speriod),"평균",CYAn,DEf,1);} 이렇게 되는데요. 원 수정 요구한 지표에서 트렌드라인 외에 다른 한개의 지표는 제가 빼고 plot1 값을 지수이평한 라인(plot2)을 추가했읍니다. 요구 사항은 plot1 이 plot2 를 돌파할때 종목검색을 하고자 합니다 . 제가 Price = (High+Low)/2 ; << 이 부분을 price = c ; 이렇게 변형해서 해보아도 검색이 안되는 결과를(""데이타가 없읍니다"") 초래해서 이렇게 도움을 청합니다 . 어떻게 해야 라인1이 평균라인2를 골드하는 지점을 찾을수 있을런지요. 미리 감사 인사 드립니다. 항상 고맙습니다.