커뮤니티

함수요청

프로필 이미지
흰둥이아빠
2023-05-26 12:02:28
1088
글번호 169313
답변완료
안녕하세요? 아래 글번호 82218번 재질문입니다. 답변 주신 스크립트를 5분봉과 일봉에 적용해서 공통의 신호가 발생될 때만 5분봉으로 적용하는 새로운 스크립트로 부탁드립니다. 가령, 아래의 스크립트를 일봉과 5분봉에 모두 적용했을 경우 일봉상 매수신호일 경우에만 5분봉으로 매수신호를 생성하고 싶습니다. 매도의 경우에도 마찬가지입니다. Input : Period(20), D(2); Input : RSIPeriod(9); var : BBdown(0),BBUp(0),BandB(0),RSIV(0); BBDown = BollBandDown(Period,D); BBUp = BollBandUp(Period,D); BandB = ((C-BBDown)/(BBUp-BBDown))*100; RSIV = RSI(RSIPeriod); if BandB > 50 and crossup(BandB,rsiv) Then Buy(); if BandB < 50 and crossdown(BandB,rsiv) Then Sell();
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-05-26 13:20:21

안녕하세요 예스스탁입니다. Input : Period(20), Dv(2); Input : RSIPeriod(9); var : BBdown(0),BBUp(0),BandB(0),RSIV(0); var : cnt(0); var : dsum(0),mav(0),SumSqrt(0),Stdv(0); var : dBBup(0),dBBdn(0),dBandB(0); var : dsum1(0),mav1(0),SumSqrt1(0),Stdv1(0); var : dBBup1(0),dBBdn1(0),dBandB1(0); var : SigSum(0),count2(0),RSIsig(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); var : idx(0), PreUpAvg(0), preDownAvg(0),sum(0),drsiv(0),drsiv1(0); Array : C1[100](0); If DayClose(Period) > 0 Then { #일봉 이동평균 계산 dsum = 0; dsum1 = 0; for cnt = 0 to Period-1 { dsum = dsum + DayClose(cnt); dsum1 = dsum1 + DayClose(cnt+1); } mav = dsum/Period; mav1 = dsum1/Period; #표준편차 계산 SumSqrt = 0; SumSqrt1 = 0; For cnt = 0 To Period - 1 { SumSqrt = SumSqrt + (DayClose(cnt) - mav)^2; SumSqrt = SumSqrt + (DayClose(cnt+1) - mav1)^2; } Stdv = SquareRoot(SumSqrt / Period); Stdv1 = SquareRoot(SumSqrt1 / Period); # 일봉 볼린져밴드 계산 dBBup = mav + (Dv * Stdv); dBBdn = mav - (Dv * Stdv); dBandB = ((C-dBBdn)/(dBBup-dBBdn))*100; dBBup1 = mav1 + (Dv * Stdv1); dBBdn1 = mav1 - (Dv * Stdv1); dBandB1 = ((C-dBBdn1)/(dBBup1-dBBdn1))*100; } if Bdate != Bdate[1] Then { for cnt = 99 DownTo 1 { C1[cnt] = C1[cnt-1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; idx = idx + 1; drsiv1 = drsiv[1]; } C1[0] = C; If idx == RSIPeriod+2 Then { UpSum = 0; DownSum = 0; For Counter = 0 To RSIPeriod - 1 { UpAmt = C1[Counter] - C1[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; } UpAvg = UpSum / RSIPeriod; DownAvg = DownSum / RSIPeriod; } If idx > RSIPeriod+2 Then { UpAmt = C1[0] - C1[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpAvg = (PreUpAvg * (RSIPeriod - 1) + UpAmt) / RSIPeriod; DownAvg = (preDownAvg * (RSIPeriod - 1) + DownAmt) / RSIPeriod; } If UpAvg + DownAvg <> 0 Then dRSIv = 100 * UpAvg / (UpAvg + DownAvg); Else dRSIv = 0; BBDown = BollBandDown(Period,Dv); BBUp = BollBandUp(Period,Dv); BandB = ((C-BBDown)/(BBUp-BBDown))*100; RSIV = RSI(RSIPeriod); if dBandB > 50 and dBandB > dRSIV and dBandB1 <= dRSIv1 and BandB > 50 and crossup(BandB,rsiv) Then Buy(); if dBandB < 50 and dBandB < dRSIV and dBandB1 >= dRSIv1 and BandB < 50 and crossdown(BandB,rsiv) Then Sell(); 즐거운 하루되세요 > 흰둥이아빠 님이 쓴 글입니다. > 제목 : 함수요청 > 안녕하세요? 아래 글번호 82218번 재질문입니다. 답변 주신 스크립트를 5분봉과 일봉에 적용해서 공통의 신호가 발생될 때만 5분봉으로 적용하는 새로운 스크립트로 부탁드립니다. 가령, 아래의 스크립트를 일봉과 5분봉에 모두 적용했을 경우 일봉상 매수신호일 경우에만 5분봉으로 매수신호를 생성하고 싶습니다. 매도의 경우에도 마찬가지입니다. Input : Period(20), D(2); Input : RSIPeriod(9); var : BBdown(0),BBUp(0),BandB(0),RSIV(0); BBDown = BollBandDown(Period,D); BBUp = BollBandUp(Period,D); BandB = ((C-BBDown)/(BBUp-BBDown))*100; RSIV = RSI(RSIPeriod); if BandB > 50 and crossup(BandB,rsiv) Then Buy(); if BandB < 50 and crossdown(BandB,rsiv) Then Sell();