커뮤니티

갭보정식으로부탁드림니다

프로필 이미지
외국인
2012-08-29 09:28:17
351
글번호 54168
답변완료
안녕하세요? 1.갭보정식으로부탁드립니다 Inputs: Length1(10),Length2(3),Length3(3),OverSold(30),OverBought(70); Variables: KLine(0), DLine(0); KLine = StochasticsK(Length1,Length2); DLine = StochasticsD(Length1,Length2,Length3); If Crossup(KLine, DLine) AND KLine < OverSold AND DLine < OverSold Then Buy ("Stch_LE"); If CrossDown(KLine, DLine) AND KLine > OverBought AND DLine > OverBought Then Sell ("Stch_SE"); 2.갭보정식으로부탁드립니다 input : P3(5); var91 = BollBandUp(20,2); var92 = BollBandDown(20,2); var93 = ma(c,10); var94 = MACD(12,26); var95 = ema(var94,7); if C < C[1] and var92 < var92[1] and#주가와 볼밴하단 하향 crossup(c,var92) and #종가가 볼댄하단 상향돌파 C > O*(1+P3/100) And #P%이상의 몸통을 가지는 장대양봉 crossup(c,ma(c,5)) and # 종가가 5이평 상향돌파 crossup(var94,var95) Then#MACD가 시그널선 상향돌파 buy("bo1"); / if max(ma(c,5),ma(C,10),ma(C,20)) <= Min(ma(c,5),ma(C,10),ma(C,20))*1.01 and#3이평이 1%안 밀집 crossup(c,var93) and #종가가 볼댄중심 상향돌파 C > O*(1+P3/100) And #P%이상의 몸통을 가지는 장대양봉 crossup(c,ma(c,5)) and # 종가가 5이평 상향돌파 crossup(var94,var95) Then#MACD가 시그널선 상향돌파 buy("bo2"); if C > C[1] and var91 > var91[1] and#주가와 볼밴상단 상향 CrossDown(c,var91) and #종가가 볼댄상단 하향돌파 C < O*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉 CrossDown(c,ma(C,5)) and # 종가가 5이평 하향이탈 CrossDown(var94,var95) and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn Then#MACD가 시그널선 상향돌파 Sell("sbo1",AtLimit,C); if max(ma(c,5),ma(C,10),ma(C,20)) <= Min(ma(c,5),ma(C,10),ma(C,20))*1.01 and#3이평이 1%안 밀집 CrossDown(c,var93) and #종가가 볼댄상단 하향돌파 C < O*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉 CrossDown(c,ma(C,5)) and # 종가가 5이평 하향이탈 CrossDown(var94,var95) and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn Then#MACD가 시그널선 상향돌파 Sell("sbo2"); if max(ma(c,5),ma(C,10),ma(C,20)) >= Min(ma(c,5),ma(C,10),ma(C,20))*1.01 and#3이평이 1%안 밀집 CrossDown(c,var93) and #종가가 볼댄상단 하향돌파 C < O*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉 CrossDown(c,ma(C,5)) and # 종가가 5이평 하향이탈 CrossDown(var95,var94) and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn Then#MACD가 시그널선 상향돌파 Sell("sbo3",AtLimit,C); 3.갭보정식으로부탁드립니다 Input:Periods(15),Rsi변동폭(20); Var:j(0),상승(100),하락(-100),양방향(2),추세(0), 파동선(0),Rsi파동선(0),방향(0),RsiV(0),Rsi추세선(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0); /* Array:고[20](0),저[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0); */ RsiV = RSI(Periods); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { Rsi고Bar[j] = Rsi고Bar[j] + 1; Rsi저Bar[j] = Rsi저Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then { Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } Else Rsi고Bar[0] = Rsi고Bar[0] + 1; If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then { Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } Else Rsi저Bar[0] = Rsi저Bar[0] + 1; If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then { 고[0] = H; 고Bar[0] = 0; } Else 고Bar[0] = 고Bar[0] + 1; If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then { 저[0] = L; 저Bar[0] = 0; } Else 저Bar[0] = 저Bar[0] + 1; #==========================================# # 추세방향 결정 #==========================================# If Rsi저[0][1] + Rsi변동폭 > RsiV[1] && Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승; If Rsi고[0][1] - Rsi변동폭 < RsiV[1] && Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { Rsi저[j+1] = Rsi저[j]; Rsi저Bar[j+1] = Rsi저Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; 고[0] = H; 고Bar[0] = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { Rsi고[j+1] = Rsi고[j]; Rsi고Bar[j+1] = Rsi고Bar[j]; 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; 저[0] = L; 저Bar[0] = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If Rsi고[1] < Rsi고[0] && Rsi고[0][1] - Rsi변동폭 <= RsiV[1] && Rsi고[0][1] - Rsi변동폭 > RsiV Then { Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } If 고[1] < 고[0] && 고[0] > H Then { 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If Rsi저[1] > Rsi저[0] && Rsi저[0][1] + Rsi변동폭 >= RsiV[1] && Rsi저[0][1] + Rsi변동폭 < RsiV Then { Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } If 저[1] > 저[0] && 저[0] < L Then { 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; } } #==========================================# # 시스템식 #==========================================# #상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승 If 저[2] > 저[1] && Rsi저[1][1] != Rsi저[1][0] && Rsi저[2] < Rsi저[1] Then { Buy("상승다이버전스"); } #하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락 if 고[2] < 고[1] && Rsi고[1][1] != Rsi고[1][0] && Rsi고[2] > Rsi고[1] Then { Sell("하락다이버전스"); } 4.갭보정식으로부탁드립니다 var : MAv(0),BBup(0),BBdn(0) MAv = ma(C,20); BBup = BollBandUp(20,2); BBdn = BollBandDown(20,2); var: 피봇포인트(0); 피봇포인트 = (DayHigh(1)+DayLow(1)+DayClose(1))/3; if C > 피봇포인트 and crossup(C, SAR(af, maxAF)[1]) and c>bbup[1] and c[1] <= BBUp[1] then buy("VL",AtLimit,L); if C < 피봇포인트 and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn[1] and c[1] >= BBDn[1] then sell("VS",AtLimit,C); 5.갭보정식으로부탁드립니다 if crossup(c,ma(c,25)) and H>기준선 and CrossUp(C, sar(af,maxAF)) Then buy("상승"); if CrossDown(c,ma(c,25))and O<기준선[1] and CrossDown(C, sar(af,maxAF)) and c<bbdn Then Sell("하락",AtLimit,C);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-08-29 11:11:38

