커뮤니티
갭보정식으로부탁드림니다
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);
이전글