커뮤니티

문의드립니다.

프로필 이미지
마린187
2011-06-06 16:10:16
642
글번호 39442
답변완료
안녕하세요 항상 친절한 답변 감사드립니다. 문의 사항은 다음과 같습니다. 1. 갭보정하고 2. "DMI지표" 중 +DI가 -DI를 상향돌파(상태) + "RSI"가 50을 상향돌파(상태)할때 매수 3. "DMI지표" 중 +DI가 -DI를 하향돌파(상태) + "RSI"가 50을 하향돌파(상태)할때 매도 위의 내용에 맞는 시스템식 부탁드립니다. 항상건강하고 행복하세요....
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-06-07 15:12:47

안녕하세요 예스스탁입니다. Inputs: Length(10); Inputs: RSIPeriod(14); Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(0); var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0),TH(0),TL(0),TR(0); Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),DPlus(0); Var : MinusDM14(0), Dminus(0),DMIv(0), ADXCounter(0), ADXCummDMI(0), ADXReturn(0),Return(0),GADX(0); if date!=date[1] then { // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉) gap = Open-Close[1]; // 일간갭 sumGap = sumGap+gap; // 일간갭 누적 } GO = O - sumGap;// 갭보정 시가 GH = H - sumGap;// 갭보정 고가 GL = L - sumGap;// 갭보정 저가 GC = C - sumGap; // 갭보정 종가 If GC[1] > GH then TH = GC[1]; else TH = GH; If GC[1] < GL then TL = GC[1]; else TL = GL; TR = TH - TL; If CurrentBar == 1 Then { MyRange = Length; DPlus = 0; PlusDM14 = 0; MinusDM14 = 0; TRange = 0; For Counter = 0 To MyRange - 1 { If GH[Counter] - GH[Counter+1] < 0 Then PlusDM = 0; Else PlusDM = GH[Counter] - GH[Counter+1]; If GL[Counter+1] - GL[Counter] < 0 Then MinusDM = 0; Else MinusDM = GL[Counter+1] - GL[Counter]; If MinusDM >= PlusDM Then PlusDM = 0; If PlusDM >= MinusDM Then MinusDM = 0; TRange = TRange + TR[Counter]; PlusDM14 = PlusDM14 + PlusDM; MinusDM14 = MinusDM14 + MinusDM; } If TRange <> 0 Then DPlus = 100 * PlusDM14 / TRange; Else DPlus = 0 ; If TRange <> 0 Then DMinus = 100 * MinusDM14 / TRange; Else DMinus = 0; } ##dp Else If CurrentBar > 1 Then { If GH[0] - GH[1] < 0 Then PlusDM = 0; Else PlusDM = GH[0] - GH[1]; If GL[1] - GL[0] < 0 Then MinusDM = 0; Else MinusDM = GL[1] - GL[0]; If MinusDM >= PlusDM Then PlusDM = 0; If PlusDM >= MinusDM Then MinusDM = 0 ; If MyRange > 0 Then Begin TRange = TRange[1] - (TRange[1] / MyRange) + TR; PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM; MinusDM14 = MinusDM14[1] - (MinusDM14[1] / MyRange) + MinusDM; End; If TRange <> 0 Then DPlus = 100 * PlusDM14 / TRange; Else DPlus = 0 ; If TRange <> 0 Then DMinus = 100 * MinusDM14 / TRange; Else DMinus = 0; } If CurrentBar == 1 AND RSIPeriod > 0 Then Begin UpSum = 0; DownSum = 0; For RSIcount = 0 To RSIPeriod - 1 Begin UpAmt = GC[RSIcount] - GC[RSIcount+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / RSIPeriod; DownAvg = DownSum / RSIPeriod; End Else If CurrentBar > 1 AND RSIPeriod > 0 Then Begin UpAmt = GC[0] - GC[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod; DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod; End; If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; if crossup(Dplus,Dminus) Then Condition1 = True; if CrossDown(Dplus,Dminus) Then Condition1 = false; if Condition1 == true and crossup(Rsiv,50) Then buy(); if Condition1 == false and CrossDown(Rsiv,50) Then sell(); 즐거운 하루되세요 > 마린187 님이 쓴 글입니다. > 제목 : 문의드립니다. > 안녕하세요 항상 친절한 답변 감사드립니다. 문의 사항은 다음과 같습니다. 1. 갭보정하고 2. "DMI지표" 중 +DI가 -DI를 상향돌파(상태) + "RSI"가 50을 상향돌파(상태)할때 매수 3. "DMI지표" 중 +DI가 -DI를 하향돌파(상태) + "RSI"가 50을 하향돌파(상태)할때 매도 위의 내용에 맞는 시스템식 부탁드립니다. 항상건강하고 행복하세요....