커뮤니티
아래 일목균형 재질문 입니다.
2010-11-07 18:08:38
753
글번호 33382
아래 일단 참고식 주신거 조금 수정해봤습니다.
검증해 보니 기준선 전환선은 거의 정상적으로 나오는데 구름대가 틀리게 나오네요.
구름대를 26봉 앞에 그리기 때문에 발생하는 문제 인듯 한데 일단 여기서 제가 제일 궁금한점은 26봉 이전 즉 현재 봉 아래 있는 구름대 선행스펜 1, 2를 구하고자 하는게
핵심입니다.
그런데 30분봉과 비교해 보면 값이 틀려서 재질문 드립니다. 혹시 15:00~15:15 분봉으로 인한 오차가 있는 듯 해서 제가 나름 추가해 봤습니다.
답변 부탁드립니다. 간단한 거라고 생각했는데 이거 꽤 머리 아프네요.
Inputs : ChartTime(1), ArrTime(30) ;
Var : Cnt(0),count(0),HH9(0),LL9(0),HH26(0),LL26(0),HH52(0),LL52(0);
Array : ArrHigh[52](0), ArrLow[52](0), ArrPreSpan1[52](0), ArrPreSpan2[52](0) ;
If (dayindex == 0 Or TimeToMinutes(stime)%ArrTime == 0 Or STime == 151500 )
Then
{
If Stime >= 090000 And Stime <= 150000
Then
{
ArrHigh[0] = Highest(High, ArrTime/ChartTime);
ArrLow[0] = Lowest(Low, ArrTime/ChartTime);
}
If Stime == 151500
Then
{
ArrHigh[0] = Highest(High, (ArrTime/ChartTime)/2);
ArrLow[0] = Lowest(Low, (ArrTime/ChartTime)/2);
}
For Cnt = 1 To 51
{
ArrHigh[Cnt] = ArrHigh[Cnt-1][1] ;
ArrLow[Cnt] = ArrLow[Cnt-1][1] ;
}
}
If (TimeToMinutes(stime)%ArrTime == 0 And Stime > 090000 And Stime <= 150000)
Then
{
ArrHigh[0] = Highest(High, ArrTime/ChartTime);
}
If Stime == 151500
Then
{
ArrHigh[0] = Highest(High, (ArrTime/ChartTime)/2);
}
If (TimeToMinutes(stime)%ArrTime == 0 And Stime > 090000 And Stime <= 150000)
Then
{
ArrLow[0] = Lowest(Low, ArrTime/ChartTime);
}
If (Stime == 151500)
Then
{
ArrLow[0] = Lowest(Low, (ArrTime/ChartTime)/2);
}
HH9 = ArrHigh[0];
LL9 = ArrLow[0];
HH26 = ArrHigh[0];
LL26 = ArrLow[0];
HH52 = ArrHigh[0];
LL52 = ArrLow[0];
for Count = 0 to 51{
if count < 9 Then{
if ArrHigh[Count] > HH9 Then
HH9 = ArrHigh[Count];
if ArrLow[Count] < LL9 Then
LL9 = ArrLow[Count];
}
if count < 26 Then{
if ArrHigh[Count] > HH26 Then
HH26 = ArrHigh[Count];
if ArrLow[Count] < LL26 Then
LL26 = ArrLow[Count];
}
if count < 52 Then{
if ArrHigh[Count] > HH52 Then
HH52 = ArrHigh[Count];
if ArrLow[Count] < LL52 Then
LL52 = ArrLow[Count];
}
}
Value1 = (HH9+ LL9) / 2 ; //기준선
Value2 = (HH26 + LL26) / 2 ; //전환선
Value3 = (value1 + value2) / 2; //선행스팬1
Value4 = (HH52 + LL52 ) / 2; //선행스팬2
ArrPreSpan1[0] = Value3 ;
ArrPreSpan2[0] = Value4 ;
For Count = 1 To 51
{
ArrPreSpan1[Count] = ArrPreSpan1[Count-1][1] ;
ArrPreSpan2[Count] = ArrPreSpan2[Count-1][1] ;
}
plot1(Value1);
plot2(Value2);
plot3(Value3);
plot4(Value4);
//Debug Start
If (dayindex == 0 Or TimeToMinutes(stime)%ArrTime == 0)
Or (STime == 151500 )
Then
{
MessageLog("ArrPreSpan1 : %.2f, ArrPreSpan2 : %.2f", ArrPreSpan1[26-1], ArrPreSpan2[26-1] ) ;
//Debug End
}
답변 1
예스스탁 예스스탁 답변
2010-11-08 14:55:22
안녕하세요
예스스탁입니다.
Inputs : ChartTime(1), ArrTime(30) ;
If (dayindex == 0 Or TimeToMinutes(stime)%ArrTime == 0 Or STime == 151500 ) Then
var1 = 1;
Else
var1 = 0;
plot1(var1);
위식을 지표로 보시면
1값이 떨어지는 시점은 30분봉이 시작하는 시점입니다.
이때의 Highest(High, (ArrTime/ChartTime)/2);
값을 구하면 30분봉이 시작하는 시점의 고가가 포함되어 30봉동안의 최고가입니다.
가령 현재 시간이 10시 30분이면 10시 1분봉~10시 30분봉의 최고가입니다.
예스의 차트는 시작시간 기준으로 30분봉의 경우 10시 00분~1029분봉 까지가 하나의 30분봉입니다.
또한 Highest(High, (ArrTime/ChartTime)/2);같은 식은
무조건 30개의 봉의 최고가 이므로 거래가 없는 구간이 있어 30분 동안 봉이 30개 미만이면
이전시간의 봉의 값도 포합이 되므로 Highest(High, (ArrTime/ChartTime)/2);와 같이
작성하시면 해당 부분 위험이 있습니다.
이전에 올려드린 부분과 같이 작성하셔야 정확한 값을 구하실 수 있습니다.
선행스팬1과2는 현재지점에서 과거 26개봉전 값이므로
Value3,Value4값을 이전 값을 추가로 계산하셔야 합니다.
Inputs : ChartTime(1), ArrTime(30) ;
Var : Cnt(0),count(0),HH9(0),LL9(0),HH26(0),LL26(0),HH52(0),LL52(0);
Array : ArrHigh[52](0), ArrLow[52](0),val3[52](0),val4[52](0);
If (dayindex == 0 or TimeToMinutes(stime)%ArrTime == 0)Then
{
ArrHigh[0] = H;
ArrLow[0] = L;
For Cnt = 1 To 51
{
ArrHigh[Cnt] = ArrHigh[Cnt-1][1] ;
ArrLow[Cnt] = ArrLow[Cnt-1][1] ;
val3[cnt] = val3[cnt-1][1];
val4[cnt] = val4[cnt-1][1];
}
}
if H > ArrHigh[0] Then
ArrHigh[0] = H;
if L < ArrLow[0] Then
ArrLow[0] = L;
HH9 = ArrHigh[0];
LL9 = ArrLow[0];
HH26 = ArrHigh[0];
LL26 = ArrLow[0];
HH52 = ArrHigh[0];
LL52 = ArrLow[0];
for Count = 0 to 51{
if count < 9 Then{
if ArrHigh[Count] > HH9 Then
HH9 = ArrHigh[Count];
if ArrLow[Count] < LL9 Then
LL9 = ArrLow[Count];
}
if count < 26 Then{
if ArrHigh[Count] > HH26 Then
HH26 = ArrHigh[Count];
if ArrLow[Count] < LL26 Then
LL26 = ArrLow[Count];
}
if count < 52 Then{
if ArrHigh[Count] > HH52 Then
HH52 = ArrHigh[Count];
if ArrLow[Count] < LL52 Then
LL52 = ArrLow[Count];
}
}
Value1 = (HH9+ LL9) / 2 ; //기준선
Value2 = (HH26 + LL26) / 2 ; //전환선
Value3 = (value1 + value2) / 2; //선행스팬1
Value4 = (HH52 + LL52 ) / 2;//선행스팬2
If (dayindex == 0 or TimeToMinutes(stime)%ArrTime == 0)Then
{
val3[0] = value3;
val4[0] = value4;
For Cnt = 1 To 51
{
val3[cnt] = val3[cnt-1][1];
val4[cnt] = val4[cnt-1][1];
}
}
plot1(value1);
plot2(value2);
plot3(val3[26]);#30분봉으로 26개봉 전입니다.사용하시는 일목의 수평이동값과 동일한 값을 입력해 주셔야 합니다.
plot4(val4[26]);
즐거운 하루되세요
> 하얀깃털 님이 쓴 글입니다.
> 제목 : 아래 일목균형 재질문 입니다.
> 아래 일단 참고식 주신거 조금 수정해봤습니다.
검증해 보니 기준선 전환선은 거의 정상적으로 나오는데 구름대가 틀리게 나오네요.
구름대를 26봉 앞에 그리기 때문에 발생하는 문제 인듯 한데 일단 여기서 제가 제일 궁금한점은 26봉 이전 즉 현재 봉 아래 있는 구름대 선행스펜 1, 2를 구하고자 하는게
핵심입니다.
그런데 30분봉과 비교해 보면 값이 틀려서 재질문 드립니다. 혹시 15:00~15:15 분봉으로 인한 오차가 있는 듯 해서 제가 나름 추가해 봤습니다.
답변 부탁드립니다. 간단한 거라고 생각했는데 이거 꽤 머리 아프네요.
Inputs : ChartTime(1), ArrTime(30) ;
Var : Cnt(0),count(0),HH9(0),LL9(0),HH26(0),LL26(0),HH52(0),LL52(0);
Array : ArrHigh[52](0), ArrLow[52](0), ArrPreSpan1[52](0), ArrPreSpan2[52](0) ;
If (dayindex == 0 Or TimeToMinutes(stime)%ArrTime == 0 Or STime == 151500 )
Then
{
If Stime >= 090000 And Stime <= 150000
Then
{
ArrHigh[0] = Highest(High, ArrTime/ChartTime);
ArrLow[0] = Lowest(Low, ArrTime/ChartTime);
}
If Stime == 151500
Then
{
ArrHigh[0] = Highest(High, (ArrTime/ChartTime)/2);
ArrLow[0] = Lowest(Low, (ArrTime/ChartTime)/2);
}
For Cnt = 1 To 51
{
ArrHigh[Cnt] = ArrHigh[Cnt-1][1] ;
ArrLow[Cnt] = ArrLow[Cnt-1][1] ;
}
}
If (TimeToMinutes(stime)%ArrTime == 0 And Stime > 090000 And Stime <= 150000)
Then
{
ArrHigh[0] = Highest(High, ArrTime/ChartTime);
}
If Stime == 151500
Then
{
ArrHigh[0] = Highest(High, (ArrTime/ChartTime)/2);
}
If (TimeToMinutes(stime)%ArrTime == 0 And Stime > 090000 And Stime <= 150000)
Then
{
ArrLow[0] = Lowest(Low, ArrTime/ChartTime);
}
If (Stime == 151500)
Then
{
ArrLow[0] = Lowest(Low, (ArrTime/ChartTime)/2);
}
HH9 = ArrHigh[0];
LL9 = ArrLow[0];
HH26 = ArrHigh[0];
LL26 = ArrLow[0];
HH52 = ArrHigh[0];
LL52 = ArrLow[0];
for Count = 0 to 51{
if count < 9 Then{
if ArrHigh[Count] > HH9 Then
HH9 = ArrHigh[Count];
if ArrLow[Count] < LL9 Then
LL9 = ArrLow[Count];
}
if count < 26 Then{
if ArrHigh[Count] > HH26 Then
HH26 = ArrHigh[Count];
if ArrLow[Count] < LL26 Then
LL26 = ArrLow[Count];
}
if count < 52 Then{
if ArrHigh[Count] > HH52 Then
HH52 = ArrHigh[Count];
if ArrLow[Count] < LL52 Then
LL52 = ArrLow[Count];
}
}
Value1 = (HH9+ LL9) / 2 ; //기준선
Value2 = (HH26 + LL26) / 2 ; //전환선
Value3 = (value1 + value2) / 2; //선행스팬1
Value4 = (HH52 + LL52 ) / 2; //선행스팬2
ArrPreSpan1[0] = Value3 ;
ArrPreSpan2[0] = Value4 ;
For Count = 1 To 51
{
ArrPreSpan1[Count] = ArrPreSpan1[Count-1][1] ;
ArrPreSpan2[Count] = ArrPreSpan2[Count-1][1] ;
}
plot1(Value1);
plot2(Value2);
plot3(Value3);
plot4(Value4);
//Debug Start
If (dayindex == 0 Or TimeToMinutes(stime)%ArrTime == 0)
Or (STime == 151500 )
Then
{
MessageLog("ArrPreSpan1 : %.2f, ArrPreSpan2 : %.2f", ArrPreSpan1[26-1], ArrPreSpan2[26-1] ) ;
//Debug End
}
다음글
이전글