커뮤니티
실행이 안됩니다.
2012-07-31 20:08:10
405
글번호 53402
설정값을 바꾸지 않고 그대로 복사해서
해 봤는데요, 안 됩니다.
차트는
data2는 연결선물 3분봉
data1는 (신호가 뜨는 분봉) 연결 1분봉.
------------------------------------------
Input: shortPeriod(13), longPeriod(26), Period(6), maPeriod(13), ROCPeriod(9), stoPeriod1(10),
stoPeriod2(6), CCIPeriod(9),n(50),n1(1),n2(10);
input: P1(13),P2(26),P3(6);
var: value(0,data2),BW_SEVEN(0,data2);
var : Va1(0,data2),va2(0,data2),va3(0,data2),D1Stok(0,data1),D1stod(0,data1);
var : sumGap(0,data2), gap(0,data2), GO(0,data2), GH(0,data2), GL(0,data2), GC(0,data2);
VAR : TCHAN(0,data1), BCHAN(0,data1);
if data2(date!=date[1]) then {
gap = data2(Open-Close[1]);
sumGap = sumGap+gap;
}
GO = data2(O - sumGap);
GH = data2(H - sumGap);
GL = data2(L - sumGap);
GC = data2(C - sumGap);
//문장1 : MACD가 MACD 시그널선 보다 큼
if data2(ema(gC,shortPeriod)-ema(gC,longPeriod) >= ema(ema(gC,shortPeriod)-ema(gC,longPeriod),Period)) then
value = 1;
else
value = -1;
//문장2 : 종가가 이동평균선보다 큼
if data2(gC >= ma(gC, maPeriod)) then
value = value + 1;
else
value = value - 1;
//문장3 : Price ROC가 0선보다 큼
if data2((gC - gC[ROCPeriod]) / gC[ROCPeriod] * 100 >= 0) then
value = value + 1;
else
value = value - 1;
//문장4 : StochasticsK선이 50선 보다 큼
if data2(ema((gC-lowest(gL, stoPeriod1)) / (highest(gH, stoPeriod1) - lowest(gL, stoPeriod1)) * 100, stoPeriod2)>=50) then
value = value + 1;
else
value = value - 1;
Variables: Sum(0), CCIcount(0), MD(0), Avgvalue(0),CCIV(0);
If CCIPeriod > 0 Then Begin
Avgvalue = data2(Ma(GH + gL + GC, CCIPeriod));
MD = 0;
For CCIcount = 0 To CCIPeriod - 1 Begin
MD = MD + data2(Abs(GH[CCIcount] + gL[CCIcount] + GC[CCIcount] - Avgvalue));
End;
MD = data2(MD / CCIPeriod);
If MD == 0 Then
CCIv = 0;
Else
CCIv = data2((GH + gL + GC - Avgvalue) / (0.015 * MD));
End
Else
CCIv = 0;
//CCI가 0선 보다 큼
if CCIv > 0 then
value = value + 1;
else
value = value - 1;
//CO가 0선 보다 큼
if data2(ema(accum(((gC -gL)-(gH- gC))/ (gH-gL)*V), 3) - ema(accum(((gC -gL)-(gH- gC))/(gH-gL)*V), 10) >=0) then
value = value + 1;
else
value = value - 1;
input : AF(0.02),AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(h), LowValue(l), EP(0),Sarv(0);
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 >= AFMAX then AF_Value = AFMAX;
}
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 >= AFMAX then AF_Value = AFMAX;
}
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 >= AFMAX then AF_Value = AFMAX;
}
}
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 >= AFMAX then AF_Value = AFMAX;
}
}
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);
}
}
//문장7 : 종가가 파라볼릭보다 큼
if Sarv < gC then
value = value + 1;
else
value = value - 1;
BW_SEVEN = value;
# 매도/매수청산
va1 = data2(ema(BW_SEVEN,P1)- ema(BW_SEVEN,P2));
va2 = data2(ema(va1,P3));
va3 = data2(va1-va2);
d1stoK = data1(StochasticsK(4,3));
d1stoD = data1(StochasticsD(4,3,3));
TCHAN = HIGHEST(HIGH, n2);
BCHAN = LOWEST(LOW, n2);
If CrossUp(value,1) and (crossup(D1stok,20) or (crossup(D1stok,D1Stod) and D1stok >= 20 and D1stok < N)) Then
{
Buy();
}
If CrossDown(value,-1) or Crossdown(c,BCHAN[n1]) Then
{
ExitLong();
}
If CrossDown(value,-1) and (CrossDown(D1stok,80) or (CrossDown(D1stok,D1Stod) and D1stok <= 80 and D1stok > N)) Then
{
Sell();
}
If Crossup(value,1) or crossup(c,TCHAN[n1]) Then
{
Sell();
}
답변 3
예스스탁 예스스탁 답변
2012-07-31 20:19:17
안녕하세요
예스스탁입니다.
안된다고 하시는 부분이 신호가 발생하지 않는다는 의미이신지
신호가 잘못 발생하고 있다고 하시는 내용인지 자세한 내용 부탁드립니다.
신호는 정상적으로 발생하고 있습니다.
즐거운 하루되세요
> 흑수돌 님이 쓴 글입니다.
> 제목 : 실행이 안됩니다.
>
설정값을 바꾸지 않고 그대로 복사해서
해 봤는데요, 안 됩니다.
차트는
data2는 연결선물 3분봉
data1는 (신호가 뜨는 분봉) 연결 1분봉.
------------------------------------------
Input: shortPeriod(13), longPeriod(26), Period(6), maPeriod(13), ROCPeriod(9), stoPeriod1(10),
stoPeriod2(6), CCIPeriod(9),n(50),n1(1),n2(10);
input: P1(13),P2(26),P3(6);
var: value(0,data2),BW_SEVEN(0,data2);
var : Va1(0,data2),va2(0,data2),va3(0,data2),D1Stok(0,data1),D1stod(0,data1);
var : sumGap(0,data2), gap(0,data2), GO(0,data2), GH(0,data2), GL(0,data2), GC(0,data2);
VAR : TCHAN(0,data1), BCHAN(0,data1);
if data2(date!=date[1]) then {
gap = data2(Open-Close[1]);
sumGap = sumGap+gap;
}
GO = data2(O - sumGap);
GH = data2(H - sumGap);
GL = data2(L - sumGap);
GC = data2(C - sumGap);
//문장1 : MACD가 MACD 시그널선 보다 큼
if data2(ema(gC,shortPeriod)-ema(gC,longPeriod) >= ema(ema(gC,shortPeriod)-ema(gC,longPeriod),Period)) then
value = 1;
else
value = -1;
//문장2 : 종가가 이동평균선보다 큼
if data2(gC >= ma(gC, maPeriod)) then
value = value + 1;
else
value = value - 1;
//문장3 : Price ROC가 0선보다 큼
if data2((gC - gC[ROCPeriod]) / gC[ROCPeriod] * 100 >= 0) then
value = value + 1;
else
value = value - 1;
//문장4 : StochasticsK선이 50선 보다 큼
if data2(ema((gC-lowest(gL, stoPeriod1)) / (highest(gH, stoPeriod1) - lowest(gL, stoPeriod1)) * 100, stoPeriod2)>=50) then
value = value + 1;
else
value = value - 1;
Variables: Sum(0), CCIcount(0), MD(0), Avgvalue(0),CCIV(0);
If CCIPeriod > 0 Then Begin
Avgvalue = data2(Ma(GH + gL + GC, CCIPeriod));
MD = 0;
For CCIcount = 0 To CCIPeriod - 1 Begin
MD = MD + data2(Abs(GH[CCIcount] + gL[CCIcount] + GC[CCIcount] - Avgvalue));
End;
MD = data2(MD / CCIPeriod);
If MD == 0 Then
CCIv = 0;
Else
CCIv = data2((GH + gL + GC - Avgvalue) / (0.015 * MD));
End
Else
CCIv = 0;
//CCI가 0선 보다 큼
if CCIv > 0 then
value = value + 1;
else
value = value - 1;
//CO가 0선 보다 큼
if data2(ema(accum(((gC -gL)-(gH- gC))/ (gH-gL)*V), 3) - ema(accum(((gC -gL)-(gH- gC))/(gH-gL)*V), 10) >=0) then
value = value + 1;
else
value = value - 1;
input : AF(0.02),AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(h), LowValue(l), EP(0),Sarv(0);
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 >= AFMAX then AF_Value = AFMAX;
}
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 >= AFMAX then AF_Value = AFMAX;
}
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 >= AFMAX then AF_Value = AFMAX;
}
}
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 >= AFMAX then AF_Value = AFMAX;
}
}
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);
}
}
//문장7 : 종가가 파라볼릭보다 큼
if Sarv < gC then
value = value + 1;
else
value = value - 1;
BW_SEVEN = value;
# 매도/매수청산
va1 = data2(ema(BW_SEVEN,P1)- ema(BW_SEVEN,P2));
va2 = data2(ema(va1,P3));
va3 = data2(va1-va2);
d1stoK = data1(StochasticsK(4,3));
d1stoD = data1(StochasticsD(4,3,3));
TCHAN = HIGHEST(HIGH, n2);
BCHAN = LOWEST(LOW, n2);
If CrossUp(value,1) and (crossup(D1stok,20) or (crossup(D1stok,D1Stod) and D1stok >= 20 and D1stok < N)) Then
{
Buy();
}
If CrossDown(value,-1) or Crossdown(c,BCHAN[n1]) Then
{
ExitLong();
}
If CrossDown(value,-1) and (CrossDown(D1stok,80) or (CrossDown(D1stok,D1Stod) and D1stok <= 80 and D1stok > N)) Then
{
Sell();
}
If Crossup(value,1) or crossup(c,TCHAN[n1]) Then
{
Sell();
}
흑수돌
2012-07-31 22:09:27
신호의 개념은 간단합니다.
data1 1분봉에서의 잦은 신호를
data2 의 신호로 필터링을 주는 것인데요,
지표를 문의 드릴때 참고로 드린
'갭보정된 세븐바이너리 신호' 만 3분봉에 돌려 보시면 알겠지만,
그 신호는 하루에도 여러번의 신호를 뿌려줍니다.
또한,
추가로 문의한 스토케스틱 신호만을
1분봉에서 돌려보시면
그 신호 또한 하루에도 여러번 신호를 주게 됩니다.
스토케스틱 4-3-3 이니 오죽하겠습니까.
그런데,
여기에 data2의 신호를 필터링 건다고 해서
하루에 한번도 신호가 안나올 수는 없는 노릇이거든요.
======25628 문의 게시글 ================
> 제목 : 수식 문의
> 아래는 기본 지표에 있는 '세븐바이너리지표'를 갭보정하여
매수,매도가 나올 수 있도록 시스템 수식으로 만든 것입니다.
아래 수식을
data2(같은 종목의 타주기)의 매수 매도 조건으로 하고
매수 ::::
data1에서는
조건1 : 스토캐스틱슬로우 4-3-3이 침체권 20에서 탈출하는 순간.
또는
조건2 : 스토캐스틱슬로우 4-3-3이 %K선이 %D선을 골드 크로스 치는 순간.
조건3 : 단 침체권 안에서의 골드크로스와 기준선 n값 이상에서의 골드크로스는 인정하지 않음)
매수 하되
조건4 : data2의 신호가 매수일때에만 위의 매수신호가 유효한 것으로 처리
(조건 1,2가 발생한 이후에 조건4가 충족될 때는 신호를 발생시키지 않습니다.)
매수 청산 :::
주가가 종가상 n봉 전의 price channel n2값 하단을 깨고 내려가면 청산.
또는
data2가 매도 조건이 뜨면 청산.
매도 ::::
data1에서는
조건1 : 스토캐스틱슬로우 4-3-3이 과열권 80에서 탈출하는 순간.
또는
조건2 : 스토캐스틱슬로우 4-3-3이 %K선이 %D선을 데드 크로스 치는 순간.
조건3 : 단 과열권 안에서의 데드크로스와 기준선 n값 이하에서의 골드크로스는 인정하지 않음)
매도 하되
조건4 : data2의 신호가 매도일때에만 위의 매수신호가 유효한 것으로 처리
(조건 1,2가 발생한 이후에 조건4가 충족될 때는 신호를 발생시키지 않습니다.)
매도 청산 :
주가가 종가상 n봉 전의 price channel n2값 상단을 뚫고 올라가면 청산.
또는
data2가 매수 조건이 뜨면 청산.
================
위의 수식의 모든 조건값을 직접 수정할 수 있도록 해주시기 바랍니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 실행이 안됩니다.
> 안녕하세요
예스스탁입니다.
안된다고 하시는 부분이 신호가 발생하지 않는다는 의미이신지
신호가 잘못 발생하고 있다고 하시는 내용인지 자세한 내용 부탁드립니다.
신호는 정상적으로 발생하고 있습니다.
즐거운 하루되세요
> 흑수돌 님이 쓴 글입니다.
> 제목 : 실행이 안됩니다.
>
설정값을 바꾸지 않고 그대로 복사해서
해 봤는데요, 안 됩니다.
차트는
data2는 연결선물 3분봉
data1는 (신호가 뜨는 분봉) 연결 1분봉.
------------------------------------------
Input: shortPeriod(13), longPeriod(26), Period(6), maPeriod(13), ROCPeriod(9), stoPeriod1(10),
stoPeriod2(6), CCIPeriod(9),n(50),n1(1),n2(10);
input: P1(13),P2(26),P3(6);
var: value(0,data2),BW_SEVEN(0,data2);
var : Va1(0,data2),va2(0,data2),va3(0,data2),D1Stok(0,data1),D1stod(0,data1);
var : sumGap(0,data2), gap(0,data2), GO(0,data2), GH(0,data2), GL(0,data2), GC(0,data2);
VAR : TCHAN(0,data1), BCHAN(0,data1);
if data2(date!=date[1]) then {
gap = data2(Open-Close[1]);
sumGap = sumGap+gap;
}
GO = data2(O - sumGap);
GH = data2(H - sumGap);
GL = data2(L - sumGap);
GC = data2(C - sumGap);
//문장1 : MACD가 MACD 시그널선 보다 큼
if data2(ema(gC,shortPeriod)-ema(gC,longPeriod) >= ema(ema(gC,shortPeriod)-ema(gC,longPeriod),Period)) then
value = 1;
else
value = -1;
//문장2 : 종가가 이동평균선보다 큼
if data2(gC >= ma(gC, maPeriod)) then
value = value + 1;
else
value = value - 1;
//문장3 : Price ROC가 0선보다 큼
if data2((gC - gC[ROCPeriod]) / gC[ROCPeriod] * 100 >= 0) then
value = value + 1;
else
value = value - 1;
//문장4 : StochasticsK선이 50선 보다 큼
if data2(ema((gC-lowest(gL, stoPeriod1)) / (highest(gH, stoPeriod1) - lowest(gL, stoPeriod1)) * 100, stoPeriod2)>=50) then
value = value + 1;
else
value = value - 1;
Variables: Sum(0), CCIcount(0), MD(0), Avgvalue(0),CCIV(0);
If CCIPeriod > 0 Then Begin
Avgvalue = data2(Ma(GH + gL + GC, CCIPeriod));
MD = 0;
For CCIcount = 0 To CCIPeriod - 1 Begin
MD = MD + data2(Abs(GH[CCIcount] + gL[CCIcount] + GC[CCIcount] - Avgvalue));
End;
MD = data2(MD / CCIPeriod);
If MD == 0 Then
CCIv = 0;
Else
CCIv = data2((GH + gL + GC - Avgvalue) / (0.015 * MD));
End
Else
CCIv = 0;
//CCI가 0선 보다 큼
if CCIv > 0 then
value = value + 1;
else
value = value - 1;
//CO가 0선 보다 큼
if data2(ema(accum(((gC -gL)-(gH- gC))/ (gH-gL)*V), 3) - ema(accum(((gC -gL)-(gH- gC))/(gH-gL)*V), 10) >=0) then
value = value + 1;
else
value = value - 1;
input : AF(0.02),AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(h), LowValue(l), EP(0),Sarv(0);
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 >= AFMAX then AF_Value = AFMAX;
}
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 >= AFMAX then AF_Value = AFMAX;
}
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 >= AFMAX then AF_Value = AFMAX;
}
}
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 >= AFMAX then AF_Value = AFMAX;
}
}
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);
}
}
//문장7 : 종가가 파라볼릭보다 큼
if Sarv < gC then
value = value + 1;
else
value = value - 1;
BW_SEVEN = value;
# 매도/매수청산
va1 = data2(ema(BW_SEVEN,P1)- ema(BW_SEVEN,P2));
va2 = data2(ema(va1,P3));
va3 = data2(va1-va2);
d1stoK = data1(StochasticsK(4,3));
d1stoD = data1(StochasticsD(4,3,3));
TCHAN = HIGHEST(HIGH, n2);
BCHAN = LOWEST(LOW, n2);
If CrossUp(value,1) and (crossup(D1stok,20) or (crossup(D1stok,D1Stod) and D1stok >= 20 and D1stok < N)) Then
{
Buy();
}
If CrossDown(value,-1) or Crossdown(c,BCHAN[n1]) Then
{
ExitLong();
}
If CrossDown(value,-1) and (CrossDown(D1stok,80) or (CrossDown(D1stok,D1Stod) and D1stok <= 80 and D1stok > N)) Then
{
Sell();
}
If Crossup(value,1) or crossup(c,TCHAN[n1]) Then
{
Sell();
}
예스스탁 예스스탁 답변
2012-08-01 13:49:32
안녕하세요
예스스탁입니다.
수정한 식입니다.
Input: shortPeriod(13), longPeriod(26), Period(6), maPeriod(13), ROCPeriod(9), stoPeriod1(10),
stoPeriod2(6), CCIPeriod(9),n(50),n1(1),n2(10);
input: P1(13),P2(26),P3(6);
var: value(0,data2),BW_SEVEN(0,data2);
var : Va1(0,data2),va2(0,data2),va3(0,data2),D1Stok(0,data1),D1stod(0,data1);
var : sumGap(0,data2), gap(0,data2), GO(0,data2), GH(0,data2), GL(0,data2), GC(0,data2);
VAR : TCHAN(0,data1), BCHAN(0,data1);
if data2(date!=date[1]) then {
gap = data2(Open-Close[1]);
sumGap = sumGap+gap;
}
GO = data2(O - sumGap);
GH = data2(H - sumGap);
GL = data2(L - sumGap);
GC = data2(C - sumGap);
//문장1 : MACD가 MACD 시그널선 보다 큼
if data2(ema(gC,shortPeriod)-ema(gC,longPeriod) >= ema(ema(gC,shortPeriod)-ema(gC,longPeriod),Period)) then
value = 1;
else
value = -1;
//문장2 : 종가가 이동평균선보다 큼
if data2(gC >= ma(gC, maPeriod)) then
value = value + 1;
else
value = value - 1;
//문장3 : Price ROC가 0선보다 큼
if data2((gC - gC[ROCPeriod]) / gC[ROCPeriod] * 100 >= 0) then
value = value + 1;
else
value = value - 1;
//문장4 : StochasticsK선이 50선 보다 큼
if data2(ema((gC-lowest(gL, stoPeriod1)) / (highest(gH, stoPeriod1) - lowest(gL, stoPeriod1)) * 100, stoPeriod2)>=50) then
value = value + 1;
else
value = value - 1;
Variables: Sum(0), CCIcount(0), MD(0), Avgvalue(0),CCIV(0);
If CCIPeriod > 0 Then Begin
Avgvalue = data2(Ma(GH + gL + GC, CCIPeriod));
MD = 0;
For CCIcount = 0 To CCIPeriod - 1 Begin
MD = MD + data2(Abs(GH[CCIcount] + gL[CCIcount] + GC[CCIcount] - Avgvalue));
End;
MD = data2(MD / CCIPeriod);
If MD == 0 Then
CCIv = 0;
Else
CCIv = data2((GH + gL + GC - Avgvalue) / (0.015 * MD));
End
Else
CCIv = 0;
//CCI가 0선 보다 큼
if CCIv > 0 then
value = value + 1;
else
value = value - 1;
//CO가 0선 보다 큼
if data2(ema(accum(((gC -gL)-(gH- gC))/ (gH-gL)*V), 3) - ema(accum(((gC -gL)-(gH- gC))/(gH-gL)*V), 10) >=0) then
value = value + 1;
else
value = value - 1;
input : AF(0.02),AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(h), LowValue(l), EP(0),Sarv(0);
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 >= AFMAX then AF_Value = AFMAX;
}
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 >= AFMAX then AF_Value = AFMAX;
}
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 >= AFMAX then AF_Value = AFMAX;
}
}
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 >= AFMAX then AF_Value = AFMAX;
}
}
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);
}
}
//문장7 : 종가가 파라볼릭보다 큼
if Sarv < gC then
value = value + 1;
else
value = value - 1;
BW_SEVEN = value;
# 매도/매수청산
va1 = data2(ema(BW_SEVEN,P1)- ema(BW_SEVEN,P2));
va2 = data2(ema(va1,P3));
va3 = data2(va1-va2);
d1stoK = data1(StochasticsK(4,3));
d1stoD = data1(StochasticsD(4,3,3));
TCHAN = HIGHEST(HIGH, n2);
BCHAN = LOWEST(LOW, n2);
If value > 1 and (crossup(D1stok,20) or (crossup(D1stok,D1Stod) and D1stok >= 20 and D1stok < N)) Then
{
Buy();
}
If CrossDown(value,-1) or Crossdown(c,BCHAN[n1]) Then
{
ExitLong();
}
If value < -1 and (CrossDown(D1stok,80) or (CrossDown(D1stok,D1Stod) and D1stok <= 80 and D1stok > N)) Then
{
Sell();
}
If Crossup(value,1) or crossup(c,TCHAN[n1]) Then
{
ExitShort();
}
즐거운 하루되세요
다음글
이전글