2017년 7월 17일 월요일

정규장과 야간장을 각각 하나의 일봉으로 취급하여 지표를 만들고 싶습니다

Re : 정규장과 야간장을 각각 하나의 일봉으로 취급하여 지표를 만들고 싶습니다.

안녕하세요
예스스탁입니다.

1.
차트를 복합 분차트로 사용하시면 수식은 아래와 같습니다.

var : cnt(0);
Array : 정규장_시가[100](0), 정규장_고가[100](0), 정규장_저가[100](0), 정규장_종가[100](0);
Array : 야간장_시가[100](0), 야간장_고가[100](0), 야간장_저가[100](0), 야간장_종가[100](0);

If (date != date[1] and stime >= 090000) or
      (date == date[1] and stime >= 090000 and stime[1] < 090000) then{
      정규장_시가[0] = O;
      정규장_고가[0] = H;
      정규장_저가[0] = L;
      for cnt = 1 to 99{
          정규장_시가[cnt] = 정규장_시가[cnt-1][1];
          정규장_고가[cnt] = 정규장_고가[cnt-1][1];
          정규장_저가[cnt] = 정규장_저가[cnt-1][1];
          정규장_종가[cnt] = 정규장_종가[cnt-1][1];
      }
}

if stime >= 090000 and stime < 180000 then{
      If High > 정규장_고가[0] Then
            정규장_고가[0] = High;
      If Low  < 정규장_저가[0] Then
            정규장_저가[0] = Low;
      정규장_종가[0] = Close;
}

If (date != date[1] and stime >= 180000) or
      (date == date[1] and stime >= 180000 and stime[1] < 180000) then{
      야간장_시가[0] = O;
      야간장_고가[0] = H;
      야간장_저가[0] = L;
      for cnt = 1 to 99{
          야간장_시가[cnt] = 야간장_시가[cnt-1][1];
          야간장_고가[cnt] = 야간장_고가[cnt-1][1];
          야간장_저가[cnt] = 야간장_저가[cnt-1][1];
          야간장_종가[cnt] = 야간장_종가[cnt-1][1];
      }
}

if stime >= 180000 or stime < 90000 then{
      If High > 야간장_고가[0] Then
            야간장_고가[0] = High;
      If Low  < 야간장_저가[0] Then
            야간장_저가[0] = Low;
     
      야간장_종가[0] = Close;
}


# ---<<< 이동평균선 >>>---
input : P(5);
var : count(0),sum(0),mav(0);

if 정규장_종가[P-1] > 0 then{
      sum = 0;
      for count = 1 to P-1{
          sum = sum + 정규장_종가[count];
      }
      mav = sum/P;
      plot1(mav);
}





2
차트를 일봉으로 참조데이터를 이용하시면 따로 값저장등이 필요 없습니다.
데이터함수에 직접 데이터예약어나 함수로 지정해 주시면 됩니다.

#data3이 주간장 일봉
#data4가 야간장 일봉이고 각 이평을 계산한다면
아래와 같이 작성해 주시면 됩니다,

plot1(data3(ma(c,5)));
plot2(data4(ma(c,5)));


즐거운 하루되세요


> 다니엘87 님이 쓴 글입니다.

> 제목 : 정규장과 야간장을 각각 하나의 일봉으로 취급하여 지표를 만들고 싶습니다.

> 정규장 일봉과 야간장 일봉을 각각 하나의 일봉으로 보고 지표를 만들려고 합니다.
(간단하게는 이동평균선부터 가능하다면 스톡캐스틱이나 볼랜저 밴드같은)
다음과 같이 시도해 보았으나 실패하여 여쭤 봅니다.

원하는 것은 첫번째 차트와 같은 차트에서 지표를 적용해 보고 싶은 것입니다.
그림에서 채워진 봉은 주간장 일봉이고, 속이 빈 봉은 야간장 일봉입니다. 이것을 각각 하나의 일봉으로 보고 지표 및 시스템 식을 적용하자는 것이 아이디어 입니다.

두 가지 방법으로 해 봤습니다.

 첫번째는 복합 270분 봉을 만들고 이를 시간 단위로 쪼개 시고저종가를 만드는 방법이었으나 하다가 막혔습니다. 아래 식입니다.

=====================================================================================

Variables : 정규장_시가(0), 정규장_고가(0), 정규장_저가(0), 정규장_종가(0);
Variables : 야간장_시가(0), 야간장_고가(0), 야간장_저가(0), 야간장_종가(0);
Variables : 정규장_첫봉(1), 야간장_첫봉(1);