안녕하세요 예스스탁입니다. 주문함수의 atstop과 atlimit은 지정한 값과 현재가를 비교하므로 해당 내용은 갭보정으로 처리해 갭보정현재가와 지정한 가격을 비교하게는 변경할 수 없습니다. 식작성에 참고하시기 바랍니다. 1. Input: Length1(10),Length2(3),Length3(3),OverSold(30),OverBought(70); var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0); var : stoLval(0), stoHval(0), fstK(0),KLine(0), DLine(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; // 갭보정 종가 stoLval = lowest(GL,Length1); stoHval = highest(GH,Length1); fstK = (GC-stoLval)/(stoHval-stoLval)*100; KLine = ema(fstK, Length2); DLine = ema(KLine, Length3); If Crossup(KLine, DLine) AND KLine < OverSold AND DLine < OverSold Then Buy ("Stch_LE"); If CrossDown(KLine, DLine) AND KLine > OverBought AND DLine > OverBought Then Sell ("Stch_SE"); 2. input : P3(5),af(0.02),maxaf(0.2); var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0); Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(h), LowValue(l), EP(0),Sarv(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 EP != 0 Then { if Direction == 1 then { EP = HighValue; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gh > HighValue then { HighValue = gh; AF_Value = AF_Value + AF; if AF_Value >= maxaf then AF_Value = maxaf; } if gl < SAR_Value then { Direction = -1; SAR_Value = EP; AF_Value = 0; EP = 0; LowValue = gl; } } else { EP = LowValue; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gl < LowValue then { LowValue = gl; AF_Value = AF_Value + Af; if AF_Value >= maxaf then AF_Value = maxaf; } if gh > SAR_Value then { Direction = 1; SAR_Value = EP; AF_Value = 0; EP = 0; HighValue = gh; } } Sarv = SAR_Value; } else { if SAR_Value != 0 && EP == 0 then { if Direction == 1 then { EP = HighValue; AF_Value = AF; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gh > HighValue then { HighValue = gh; AF_Value = AF_Value + AF; if AF_Value >= maxaf then AF_Value = maxaf; } } else { EP = LowValue; AF_Value = Af; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gl < LowValue then { LowValue = gl; AF_Value = AF_Value + AF; if AF_Value >= maxaf then AF_Value = maxaf; } } Sarv = SAR_Value; } else { if Direction == 0 then { if gc > gc[1] then Direction = 1; else if gc < gc[1] then Direction = -1; } else { if Direction == 1 then { if gc < gc[1] then { Direction = -1; SAR_Value = HighValue; Sarv = SAR_Value; } } if Direction == -1 then { if gc > gc[1] then { Direction = 1; SAR_Value = LowValue; Sarv = SAR_Value; } } } LowValue = min(gl, LowValue); HighValue = max(gh, HighValue); } } var91 = ma(gc,20)+std(gc,20)*2; var92 = ma(gc,20)+std(gc,20)*2; var93 = ma(gc,10); var94 = ema(gc,12)-ema(gc,26); var95 = ema(var94,7); if gC < gC[1] and var92 < var92[1] and#주가와 볼밴하단 하향 crossup(c,var92) and #종가가 볼댄하단 상향돌파 gC > gO*(1+P3/100) And #P%이상의 몸통을 가지는 장대양봉 crossup(gc,ma(gc,5)) and # 종가가 5이평 상향돌파 crossup(var94,var95) Then#MACD가 시그널선 상향돌파 buy("bo1"); if max(ma(gc,5),ma(gC,10),ma(gC,20)) <= Min(ma(gc,5),ma(gC,10),ma(gC,20))*1.01 and#3이평이 1%안 밀집 crossup(gc,var93) and #종가가 볼댄중심 상향돌파 gC > gO*(1+P3/100) And #P%이상의 몸통을 가지는 장대양봉 crossup(gc,ma(gc,5)) and # 종가가 5이평 상향돌파 crossup(var94,var95) Then#MACD가 시그널선 상향돌파 buy("bo2"); if gC > gC[1] and var91 > var91[1] and#주가와 볼밴상단 상향 CrossDown(gc,var91) and #종가가 볼댄상단 하향돌파 gC < gO*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉 CrossDown(gc,ma(gC,5)) and # 종가가 5이평 하향이탈 CrossDown(var94,var95) and crossdown(gC, Sarv[1]) and gc<var92 Then#MACD가 시그널선 상향돌파 Sell("sbo1",AtLimit,C); if max(ma(gc,5),ma(gC,10),ma(gC,20)) <= Min(ma(gc,5),ma(gC,10),ma(gC,20))*1.01 and#3이평이 1%안 밀집 CrossDown(gc,var93) and #종가가 볼댄상단 하향돌파 gC < gO*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉 CrossDown(gc,ma(gC,5)) and # 종가가 5이평 하향이탈 CrossDown(var94,var95) and crossdown(gC, Sarv[1]) and gc<var92 Then#MACD가 시그널선 상향돌파 Sell("sbo2"); if max(ma(gc,5),ma(gC,10),ma(gC,20)) >= Min(ma(gc,5),ma(gC,10),ma(gC,20))*1.01 and#3이평이 1%안 밀집 CrossDown(gc,var93) and #종가가 볼댄상단 하향돌파 gC < gO*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉 CrossDown(gc,ma(gC,5)) and # 종가가 5이평 하향이탈 CrossDown(var95,var94) and crossdown(gC, Sarv[1]) and gc<var92 Then#MACD가 시그널선 상향돌파 Sell("sbo3",AtLimit,C); 3. Input:RSIPeriod(15),Rsi변동폭(20); Var:j(0),상승(100),하락(-100),양방향(2),추세(0), 파동선(0),Rsi파동선(0),방향(0),RsiV(0),Rsi추세선(0); var : gap(0),sumgap(0),GO(0),GH(0),GL(0),GC(0),sarv(0); Var : RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](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; // 갭보정 종가 /* Array:고[20](0),저[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](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; #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { Rsi고Bar[j] = Rsi고Bar[j] + 1; Rsi저Bar[j] = Rsi저Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then { Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } Else Rsi고Bar[0] = Rsi고Bar[0] + 1; If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then { Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } Else Rsi저Bar[0] = Rsi저Bar[0] + 1; If 고[0] <= gH || 고[0] == 0 || IsNaN(고[0]) == True Then { 고[0] = gH; 고Bar[0] = 0; } Else 고Bar[0] = 고Bar[0] + 1; If 저[0] >= gL || 저[0] == 0 || IsNaN(저[0]) == True Then { 저[0] = gL; 저Bar[0] = 0; } Else 저Bar[0] = 저Bar[0] + 1; #==========================================# # 추세방향 결정 #==========================================# If Rsi저[0][1] + Rsi변동폭 > RsiV[1] && Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승; If Rsi고[0][1] - Rsi변동폭 < RsiV[1] && Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { Rsi저[j+1] = Rsi저[j]; Rsi저Bar[j+1] = Rsi저Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = gL; 저Bar[0] = 0; 고[0] = gH; 고Bar[0] = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { Rsi고[j+1] = Rsi고[j]; Rsi고Bar[j+1] = Rsi고Bar[j]; 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = gH; 고Bar[0] = 0; 저[0] = gL; 저Bar[0] = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If Rsi고[1] < Rsi고[0] && Rsi고[0][1] - Rsi변동폭 <= RsiV[1] && Rsi고[0][1] - Rsi변동폭 > RsiV Then { Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } If 고[1] < 고[0] && 고[0] > gH Then { 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = gH; 고Bar[0] = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If Rsi저[1] > Rsi저[0] && Rsi저[0][1] + Rsi변동폭 >= RsiV[1] && Rsi저[0][1] + Rsi변동폭 < RsiV Then { Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } If 저[1] > 저[0] && 저[0] < gL Then { 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = gL; 저Bar[0] = 0; } } #==========================================# # 시스템식 #==========================================# #상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승 If 저[2] > 저[1] && Rsi저[1][1] != Rsi저[1][0] && Rsi저[2] < Rsi저[1] Then { Buy("상승다이버전스"); } #하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락 if 고[2] < 고[1] && Rsi고[1][1] != Rsi고[1][0] && Rsi고[2] > Rsi고[1] Then { Sell("하락다이버전스"); } 4. input : af(0.02),maxaf(0.2); var : MAv(0),BBup(0),BBdn(0); var: 피봇포인트(0); var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0); Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(h), LowValue(l), EP(0),Sarv(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; // 갭보정 종가 MAv = ma(gC,20); BBup = mav+std(gc,20)*2; BBdn = mav-std(gc,20)*2; if date != date[1] Then{ var11 = var1[1]; var12 = var2[1]; var13 = gc[1]; } var1 = highest(gh,dayindex+1); var2 = Lowest(gl,dayindex+1); 피봇포인트 = (var11+var12+var13)/3; if EP != 0 Then { if Direction == 1 then { EP = HighValue; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gh > HighValue then { HighValue = gh; AF_Value = AF_Value + AF; if AF_Value >= maxaf then AF_Value = maxaf; } if gl < SAR_Value then { Direction = -1; SAR_Value = EP; AF_Value = 0; EP = 0; LowValue = gl; } } else { EP = LowValue; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gl < LowValue then { LowValue = gl; AF_Value = AF_Value + Af; if AF_Value >= maxaf then AF_Value = maxaf; } if gh > SAR_Value then { Direction = 1; SAR_Value = EP; AF_Value = 0; EP = 0; HighValue = gh; } } Sarv = SAR_Value; } else { if SAR_Value != 0 && EP == 0 then { if Direction == 1 then { EP = HighValue; AF_Value = AF; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gh > HighValue then { HighValue = gh; AF_Value = AF_Value + AF; if AF_Value >= maxaf then AF_Value = maxaf; } } else { EP = LowValue; AF_Value = Af; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gl < LowValue then { LowValue = gl; AF_Value = AF_Value + AF; if AF_Value >= maxaf then AF_Value = maxaf; } } Sarv = SAR_Value; } else { if Direction == 0 then { if gc > gc[1] then Direction = 1; else if gc < gc[1] then Direction = -1; } else { if Direction == 1 then { if gc < gc[1] then { Direction = -1; SAR_Value = HighValue; Sarv = SAR_Value; } } if Direction == -1 then { if gc > gc[1] then { Direction = 1; SAR_Value = LowValue; Sarv = SAR_Value; } } } LowValue = min(gl, LowValue); HighValue = max(gh, HighValue); } } if gC > 피봇포인트 and crossup(gC, Sarv[1]) and gc>bbup[1] and gc[1] <= BBUp[1] then buy("VL",AtLimit,L); if gC < 피봇포인트 and crossdown(gC, Sarv[1]) and gc<bbdn[1] and gc[1] >= BBDn[1] then sell("VS",AtLimit,C); 5. input : af(0.02),maxaf(0.2); var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0); Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(h), LowValue(l), EP(0),Sarv(0); var : 기준선(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; // 갭보정 종가 기준선 = (highest(gH,26)+lowest(gL,26))/2; if EP != 0 Then { if Direction == 1 then { EP = HighValue; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gh > HighValue then { HighValue = gh; AF_Value = AF_Value + AF; if AF_Value >= maxaf then AF_Value = maxaf; } if gl < SAR_Value then { Direction = -1; SAR_Value = EP; AF_Value = 0; EP = 0; LowValue = gl; } } else { EP = LowValue; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gl < LowValue then { LowValue = gl; AF_Value = AF_Value + Af; if AF_Value >= maxaf then AF_Value = maxaf; } if gh > SAR_Value then { Direction = 1; SAR_Value = EP; AF_Value = 0; EP = 0; HighValue = gh; } } Sarv = SAR_Value; } else { if SAR_Value != 0 && EP == 0 then { if Direction == 1 then { EP = HighValue; AF_Value = AF; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gh > HighValue then { HighValue = gh; AF_Value = AF_Value + AF; if AF_Value >= maxaf then AF_Value = maxaf; } } else { EP = LowValue; AF_Value = Af; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if gl < LowValue then { LowValue = gl; AF_Value = AF_Value + AF; if AF_Value >= maxaf then AF_Value = maxaf; } } Sarv = SAR_Value; } else { if Direction == 0 then { if gc > gc[1] then Direction = 1; else if gc < gc[1] then Direction = -1; } else { if Direction == 1 then { if gc < gc[1] then { Direction = -1; SAR_Value = HighValue; Sarv = SAR_Value; } } if Direction == -1 then { if gc > gc[1] then { Direction = 1; SAR_Value = LowValue; Sarv = SAR_Value; } } } LowValue = min(gl, LowValue); HighValue = max(gh, HighValue); } } if crossup(gc,ma(gc,25)) and gH>기준선 and CrossUp(gC, Sarv) Then buy("상승"); if CrossDown(gc,ma(gc,25))and gO<기준선[1] and CrossDown(gC, Sarv) and gc< ma(gc,20)-std(gc,20)*2 Then Sell("하락",AtLimit,C); 즐거운 하루되세요 > 외국인 님이 쓴 글입니다. > 제목 : 갭보정식으로부탁드림니다 > 안녕하세요? 1.갭보정식으로부탁드립니다 Inputs: Length1(10),Length2(3),Length3(3),OverSold(30),OverBought(70); Variables: KLine(0), DLine(0); KLine = StochasticsK(Length1,Length2); DLine = StochasticsD(Length1,Length2,Length3); If Crossup(KLine, DLine) AND KLine < OverSold AND DLine < OverSold Then Buy ("Stch_LE"); If CrossDown(KLine, DLine) AND KLine > OverBought AND DLine > OverBought Then Sell ("Stch_SE"); 2.갭보정식으로부탁드립니다 input : P3(5); var91 = BollBandUp(20,2); var92 = BollBandDown(20,2); var93 = ma(c,10); var94 = MACD(12,26); var95 = ema(var94,7); if C < C[1] and var92 < var92[1] and#주가와 볼밴하단 하향 crossup(c,var92) and #종가가 볼댄하단 상향돌파 C > O*(1+P3/100) And #P%이상의 몸통을 가지는 장대양봉 crossup(c,ma(c,5)) and # 종가가 5이평 상향돌파 crossup(var94,var95) Then#MACD가 시그널선 상향돌파 buy("bo1"); / if max(ma(c,5),ma(C,10),ma(C,20)) <= Min(ma(c,5),ma(C,10),ma(C,20))*1.01 and#3이평이 1%안 밀집 crossup(c,var93) and #종가가 볼댄중심 상향돌파 C > O*(1+P3/100) And #P%이상의 몸통을 가지는 장대양봉 crossup(c,ma(c,5)) and # 종가가 5이평 상향돌파 crossup(var94,var95) Then#MACD가 시그널선 상향돌파 buy("bo2"); if C > C[1] and var91 > var91[1] and#주가와 볼밴상단 상향 CrossDown(c,var91) and #종가가 볼댄상단 하향돌파 C < O*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉 CrossDown(c,ma(C,5)) and # 종가가 5이평 하향이탈 CrossDown(var94,var95) and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn Then#MACD가 시그널선 상향돌파 Sell("sbo1",AtLimit,C); if max(ma(c,5),ma(C,10),ma(C,20)) <= Min(ma(c,5),ma(C,10),ma(C,20))*1.01 and#3이평이 1%안 밀집 CrossDown(c,var93) and #종가가 볼댄상단 하향돌파 C < O*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉 CrossDown(c,ma(C,5)) and # 종가가 5이평 하향이탈 CrossDown(var94,var95) and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn Then#MACD가 시그널선 상향돌파 Sell("sbo2"); if max(ma(c,5),ma(C,10),ma(C,20)) >= Min(ma(c,5),ma(C,10),ma(C,20))*1.01 and#3이평이 1%안 밀집 CrossDown(c,var93) and #종가가 볼댄상단 하향돌파 C < O*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉 CrossDown(c,ma(C,5)) and # 종가가 5이평 하향이탈 CrossDown(var95,var94) and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn Then#MACD가 시그널선 상향돌파 Sell("sbo3",AtLimit,C); 3.갭보정식으로부탁드립니다 Input:Periods(15),Rsi변동폭(20); Var:j(0),상승(100),하락(-100),양방향(2),추세(0), 파동선(0),Rsi파동선(0),방향(0),RsiV(0),Rsi추세선(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0); /* Array:고[20](0),저[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0); */ RsiV = RSI(Periods); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { Rsi고Bar[j] = Rsi고Bar[j] + 1; Rsi저Bar[j] = Rsi저Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then { Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } Else Rsi고Bar[0] = Rsi고Bar[0] + 1; If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then { Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } Else Rsi저Bar[0] = Rsi저Bar[0] + 1; If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then { 고[0] = H; 고Bar[0] = 0; } Else 고Bar[0] = 고Bar[0] + 1; If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then { 저[0] = L; 저Bar[0] = 0; } Else 저Bar[0] = 저Bar[0] + 1; #==========================================# # 추세방향 결정 #==========================================# If Rsi저[0][1] + Rsi변동폭 > RsiV[1] && Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승; If Rsi고[0][1] - Rsi변동폭 < RsiV[1] && Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { Rsi저[j+1] = Rsi저[j]; Rsi저Bar[j+1] = Rsi저Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; 고[0] = H; 고Bar[0] = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { Rsi고[j+1] = Rsi고[j]; Rsi고Bar[j+1] = Rsi고Bar[j]; 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; 저[0] = L; 저Bar[0] = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If Rsi고[1] < Rsi고[0] && Rsi고[0][1] - Rsi변동폭 <= RsiV[1] && Rsi고[0][1] - Rsi변동폭 > RsiV Then { Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } If 고[1] < 고[0] && 고[0] > H Then { 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If Rsi저[1] > Rsi저[0] && Rsi저[0][1] + Rsi변동폭 >= RsiV[1] && Rsi저[0][1] + Rsi변동폭 < RsiV Then { Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } If 저[1] > 저[0] && 저[0] < L Then { 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; } } #==========================================# # 시스템식 #==========================================# #상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승 If 저[2] > 저[1] && Rsi저[1][1] != Rsi저[1][0] && Rsi저[2] < Rsi저[1] Then { Buy("상승다이버전스"); } #하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락 if 고[2] < 고[1] && Rsi고[1][1] != Rsi고[1][0] && Rsi고[2] > Rsi고[1] Then { Sell("하락다이버전스"); } 4.갭보정식으로부탁드립니다 var : MAv(0),BBup(0),BBdn(0) MAv = ma(C,20); BBup = BollBandUp(20,2); BBdn = BollBandDown(20,2); var: 피봇포인트(0); 피봇포인트 = (DayHigh(1)+DayLow(1)+DayClose(1))/3; if C > 피봇포인트 and crossup(C, SAR(af, maxAF)[1]) and c>bbup[1] and c[1] <= BBUp[1] then buy("VL",AtLimit,L); if C < 피봇포인트 and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn[1] and c[1] >= BBDn[1] then sell("VS",AtLimit,C); 5.갭보정식으로부탁드립니다 if crossup(c,ma(c,25)) and H>기준선 and CrossUp(C, sar(af,maxAF)) Then buy("상승"); if CrossDown(c,ma(c,25))and O<기준선[1] and CrossDown(C, sar(af,maxAF)) and c<bbdn Then Sell("하락",AtLimit,C);