할상 감사합니다,
아래식의 자세한 주석 부탁드립니다.
Input:tick(20);
Var:j(0),k(0),n(0),trend(0),tickVal(0),oneTick(0),count(0),remain(0);
Array:OO[1000](0),HH[1000](0),LL[1000](0),CC[1000](0),val[4](0);
#==============================================================================#
# Range Bar Chart 계산
#==============================================================================#
If Index == 0 Then
{
tickVal = tick * PriceScale;
oneTick = PriceScale;
OO[0] = O;
HH[0] = O;
LL[0] = O;
CC[0] = O;
}
count = 0;
val[0] = O;
val[3] = C;
If O > C Then
{
val[1] = H;
val[2] = L;
If L < C Then trend = 1;
Else trend = -1;
}
Else If O < C Then
{
val[1] = L;
val[2] = H;
If H > C Then trend = -1;
Else trend = 1;
}
Else If C[1] > O Then
{
val[1] = L;
val[2] = H;
If H > C Then trend = -1;
Else trend = 1;
}
Else If C[1] < O Then
{
val[1] = H;
val[2] = L;
If L < C Then trend = 1;
Else trend = -1;
}
Else If trend == 1 Then
{
val[1] = H;
val[2] = L;
If L < C Then trend = 1;
Else trend = -1;
}
Else If trend == -1 Then
{
val[1] = L;
val[2] = H;
If H > C Then trend = -1;
Else trend = 1;
}
For k = 0 To 3
{
If HH[0] > 0 && HH[0] < val[k] Then
{
While val[k] - LL[0] > tickVal
{
HH[0] = LL[0] + tickVal;
CC[0] = HH[0];
For j = 998 DownTo 0
{
OO[j+1] = OO[j];
HH[j+1] = HH[j];
LL[j+1] = LL[j];
CC[j+1] = CC[j];
}
count = count + 1;
OO[0] = HH[1] + oneTick;
LL[0] = OO[0];
}
If val[k] - LL[0] <= tickVal Then
{
HH[0] = val[k];
CC[0] = val[k];
}
}
Else If LL[0] > val[k] Then
{
While HH[0] - val[k] > tickVal
{
LL[0] = HH[0] - tickVal;
CC[0] = LL[0];
For j = 998 DownTo 0
{
OO[j+1] = OO[j];
HH[j+1] = HH[j];
LL[j+1] = LL[j];
CC[j+1] = CC[j];
}
count = count + 1;
OO[0] = LL[1] - oneTick;
HH[0] = OO[0];
}
If HH[0] - val[k] <= tickVal Then
{
LL[0] = val[k];
CC[0] = val[k];
}
}
Else
{
CC[0] = val[k];
}
}
input : x(3);
var : ii(0), 양봉연속갯수(0),음봉연속갯수(0);
양봉연속갯수 = 0;
음봉연속갯수 = 0;
For ii = 0 to x-1
{
if CC[ii] > OO[ii] Then
양봉연속갯수 = 양봉연속갯수+1;
if CC[ii] < OO[ii] Then
음봉연속갯수 = 음봉연속갯수+1;
}
if 양봉연속갯수 == x Then
Buy();
if 음봉연속갯수 == x Then
sell();
답변 1
예스스탁
예스스탁 답변
2022-05-03 14:00:52
안녕하세요
예스스탁입니다.
Input:tick(20);
Var:j(0),k(0),n(0),trend(0),tickVal(0),oneTick(0),count(0),remain(0);
Array:OO[1000](0),HH[1000](0),LL[1000](0),CC[1000](0),val[4](0);
#차트 첫봉
If Index == 0 Then
{
#20틱값
tickVal = tick * PriceScale;
#1틱값
oneTick = PriceScale;
#초기 시고저종을 모두 첫봉의 시가로 지정
OO[0] = O;
HH[0] = O;
LL[0] = O;
CC[0] = O;
}
#매봉
#count는 0
count = 0;
#val[0]은 시가 저장
val[0] = O;
#val[3]은 종가 저장
val[3] = C;
#음봉이면
If O > C Then
{
#val[1]에는 고가저장
val[1] = H;
#val[2]에는 저가저장
val[2] = L;
#종가가 저가보다 크면 trend는 1 아니면 -1
If L < C Then trend = 1;
Else trend = -1;
}
Else If O < C Then #양봉이면
{
#val[1]에는 저가저장
val[1] = L;
#val[2]에는 고가저장
val[2] = H;
#종가가 고가보다 작으면 trend는 -1 아니면 1
If H > C Then trend = -1;
Else trend = 1;
}
Else If C[1] > O Then#도지봉이고 시가가 전봉종가보다 작으면
{
#val[1]에는 저가저장
val[1] = L;
#val[2]에는 고가저장
val[2] = H;
#종가가 고가보다 작으면 trend는 -1 아니면 1
If H > C Then trend = -1;
Else trend = 1;
}
Else If C[1] < O Then #도지봉이고 시가가 전봉종가보다 크면
{
#val[1]에는 고가저장
val[1] = H;
#val[2]에는 저가저장
val[2] = L;
#종가가 저가보다 크면 trend는 1 아니면 -1
If L < C Then trend = 1;
Else trend = -1;
}
Else If trend == 1 Then #도지봉이고 시가가 전봉종가가 같은데 trend는 1이면
{
#val[1]에는 고가저장
val[1] = H;
#val[2]에는 저가저장
val[2] = L;
#종가가 저가보다 크면 trend는 1 아니면 -1
If L < C Then trend = 1;
Else trend = -1;
}
Else If trend == -1 Then #도지봉이고 시가가 전봉종가가 같은데 trend는 1이면
{
#val[1]에는 저가저장
val[1] = L;
#val[2]에는 고가저장
val[2] = H;
#종가가 고가보다 작으면 trend는 -1 아니면 1
If H > C Then trend = -1;
Else trend = 1;
}
#val[0]~val[3]값을 지정하기 위한 for문
For k = 0 To 3
{
#val[0]~val[3]값 중에 HH[0]보다 큰값이 있으면
If HH[0] > 0 && HH[0] < val[k] Then
{
#val[k] - LL[0] 값이 20틱보다 크면 아래 내용 수행
While val[k] - LL[0] > tickVal
{
#LL[0]에 20틱 더해 HH[0]에 저장
HH[0] = LL[0] + tickVal;
#HH[0]을 CC[0]에 저장
CC[0] = HH[0];
#각 배열값을 다음방으로 이동
For j = 998 DownTo 0
{
OO[j+1] = OO[j];
HH[j+1] = HH[j];
LL[j+1] = LL[j];
CC[j+1] = CC[j];
}
#카운트1씩증가
count = count + 1;
#HH[1] + 1틱을 OO[0]에 저장
OO[0] = HH[1] + oneTick;
#LL[0]에 OO[0]을 저장
LL[0] = OO[0];
}
#val[k] - LL[0]이 20틱 이하이면
If val[k] - LL[0] <= tickVal Then
{
#HH[0]에 val[k]저장
HH[0] = val[k];
#CC[0]에 val[k]저장
CC[0] = val[k];
}
}
#저가보다 작은 val[k]가 있으면
Else If LL[0] > val[k] Then
{
#HH[0]-val[k] 값이 20틱보다 크면 아래 내용 수행
While HH[0] - val[k] > tickVal
{
#HH[0]에 20틱 빼서 LL[0]에 저장
LL[0] = HH[0] - tickVal;
#LL[0]을 CC[0]에 저장
CC[0] = LL[0];
#각 배열값을 다음방으로 이동
For j = 998 DownTo 0
{
OO[j+1] = OO[j];
HH[j+1] = HH[j];
LL[j+1] = LL[j];
CC[j+1] = CC[j];
}
#카운트1씩증가
count = count + 1;
#LL[1] - 1틱을 OO[0]에 저장
OO[0] = LL[1] - oneTick;
#HH[0]에 OO[0] 저장
HH[0] = OO[0];
}
#HH[0]-val[k] 값이 20틱보다 작으면
If HH[0] - val[k] <= tickVal Then
{
#val[k]를 LL[0]에 저장
LL[0] = val[k];
#val[k]를 CC[0]에 저장
CC[0] = val[k];
}
}
Else#아니면
{
#CC[0]에 val[k] 저장
CC[0] = val[k];
}
}
input : x(3);
var : ii(0), 양봉연속갯수(0),음봉연속갯수(0);
#최근 x개봉에서 양봉갯수 음봉갯수 카운트
양봉연속갯수 = 0;
음봉연속갯수 = 0;
For ii = 0 to x-1
{
if CC[ii] > OO[ii] Then
양봉연속갯수 = 양봉연속갯수+1;
if CC[ii] < OO[ii] Then
음봉연속갯수 = 음봉연속갯수+1;
}
#x개봉 양봉갯수가 x이면 매수
if 양봉연속갯수 == x Then
Buy();
#x개봉 음봉갯수가 x이면 매도
if 음봉연속갯수 == x Then
sell();
즐거운 하루되세요
> 예스요 님이 쓴 글입니다.
> 제목 : 문의 드립니다.~~~~
> 할상 감사합니다,
아래식의 자세한 주석 부탁드립니다.
Input:tick(20);
Var:j(0),k(0),n(0),trend(0),tickVal(0),oneTick(0),count(0),remain(0);
Array:OO[1000](0),HH[1000](0),LL[1000](0),CC[1000](0),val[4](0);
#==============================================================================#
# Range Bar Chart 계산
#==============================================================================#
If Index == 0 Then
{
tickVal = tick * PriceScale;
oneTick = PriceScale;
OO[0] = O;
HH[0] = O;
LL[0] = O;
CC[0] = O;
}
count = 0;
val[0] = O;
val[3] = C;
If O > C Then
{
val[1] = H;
val[2] = L;
If L < C Then trend = 1;
Else trend = -1;
}
Else If O < C Then
{
val[1] = L;
val[2] = H;
If H > C Then trend = -1;
Else trend = 1;
}
Else If C[1] > O Then
{
val[1] = L;
val[2] = H;
If H > C Then trend = -1;
Else trend = 1;
}
Else If C[1] < O Then
{
val[1] = H;
val[2] = L;
If L < C Then trend = 1;
Else trend = -1;
}
Else If trend == 1 Then
{
val[1] = H;
val[2] = L;
If L < C Then trend = 1;
Else trend = -1;
}
Else If trend == -1 Then
{
val[1] = L;
val[2] = H;
If H > C Then trend = -1;
Else trend = 1;
}
For k = 0 To 3
{
If HH[0] > 0 && HH[0] < val[k] Then
{
While val[k] - LL[0] > tickVal
{
HH[0] = LL[0] + tickVal;
CC[0] = HH[0];
For j = 998 DownTo 0
{
OO[j+1] = OO[j];
HH[j+1] = HH[j];
LL[j+1] = LL[j];
CC[j+1] = CC[j];
}
count = count + 1;
OO[0] = HH[1] + oneTick;
LL[0] = OO[0];
}
If val[k] - LL[0] <= tickVal Then
{
HH[0] = val[k];
CC[0] = val[k];
}
}
Else If LL[0] > val[k] Then
{
While HH[0] - val[k] > tickVal
{
LL[0] = HH[0] - tickVal;
CC[0] = LL[0];
For j = 998 DownTo 0
{
OO[j+1] = OO[j];
HH[j+1] = HH[j];
LL[j+1] = LL[j];
CC[j+1] = CC[j];
}
count = count + 1;
OO[0] = LL[1] - oneTick;
HH[0] = OO[0];
}
If HH[0] - val[k] <= tickVal Then
{
LL[0] = val[k];
CC[0] = val[k];
}
}
Else
{
CC[0] = val[k];
}
}
input : x(3);
var : ii(0), 양봉연속갯수(0),음봉연속갯수(0);
양봉연속갯수 = 0;
음봉연속갯수 = 0;
For ii = 0 to x-1
{
if CC[ii] > OO[ii] Then
양봉연속갯수 = 양봉연속갯수+1;
if CC[ii] < OO[ii] Then
음봉연속갯수 = 음봉연속갯수+1;
}
if 양봉연속갯수 == x Then
Buy();
if 음봉연속갯수 == x Then
sell();