# ---<<< 정규장 >>>---

If 090000 <= sTime And sTime < 170000 Then Begin

  If 정규장_첫봉 == 1 Then Begin
    야간장_종가 = Close[1];
    정규장_시가 = Open;
    정규장_고가 = High;
    정규장_저가 = Low;
    정규장_종가 = Close;      # 현재가
    정규장_첫봉 = 0;
  End

  If High > 정규장_고가 Then 정규장_고가 = High;
  If Low  < 정규장_저가 Then 정규장_저가 = Low;

End;

# ---<<< 야간장 >>>---

If 180000 <= sTime And sTime < 240000 Then Begin

  If 야간장_첫봉 == 1 Then Begin
    정규장_종가 = Close[1];
    야간장_시가 = Open;
    야간장_고가 = High;
    야간장_저가 = Low;
    야간장_종가 = Close;      # 현재가
    야간장_첫봉 = 0;
  End

  If High > 야간장_고가 Then 야간장_고가 = High;
  If Low  < 야간장_저가 Then 야간장_저가 = Low;

End;

If 000000 <= sTime And sTime < 060000 Then Begin

  If High > 야간장_고가 Then 야간장_고가 = High;
  If Low  < 야간장_저가 Then 야간장_저가 = Low;

End;

# ---<<< 이동평균선 >>>---

================================================================================

두번째 방법은 데이타에 정규장 일봉과 야간장 일봉을 각각 놓고 이를 참조하는 것입니다.
식은 다음과 같습니다.

==================================================================================

Variables : 정규장_시가(0), 정규장_고가(0), 정규장_저가(0), 정규장_종가(0);
Variables : 야간장_시가(0), 야간장_고가(0), 야간장_저가(0), 야간장_종가(0);
Variables : 정규장_첫봉(1), 야간장_첫봉(1);
Variables : count(0);
Arrays : 복합장_시가[50](0), 복합장_고가[50](0), 복합장_저가[50](0), 복합장_종가[50](0);

# ---<<< 정규장 >>>---

    정규장_시가 = Data3(Open);
    정규장_고가 = Data3(High);
    정규장_저가 = Data3(Low);
    정규장_종가 = Data3(Close);      # 정규장 현재가

# ---<<< 야간장 >>>---

    야간장_시가 = Data4(Open);
    야간장_고가 = Data4(High);
    야간장_저가 = Data4(Low);
    야간장_종가 = Data4(Close);      # 야간장 현재가

# ---<<< 데이타 저장 >>>---

If 080000 <= sTime And sTime < 170000 Then Begin
    복합장_시가[0] = 정규장_시가;
    복합장_고가[0] = 정규장_고가;
    복합장_저가[0] = 정규장_저가;
    복합장_종가[0] = 정규장_종가;
End;

If 170000 <= sTime And sTime < 180000 Then Begin
  For Count = 1 to 50 Begin
    복합장_시가[count] = 복합장_시가[count-1][1];
    복합장_고가[count] = 복합장_고가[count-1][1];
    복합장_저가[count] = 복합장_저가[count-1][1];
    복합장_종가[count] = 복합장_종가[count-1][1];
  End;
End;

If (180000 <= sTime And sTime < 240000) Or (000000 <= sTime And sTime <060000) Then Begin
    복합장_시가[0] = 야간장_시가;
    복합장_고가[0] = 야간장_고가;
    복합장_저가[0] = 야간장_저가;
    복합장_종가[0] = 야간장_종가;
End;

If 170000 <= sTime And sTime < 180000 Then Begin
  For Count = 1 to 50 Begin
    복합장_시가[count] = 복합장_시가[count-1][1];
    복합장_고가[count] = 복합장_고가[count-1][1];
    복합장_저가[count] = 복합장_저가[count-1][1];
    복합장_종가[count] = 복합장_종가[count-1][1];
  End;
End;

# ---<<< 이동평균선 >>>---

Plot1(복합장_종가[0],"이평",RED,def,2);

===============================================================================

실행해 보았으나 종가선이 맞질 않습니다.

어떻게 해결할 수 있는 방법 조언을 부탁드립니다.
둘 중 가능하다면 첫번째 방법에서 해결하길 원합니다. (데이타 쓰지 않고...)

감사합니다.

댓글 없음:

댓글 쓰기