시스템트레이딩 입문자입니다.
바로 이전 봉의 cci값을 추출해 수식에 사용하려고 합니다.
간단한 문제일 것으로 생각했는데 며칠째 해결을 못하고 있습니다.
가능하다면 스크립트를 부탁드리고 싶습니다.
감사합니다.
ps. 기술적 지표의 다이버젼스를 포착하기 위해 과거값을 추출하려는 것인데 혹시 다이버젼스를 포착하는 더 좋은 방법이 있다면 조언 부탁드리겠습니다. 감사합니다.
답변 1
예스스탁
예스스탁 답변
2020-02-20 11:00:00
안녕하세요
예스스탁입니다.
1
랭귀지는 차트에 적용이 되면 차트첫봉부터 차트 마지막봉 쪽으로 진행되면서
계산을 하며 모든 계산값은 현재시점에서 [ ]로 이전봉의 값을 가져와 사용할수 있습니다.
CCI(9)[1] --> 한봉전 CCI
CCI(9)[2] --> 두봉전 CCI
CCI를 변수처리해도 동일합니다.
var : value(0);
value = CCI(9);
value[1] --> 한봉전 CCI
value[2] --> 두봉전 CCI
2
랭귀지가 차트에 적용되면 과거에서 현재로 오면서 적용되므로
현재시점에서 과거값을 불러 계산하실 필요는 없습니다.
조건만족시점의 값을 변수에 저장하고 이후에 이용하게 작성하셔야 합니다.
아래 내용을 참고하시기 바랍니다.
Input : Period1(9),Period2(10);
var : CCIv(0),CCIs(0),T(0);
var : HV(0),HC(0),HV1(0),HC1(0),LV(0),LC(0),LV1(0),LC1(0);
CCIv = CCI(Period1);
CCIs = ema(CCIv,Period2);
#골드발생
if crossup(CCIV,CCIS) Then
{
T = 1;
#현재 골드구간 CCI의 최고값의 최초값
Hv = CCIv;
#현재 골드구간 최고가의 최초값
HC = H;
#새로운 골드가 발생하면 직전 CCI최고값과 가격 최고가는 HV1,HC1변수에 저장
HV1 = HV[1];
HC1 = HC[1];
#직전데드구간 CCI최저가는 전전 데드구간 CCI최저가보다 크고
#직전데드구간 최저가는 전전 데드구간 최저가보다 작으면
#매수
if LV > LV1 and LC < LC1 and LC1 > 0 Then
buy();
}
#데드
if CrossDown(CCIV,CCIS) Then
{
T = -1;
#현재 데드구간 CCI의 최저값의 최초값
Lv = CCIv;
#현재 데드구간 최저가의 최초값
LC = H;
#새로운 데드가 발생하면 직전구간 CCI최저값과 가격 최저가는 LV1,LC1변수에 저장
LV1 = LV[1];
LC1 = LC[1];
#직전골드구간 CCI최고가는 전전 데드구간 CCI최고가보다 작고
#직전골드구간 최고가는 전전 데드구간 최고가보다 크면
#매도
if HV < HV1 and HC > HC1 and HC1 > 0 Then
sell();
}
#현재 골드구간 CCI최고가와 그때의 종가 저장
if T == 1 then
{
if CCIV > HV Then
HV = CCIV;
if H > HC Then
HC = H;
}
#현재 데드구간 CCI최저가와 그때의 종가 저장
if T == -1 then
{
if CCIV < LV Then
LV = CCIV;
if C < LC Then
LC = C;
}
즐거운 하루되세요
> flextone 님이 쓴 글입니다.
> 제목 : 과거 시점의 기술적 지표값 추출방법
> 시스템트레이딩 입문자입니다.
바로 이전 봉의 cci값을 추출해 수식에 사용하려고 합니다.
간단한 문제일 것으로 생각했는데 며칠째 해결을 못하고 있습니다.
가능하다면 스크립트를 부탁드리고 싶습니다.
감사합니다.
ps. 기술적 지표의 다이버젼스를 포착하기 위해 과거값을 추출하려는 것인데 혹시 다이버젼스를 포착하는 더 좋은 방법이 있다면 조언 부탁드리겠습니다. 감사합니다.