커뮤니티

문의 드려봅니다..

프로필 이미지
프로브
2012-07-18 17:21:59
269
글번호 53003
답변완료
안녕하세요.. 문의 드려봅니다. 실행되는 차트(종류 관계없이 5분 30분 200틱 300틱)에서 수평선 A가 있고 수평선이 종가가 crossup 이면 매수 crossdown매도를 주는데 조건이 스토캐스틱 슬로우 240분의 k가 d를 골드크로스 중 이고 60분 rsi가 50 이상일때 매수만 가능 스토캐스틱 슬로으 240분 k가 d를 데드크로스 중 이고 60분 rsi가 50 이하 일때는 매도시그널만 가능하게 식을 부탁드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-07-19 13:49:48

안녕하세요 예스스탁입니다. 틱봉에서는 분봉의 값이 정확히 계산될 수 없습니다. 또한 사용하는 차트를 구분해 타분봉을 계산하는내용이므로 봉갯수 문제로 값이 맞지 않을 수 있습니다. Inputs:Atime(60), Length(9); Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0), RSIv(0); var : Dindex(0), PreUpAvg(0), preDownAvg(0),cnt1(0); Array : CC[100](0); input : Atime1(240),StoPeriod(5), StoPeriod1(3), StoPeriod2(3); var : count(0), highVal(0), lowVal(0), StoFastK(0), StoK(0), StoD(0); var : Ep(0), EP1(0), JISU(0), DINDEX1(0), PreStoK(0), PreStoD(0),cnt(0); Array : HH[100](0),LL[100](0); input : 수평선값(100); var1 = TimeToMinutes(stime)%Atime; if dayindex() == 0 or var1 <= var1[1] Then{ CC[1] = C[1]; for cnt1 = 2 to 99{ CC[cnt1] = CC[cnt1-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; Dindex = dindex + 1; } CC[0] = C; If Dindex == Length Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = C[Counter] - C[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / Length; DownAvg = DownSum / Length; End If Dindex > Length Then { UpAmt = CC[0]-Cc[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } if Dindex <=1 Then { UpAvg = 1; DownAvg = 1; } Else { UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length; DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length; } } If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; var1 = TimeToMinutes(stime)%Atime1; if dayindex == 0 or var1 < var1[1] Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 19{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; #### 특정 구간의 고가 [highest(H,StoPeriod)] #### highVal = HH[0]; for count = 0 to StoPeriod-1 { if HH[count] > highVal then highVal = HH[count]; } #### 특정 구간의 저가 [lowest(L,StoPeriod)] #### lowVal = LL[0]; for count = 0 to StoPeriod-1 { if LL[count] < lowVal then lowVal = LL[count]; } #### Fast StochasticsK #### StoFastK = (C-lowVal)/(highVal-lowVal)*100; //Fast StochasticsK ==> (C-lowest(L,StoPeriod))/(highest(H,StoPeriod)-lowest(L,StoPeriod))*100 #### Slow StochasticsK #### Ep = 2/(StoPeriod1+1); if DINDEX >= StoPeriod and (date != date[1] or var1 < var1[1]) then { DINDEX1 = DINDEX1 + 1; PreStoK = StoK[1]; } if DINDEX1 <= 1 then StoK = StoFastK ; else StoK = StoFastK * EP + PreStoK * (1-EP); #### Slow StochasticsD #### Ep1 = 2/(StoPeriod2+1); if date != date[1] or var1 < var1[1] then { DINDEX1 = DINDEX1 + 1; PreStoD = StoD[1]; } if DINDEX1 <= 1 then StoD = StoK ; else StoD = StoK * EP1 + PreStoD * (1-EP1); if stok > stod and RSIv >= 50 and crossup(c,수평선값) Then buy(); if stok < stod and RSIv <= 50 and CrossDown(c,수평선값) Then sell(); 즐거운 하루되세요 > 프로브 님이 쓴 글입니다. > 제목 : 문의 드려봅니다.. > 안녕하세요.. 문의 드려봅니다. 실행되는 차트(종류 관계없이 5분 30분 200틱 300틱)에서 수평선 A가 있고 수평선이 종가가 crossup 이면 매수 crossdown매도를 주는데 조건이 스토캐스틱 슬로우 240분의 k가 d를 골드크로스 중 이고 60분 rsi가 50 이상일때 매수만 가능 스토캐스틱 슬로으 240분 k가 d를 데드크로스 중 이고 60분 rsi가 50 이하 일때는 매도시그널만 가능하게 식을 부탁드립니다.