예스스탁
예스스탁 답변
2021-09-24 15:12:39
안녕하세요
예스스탁입니다.
스토케스틱이 과거봉수에 따라 현재값에 영향이 있습니다.
100틱차트에서 300틱의 스토케스틱을 계산하면 봉수문제로 실제 300틱에서 보시는 값과 다를수 있습니다.
차트는 최대한 1만개봉 조회하고 적용하시기 바랍니다.
input : Sto1(10),Sto2(5),Sto3(5);
input : N(3);//기본차트 N배
var : stok(0),D1(0),idx(0),TF(0);
var : cnt(0), Hv(0), LV(0), FK(0), SK(0), SD(0);
var : Ep1(0), EP2(0), JISU(0), DINDEX(0), PreSK(0), PreSD(0);
Array : HH[50](0),LL[50](0);
stok = StochasticsK(sto1,sto2);
if CrossUp(stok,80) Then
Buy();
Ep1 = 2/(sto2+1);
Ep2 = 2/(sto3+1);
if Bdate != Bdate[1] Then
{
D1 = sdate;
idx = 0;
}
Else
idx = idx +1;
if D1 > 0 then
{
TF = idx%N;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
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;
if HH[sto1-1] > 0 and LL[sto1-1] > 0 then
{
if bdate != bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
DINDEX = DINDEX+1;
PreSK = SK[1];
PreSD = SD[1];
}
Hv = HH[0];
LV = LL[0];
for cnt = 0 to sto1-1
{
if HH[cnt] > Hv then
Hv = HH[cnt];
if LL[cnt] < LV then
LV = LL[cnt];
}
FK = (C-LV)/(HV-LV)*100;
if DINDEX <= 1 then
{
SK = FK;
SD = SK;
}
else
{
SK = FK * EP1 + PreSK * (1-EP1);
SD = SK * EP2 + PreSD * (1-EP2);
}
if sk < 50 and preSK > 50 Then
ExitLong();
}
}
즐거운 하루되세요
> 요타 님이 쓴 글입니다.
> 제목 : 수식 좀 요청 드립니다.
> * 항상 많은 도움에 고맙습니다.
* 요청 사항
- 100틱 차트에서 스톡캐스터 crossup(StoK , 80) 이면 매수
- 300틱 차트에서 스톡케스터 crossdown(StoK , 50) 이면 청산 매매로직좀 부탁 드립니다.
## 아래 수식
Input : Period(10), Period1(3), Period2(3);
var1 = StochasticsK(Period,Period1);
var2 = StochasticsD(Period,Period1,Period2);
if var1 > var1[1] then
plot1(var1,"K",red);
else
plot1(var1,"K",blue);
if var2 > var2[1] then
plot2(var2,"D",red);
else
plot2(var2,"D",blue);
PlotBaseLine1(20, "기준선1",black);
PlotBaseLine2(80, "기준선2",black);
* 좋은 주말 되십시요.