예스스탁
예스스탁 답변
2024-11-21 10:16:45
안녕하세요
예스스탁입니다.
1
if ARRV[P1-1]>0 Then
{
SUM1 = 0;
For cnt = 0 TO P1-1
{
SUM1 = SUM1 + ARRV[CNT];
}
ARRMA=SUM1/P1;
PLOT22(sum1);
}
위 for문에 보시면 마지막에 ;이 찍혀있습니다.
예스랭귀지에서 ;는 문장의 마침으로 for문뒤에 ;가 있으면
{ }안의 내용과 분리가 되고
for문에 의해 cnt에 저장된 값이 최종 2값이므로 sum1에 ARRV[2]만 저장됩니다.
;를 제거하시면 됩니다.
2
작성하신 내용이면 ARR은 최종 HARR값의 배열이 됩니다.
HARR은 최근 if H>L*1.11 Then 만족봉의 5개의 고가 중 최고가 이어야 하는데
FoR cnt = 99 downto 1
{
ARR[CNT] = ARR[CNT-1];
}
ARR[0]=HARR[0];
위 내용에 의해 ARR은 조건만족시 마다 HARR을 저장하는 배열이 되고
새로운 조건이 만족하면 해당봉의 고가와 과거 4개의 HARR 중 큰값이 HARR값이 됩니다.
즉 위 내용에 의해 ARR에 초기에 저장하는 내용이 의미가 없게 됩니다.
메세지로그로 출력해서 각 조건만족시 ARR값 변경 확인하시기 바랍니다.
3
디버깅창에 한줄로 표시하시려면 나열해서 작성하셔야 합니다.
봉당 50회 출력한다면 for문 이용하시면 됩니다.
for cnt = 0 to 49
{
MessageLoG("%.f,%.1f",cnt, ARR[cnt]);
}
즐거운 하루되세요
> yamu 님이 쓴 글입니다.
> 제목 : 수식 검토 부탁드리겠습니다
> 질문 몇가지 부탁드리겠습니다
질문1. ARRV 배열의 이동평균을 ARRMA 로 작성했는데요,
값이 제대로 (작게 나오네요) 안나오네요 어디서 잘못 작성한건지 검토 좀 부탁 드리겠습니다
작성한 수식대로라면 ARRV 배열에 포함된 값들로만 3이동평균 한게 맞지 않나요??
VAR : P1(0),SUM1(0),ARRMA(0);
var : m1(0),m2(0),T(0),HH(0),HH1(0),LL(0),CNT(0),HARR(0),hvi(0);
VAR:TLUP(0);
ARRAY : ARR[100](0),VII[100](0),ARRV[100](0);
if H>L*1.11 Then
{
TLUP=TL_NEW(sDatE,sTimE,H,sDatE,sTimE,99999);
TL_SetColoR(TLUP,CyaN);
TL_SetSizE(TLUP,1);
for cnt = 99 downto 1
{
ARR[CNT] = ARR[CNT-1];
VII[CNT] = VII[CNT-1];
ARRV[CNT] = ARRV[CNT-1];
}
ARR[0] = H;
VII[0] = DayOpen*1.10;
if ARR[4] > 0 Then
{
HARR = 0;
HVI = 0;
For cnt = 0 to 4
{
if harr == 0 or (harr > 0 and ARR[cnt] > harr) Then
{
HARR = ARR[cnt];
HVI = VII[cnt];
}
}
if HVI > 0 Then
{
ARRV[0] = HVI;
}
}
# Plot11(ARR[0]);
# Plot12(HARR[0]);
Plot13(ARRV[0]);
P1=3;
IF ARRV[P1-1]>0 TheN
{
SUM1=0;
FoR CNT= 0 TO P1-1;
{
SUM1= SUM1+ARRV[CNT];
}
ARRMA=SUM1/P1;
PLOT22(ARRMA);
}
}
질문2.
아래 수식에서 배열 ARR의 5일간 최고값을 HARR에 대입하고 그 값들로 "ARRH 라는 배열"로 만들고 난뒤에,
ARR 배열에 ARRH값을 삽입하고자 (0번에 ARRH 값이 오고 그다음에 H값이 오도록) 아래와 같이 작성했는데 잘 안나오네요 어디서 잘못됐는지 한번 봐주셨으면 합니다
ARR[1]을 출력했을때 HIGH 값이 잘 나오는데 ARR[0]으로 하면 5일간 최고 고가 값이 안나오네요..
VAR : P1(0),SUM1(0),ARRMA(0);
var : m1(0),m2(0),T(0),HH(0),HH1(0),LL(0),CNT(0),HARR(0),hvi(0);
VAR:TLUP(0);
ARRAY : ARR[100](0),VII[100](0),ARRV[100](0),ARRH [100](0);
if H>L*1.11 Then
{
TLUP=TL_NEW(sDatE,sTimE,H,sDatE,sTimE,99999);
TL_SetColoR(TLUP,CyaN);
TL_SetSizE(TLUP,1);
for cnt = 99 downto 1
{
ARR[CNT] = ARR[CNT-1];
VII[CNT] = VII[CNT-1];
ARRV[CNT] = ARRV[CNT-1];
ARRH[CNT]= ARRH[CNT-1];
}
ARR[0] = H;
VII[0] = DayOpen*1.10;
if ARR[4] > 0 Then
{
HARR = 0;
HVI = 0;
For cnt = 0 to 4
{
if HARR == 0 or (HARR > 0 and ARR[cnt] > HARR) Then
{
HARR = ARR[cnt];
HVI = VII[cnt];
}
}
if HVI > 0 AND HARR>0 Then
{
ARRV[0] = HVI;
ARRH[0]=HARR;
}
}
FoR cnt = 99 downto 1
{
ARR[CNT] = ARR[CNT-1];
}
ARR[0]=HARR[0];
Plot12(HARR);
# Plot11(ARR[0]);
}
질문3.
arr 배열의 값들을 보고자 디버그 수식을 작성했는데요
혹시 각 봉에서의 모든 배열 값들을 외부로 추출해서 쓰려면 (PRINT)
MessageLoG("%.1f,%.1f,%.1f",ARR[0],ARR[1],ARR[2]);
예를들어 50번 까지 보려면 이런식으로 모두 나열해서 쓰는 방법 밖에 없나요??
범위 지정 할 수 있는 수식이 있는지 궁금합니다