예스스탁
예스스탁 답변
2020-06-18 16:02:06
안녕하세요
예스스탁입니다.
수식은 차트에 적용하면
차트의 첫봉부터 마지막봉으로 오면서 계산합니다.
그러므로 for문 사용은 불필요합니다.
if문으로만 구성하시면 됩니다.
var : stateno(0),
uptrend(0),realrally(0),fakerally(0),fakereact(0),realreact(0),dntrend(0),
UpTrendPP(0),NatRallyPP(0),NatReactPP(0),DnTrendPP(0),RealRallyPP(0),RealReactPP(0);
if index == 0 then //차트 첫봉이면
{
# StateNo는 1 저장, 나머지변수는 종가를 모두 저장
StateNo = 1;
UpTrend = C;
RealRally = C;
FakeRally = C;
FakeReact = C;
RealReact = c;
DnTrend = C;
UpTrendPP = C;
RealRallyPP = C;
RealReactPP = C;
DnTrendPP = C;
}
else //두번째 봉부터
{
if StateNo == 1 then #최근 StateNo이 1일때
{
if C >= C[1] then #현재봉 종가가 전봉종가 이상이고
{
if C > UpTrend then #현재봉 종가가 UpTrend에 저장된 값보다 크면
{
StateNo = 1; #StateNo은 1
UpTrend = C; #UpTrend에 종가 저장
}
}
}
if StateNo == 2 then #최근 StateNo이 2일때
{
}
if StateNo == 3 then #최근 StateNo이 3일때
{
}
if StateNo == 4 then #최근 StateNo이 4일때
{
}
if StateNo == 5 then #최근 StateNo이 5일때
{
}
if StateNo == 6 then #최근 StateNo이 6일때
{
}
}
즐거운 하루되세요
> 터틀3세 님이 쓴 글입니다.
> 제목 : 어제의 가격들과 오늘의 종가 비교하는 for, if문
> 주가의 움직임 영역을 아래처럼 6가지로 나누고,
1/2번, 2/3번, 4/5번, 5/6번 영역 사이의 경계를 Pivot Point라고 해서 뒤에 PP를 붙였습니다.
State No 1.상승추세(Uptrend)
---------------------------- UptrendPP (종가가 이 위로 가면 그 종가는 상승추세에 기입)
State No 2.진짜반등(RealRally)
---------------------------- RealRallyPP (종가가 이 위로 가면 그 종가는 진짜반등에 기입)
State No 3.가짜반등(FakeRally)
---------------------------- (종가가 3번/4번 영역에 있으면 그 종가는 가짜반등/가짜조정에 기입)
State No 4.가짜조정(FakeReact)
---------------------------- RealReactPP (종가가 이 아래로 가면 그 종가를 진짜조정에 기입)
State No 5.진짜조정(RealReact)
---------------------------- DntrendPP (종가가 이 아래로 가면 그 종가를 하락추세에 기입)
State No 6.하락추세(Dntrend)
제가 만들고자 하는 수식은 설정된 기간동안 매일 종가를 추적하여,
아래의 내용을 비교해서 오늘의 종가가 6개 영역중 어디에 해당되는지 판단하는 것입니다.
- 어제의 종가가 어느 영역에 머물렀는가
- 오늘의 종가 vs 어제의 종가 크기 비교
- 오늘의 종가 vs 어제의 Pivot Point들과 비교
-
어제의 종가가 1번 영역(상승추세) 일때만 좀 봐주신다면 나머지 2/3/4/5/6번 영역일떄의 if문은 제가 작성해보도록 하겠습니다.
제가 우선 다른 프로그램에서 쓰는 수식 변형해서 만들어봤는데 F4 눌러서 검증은 마쳤습니다만,
오늘의 종가가 어느 영역에 있는지 결과값은 나오지 않는 상황입니다.
----------------------------------------------------------------------------------
var : i(0),stateno(0),
uptrend(0),realrally(0),fakerally(0),fakereact(0),realreact(0),dntrend(0),
UpTrendPP(0),NatRallyPP(0),NatReactPP(0),DnTrendPP(0);
For i = index-1 downto 0 // 어제 종가가 어느 영역에 머물렀는지 기준으로 반복해야하므로 for문 사용
{
if i==index-1 then // 시작날짜의 경우 전날에 대한 데이터가 없으므로 1번영역 라고 가정하고 모든 변수에 우선 첫날 종가입력
{
StateNo[i]==1;
UpTrend[i]== C[i];
RealRally[i]== C[i];
FakeRally[i]== C[i];
FakeReact[i]== C[i];
RealReact[i]== c[i];
DnTrend[i]==C[i];
UpTrendPP[i]==C[i];
RealRallyPP[i]==C[i];
RealReactPP[i]==C[i];
DnTrendPP[i]==C[i];
}
else // 시작날짜가 아닌경우 전날의 종가가 어느 영역이었는지 기준으로 if문 반복
{
if(StateNo[i+1]==1) then // 전날의 종가가 1번 영역이었다면 이걸 실행. 2/3/4/5/6번 영역이었을때의 조건문은 각각 있음. 여기선 예시로 1번 영역일때만 사용.
{
if(C[i]>=C[i+1]) then // 오늘의 종가가 어제 종가보다 크거나 같은가?
{
if(C[i]>UpTrend[i+1]) then // 그렇다면 오늘의 종가가 어제의 상승추세에 입력된 가격보다 큰가?
{
StateNo[i]==1; // 그렇다면 오늘의 종가는 1번 영역에 있다고 판단
UpTrend[i]==C[i]; // 오늘의 종가를 상승추세 영역에 기입
}
그 다음날은 또 어제의 종가가 어느 영역에 있는지 판단하는것부터 시작 반복...
감사합니다.
한가지 더 궁금한게 있는데 전날의 종가와 오늘의 종가를 비교할 때
(오늘의 종가) >= (전날의 종가) * (ATR 10일 중 높은거 3개, 낮은거 3개 제외한 중간 4개값 나누기 4한거)
어맇게 수정하고싶은데 배열함수도 써야할거같아서 좀 어렵습니다.
도움 요청드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 어제의 가격들과 오늘의 종가 비교하는 for, if문
>
안녕하세요
예스스탁입니다.
수식은 차트에 적용하면
차트의 첫봉부터 마지막봉으로 오면서 계산합니다.
그러므로 for문 사용은 불필요합니다.
if문으로만 구성하시면 됩니다.
var : stateno(0),
uptrend(0),realrally(0),fakerally(0),fakereact(0),realreact(0),dntrend(0),
UpTrendPP(0),NatRallyPP(0),NatReactPP(0),DnTrendPP(0),RealRallyPP(0),RealReactPP(0);
if index == 0 then //차트 첫봉이면
{
# StateNo는 1 저장, 나머지변수는 종가를 모두 저장
StateNo = 1;
UpTrend = C;
RealRally = C;
FakeRally = C;
FakeReact = C;
RealReact = c;
DnTrend = C;
UpTrendPP = C;
RealRallyPP = C;
RealReactPP = C;
DnTrendPP = C;
}
else //두번째 봉부터
{
if StateNo == 1 then #최근 StateNo이 1일때
{
if C >= C[1] then #현재봉 종가가 전봉종가 이상이고
{
if C > UpTrend then #현재봉 종가가 UpTrend에 저장된 값보다 크면
{
StateNo = 1; #StateNo은 1
UpTrend = C; #UpTrend에 종가 저장
}
}
}
if StateNo == 2 then #최근 StateNo이 2일때
{
}
if StateNo == 3 then #최근 StateNo이 3일때
{
}
if StateNo == 4 then #최근 StateNo이 4일때
{
}
if StateNo == 5 then #최근 StateNo이 5일때
{
}
if StateNo == 6 then #최근 StateNo이 6일때
{
}
}
즐거운 하루되세요
> 터틀3세 님이 쓴 글입니다.
> 제목 : 어제의 가격들과 오늘의 종가 비교하는 for, if문
> 주가의 움직임 영역을 아래처럼 6가지로 나누고,
1/2번, 2/3번, 4/5번, 5/6번 영역 사이의 경계를 Pivot Point라고 해서 뒤에 PP를 붙였습니다.
State No 1.상승추세(Uptrend)
---------------------------- UptrendPP (종가가 이 위로 가면 그 종가는 상승추세에 기입)
State No 2.진짜반등(RealRally)
---------------------------- RealRallyPP (종가가 이 위로 가면 그 종가는 진짜반등에 기입)
State No 3.가짜반등(FakeRally)
---------------------------- (종가가 3번/4번 영역에 있으면 그 종가는 가짜반등/가짜조정에 기입)
State No 4.가짜조정(FakeReact)
---------------------------- RealReactPP (종가가 이 아래로 가면 그 종가를 진짜조정에 기입)
State No 5.진짜조정(RealReact)
---------------------------- DntrendPP (종가가 이 아래로 가면 그 종가를 하락추세에 기입)
State No 6.하락추세(Dntrend)
제가 만들고자 하는 수식은 설정된 기간동안 매일 종가를 추적하여,
아래의 내용을 비교해서 오늘의 종가가 6개 영역중 어디에 해당되는지 판단하는 것입니다.
- 어제의 종가가 어느 영역에 머물렀는가
- 오늘의 종가 vs 어제의 종가 크기 비교
- 오늘의 종가 vs 어제의 Pivot Point들과 비교
-
어제의 종가가 1번 영역(상승추세) 일때만 좀 봐주신다면 나머지 2/3/4/5/6번 영역일떄의 if문은 제가 작성해보도록 하겠습니다.
제가 우선 다른 프로그램에서 쓰는 수식 변형해서 만들어봤는데 F4 눌러서 검증은 마쳤습니다만,
오늘의 종가가 어느 영역에 있는지 결과값은 나오지 않는 상황입니다.
----------------------------------------------------------------------------------
var : i(0),stateno(0),
uptrend(0),realrally(0),fakerally(0),fakereact(0),realreact(0),dntrend(0),
UpTrendPP(0),NatRallyPP(0),NatReactPP(0),DnTrendPP(0);
For i = index-1 downto 0 // 어제 종가가 어느 영역에 머물렀는지 기준으로 반복해야하므로 for문 사용
{
if i==index-1 then // 시작날짜의 경우 전날에 대한 데이터가 없으므로 1번영역 라고 가정하고 모든 변수에 우선 첫날 종가입력
{
StateNo[i]==1;
UpTrend[i]== C[i];
RealRally[i]== C[i];
FakeRally[i]== C[i];
FakeReact[i]== C[i];
RealReact[i]== c[i];
DnTrend[i]==C[i];
UpTrendPP[i]==C[i];
RealRallyPP[i]==C[i];
RealReactPP[i]==C[i];
DnTrendPP[i]==C[i];
}
else // 시작날짜가 아닌경우 전날의 종가가 어느 영역이었는지 기준으로 if문 반복
{
if(StateNo[i+1]==1) then // 전날의 종가가 1번 영역이었다면 이걸 실행. 2/3/4/5/6번 영역이었을때의 조건문은 각각 있음. 여기선 예시로 1번 영역일때만 사용.
{
if(C[i]>=C[i+1]) then // 오늘의 종가가 어제 종가보다 크거나 같은가?
{
if(C[i]>UpTrend[i+1]) then // 그렇다면 오늘의 종가가 어제의 상승추세에 입력된 가격보다 큰가?
{
StateNo[i]==1; // 그렇다면 오늘의 종가는 1번 영역에 있다고 판단
UpTrend[i]==C[i]; // 오늘의 종가를 상승추세 영역에 기입
}
그 다음날은 또 어제의 종가가 어느 영역에 있는지 판단하는것부터 시작 반복...