예스스탁
예스스탁 답변
2023-05-26 13:20:21
안녕하세요
예스스탁입니다.
Input : Period(20), Dv(2);
Input : RSIPeriod(9);
var : BBdown(0),BBUp(0),BandB(0),RSIV(0);
var : cnt(0);
var : dsum(0),mav(0),SumSqrt(0),Stdv(0);
var : dBBup(0),dBBdn(0),dBandB(0);
var : dsum1(0),mav1(0),SumSqrt1(0),Stdv1(0);
var : dBBup1(0),dBBdn1(0),dBandB1(0);
var : SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),sum(0),drsiv(0),drsiv1(0);
Array : C1[100](0);
If DayClose(Period) > 0 Then
{
#일봉 이동평균 계산
dsum = 0;
dsum1 = 0;
for cnt = 0 to Period-1
{
dsum = dsum + DayClose(cnt);
dsum1 = dsum1 + DayClose(cnt+1);
}
mav = dsum/Period;
mav1 = dsum1/Period;
#표준편차 계산
SumSqrt = 0;
SumSqrt1 = 0;
For cnt = 0 To Period - 1
{
SumSqrt = SumSqrt + (DayClose(cnt) - mav)^2;
SumSqrt = SumSqrt + (DayClose(cnt+1) - mav1)^2;
}
Stdv = SquareRoot(SumSqrt / Period);
Stdv1 = SquareRoot(SumSqrt1 / Period);
# 일봉 볼린져밴드 계산
dBBup = mav + (Dv * Stdv);
dBBdn = mav - (Dv * Stdv);
dBandB = ((C-dBBdn)/(dBBup-dBBdn))*100;
dBBup1 = mav1 + (Dv * Stdv1);
dBBdn1 = mav1 - (Dv * Stdv1);
dBandB1 = ((C-dBBdn1)/(dBBup1-dBBdn1))*100;
}
if Bdate != Bdate[1] Then
{
for cnt = 99 DownTo 1
{
C1[cnt] = C1[cnt-1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
drsiv1 = drsiv[1];
}
C1[0] = C;
If idx == RSIPeriod+2 Then
{
UpSum = 0;
DownSum = 0;
For Counter = 0 To RSIPeriod - 1
{
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
}
If idx > RSIPeriod+2 Then
{
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (preDownAvg * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
}
If UpAvg + DownAvg <> 0 Then
dRSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
dRSIv = 0;
BBDown = BollBandDown(Period,Dv);
BBUp = BollBandUp(Period,Dv);
BandB = ((C-BBDown)/(BBUp-BBDown))*100;
RSIV = RSI(RSIPeriod);
if dBandB > 50 and dBandB > dRSIV and dBandB1 <= dRSIv1 and
BandB > 50 and crossup(BandB,rsiv) Then
Buy();
if dBandB < 50 and dBandB < dRSIV and dBandB1 >= dRSIv1 and
BandB < 50 and crossdown(BandB,rsiv) Then
Sell();
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
아래 글번호 82218번 재질문입니다.
답변 주신 스크립트를
5분봉과 일봉에 적용해서 공통의 신호가 발생될 때만 5분봉으로 적용하는 새로운 스크립트로 부탁드립니다.
가령, 아래의 스크립트를 일봉과 5분봉에 모두 적용했을 경우 일봉상 매수신호일 경우에만 5분봉으로 매수신호를 생성하고 싶습니다. 매도의 경우에도 마찬가지입니다.
Input : Period(20), D(2);
Input : RSIPeriod(9);
var : BBdown(0),BBUp(0),BandB(0),RSIV(0);
BBDown = BollBandDown(Period,D);
BBUp = BollBandUp(Period,D);
BandB = ((C-BBDown)/(BBUp-BBDown))*100;
RSIV = RSI(RSIPeriod);
if BandB > 50 and crossup(BandB,rsiv) Then
Buy();
if BandB < 50 and crossdown(BandB,rsiv) Then
Sell();