커뮤니티
문의 드려봅니다..
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 이하 일때는 매도시그널만 가능하게 식을 부탁드립니다.
다음글
이전글