커뮤니티
프로그램 수정
2015-04-27 14:28:47
187
글번호 85458
아래의산식은 시스템중일부입니다
산식중 GAP_ma(C,05)는 작성해주신 사용자 함수입니다
이함수를 이용해서 갭을 제거한 산식을 사용하고 있습니다만
dayhigh,daylow와 같이 어떻게해야 갭을 제거하고사용할지 모르는 것도 있습니다
(틱차트나 분봉차트에서 일이평을 참고하려던 산식도 있습니다)
그래서 갭보정차트를 사용하던중 아래에서 질문한것(41555번: 6개월차트와 12개월차트상의시스템적용 차이)가 발생한것입니다
아래의 산식에서 갭을 제거한 산식으로 수정부탁드립니다
-아 래-
##################################################################
#이평선 ma(c,05),ma(c,10),ma(c,20),ma(c,30)ma(c,60),ma(c,120) #
##################################################################
var : MA05(0),MA07(0),MA10(0),MA20(0);//,MA07(0),MA10(0),MA30(0),MA60(0)
MA05 = GAP_ma(C,05);
MA07 = GAP_ma(C,7);
MA10 = GAP_ma(C,10);
MA20 = GAP_ma(C,20);
#####################################
# 당일 Range & 30봉간 고저점 #
#####################################
var:DayRange(0),DH(0),DL(0),DM(0);
DayRange = dayhigh-daylow;
If 0<=DayIndex and DayIndex<=30 Then {
DH=ma(Highest(GAP_ma(h,1),30)-(DH-DL)*(6/9),5);
DL=ma(lowest (GAP_ma(L,1),30)+(DH-DL)*(6/9),5);
DM=DH-(DH-DL)*0.5;
}
else If DayIndex>30 Then {
DH=(dayhigh-(DayRange*(1/3)));
DM=(dayhigh-(DayRange*(1/2)));
DL=(dayhigh-(DayRange*(2/3)));
}
//input :Len(20);
/*H30=ma(Highest(GAP_ma(C,1),20),6);
L30=ma(lowest (GAP_ma(c,1),20),6);
M30=H30-0.5*(H30-L30) ;
가 = GAP_ma(C,2);
나 = H30 ;
다 = Ma05;
라 = Ma10;
마 = M30; //Ma08 DM
바 = L30; //
사 = Dayv;
*/
var:H30(0),L30(0),M30(0);
H30=ma(Highest(GAP_ma(C,1),25),7);
L30=ma(lowest (GAP_ma(c,1),25),7);
M30=H30-0.5*(H30-L30) ;
#####################################
# 5이평 일봉 #
#####################################
//input : P1(5);
var : sumGap(0), gap(0),cnt(0),sumV(0),mav(0),mav1(0);
Array : GC[100](0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
for cnt = 1 to 99{
GC[cnt] = GC[cnt-1][1];
}
}
GC[0] = C - sumGap;
sumV = 0;
if GC[5] > 0 Then{
for cnt = 0 to 5-1 {
sumV = sumV+GC[cnt];
}
maV = sumV / 5;
}
If DayIndex==0 Then
Mav1=Mav;
#####################################
# 당일시가와 5이평일봉의 중간 #
#####################################
var:DayM(0);
If DayV>Mav1 Then
DayM=Mav1+(DayV-Mav1)*0.5 ;
Else If DayV<Mav1 Then
DayM=DayV+(Mav1-DayV)*0.5 ;
Else If DayV==Mav1 Then
DayM=DayV;
###################################################
### 분봉에서 일간이평 ###
###################################################
//input : D1(5),D2(10),D3(20);
var : count(0),sumV1(0),sumV2(0),sumV3(0);
var : Dav1(0),Dav2(0),Dav3(0);
sumV1 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to 20 {
if count < 2 Then
sumV1 = sumV1+DayClose(count);
if count < 04 Then
sumV2 = sumV2+DayClose(count);
if count < 08 Then
sumV3 = sumV3+DayClose(count);
}
DaV1 = sumV1 / 2;
DaV2 = sumV2 / 04;
DaV3 = sumV3 / 08;
- 1. 85963_GAP_Ma.yfu (0.00 MB)
답변 1
예스스탁 예스스탁 답변
2015-04-27 15:12:49
안녕하세요
예스스탁입니다.
올리신 식은 수식안에서 갭보정을 하는 내용입니다.
차트는 갭보정을 하지 않으셔야 합니다.
즉 갭보정하지 않은 차트에서 수식에서 보정해서 보정한 값으로
조건을 지정해 신호를 발생하기 위함입니다.
또한 수식이나 차트자체 갭보정이나 14555번과 같은 상황이 발생할수 있습니다.
수식으로 보정하는 것은 과거에서 현재로 계산해 오면서 일간 갮을 누적해서
현재봉의 시고저종에 반영하는 것이므로 차트의 시작일이 다르면 신호가 달라질수 있습니다.
이용에 참고하시기 바랍니다.
#갭보정일간 시고저종
var : gapx(0),sumgapx(0),GxO(0),GxH(0),GxL(0),GxC(0),xcnt(0);
Array : GapxDO[50](0),GapxDH[50](0),GapxDL[50](0),GapxDC[50](0);
if date!=date[1] THen { // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
gapx = Open-Close[1]; // 일간갭
sumGapx = sumGapx+gapx; // 일간갭 누적
GapxDO[0] = O - sumGapx;
GapxDH[0] = H - sumGapx;
GapxDL[0] = L - sumGapx;
for xcnt = 1 to 49{
GapxDO[xcnt] = GapxDO[xcnt-1][1];
GapxDH[xcnt] = GapxDH[xcnt-1][1];
GapxDL[xcnt] = GapxDL[xcnt-1][1];
}
}
GxO = O - sumGapx;// 갭보정 시가
GxH = H - sumGapx;// 갭보정 고가
GxL = L - sumGapx;// 갭보정 저가
GxC = C - sumGapx; // 갭보정 종가
GapxDC[0] = GxC;
##################################################################
#이평선 ma(c,05),ma(c,10),ma(c,20),ma(c,30)ma(c,60),ma(c,120) #
##################################################################
var : MA05(0),MA07(0),MA10(0),MA20(0);//,MA07(0),MA10(0),MA30(0),MA60(0)
MA05 = GAP_ma(C,05);
MA07 = GAP_ma(C,7);
MA10 = GAP_ma(C,10);
MA20 = GAP_ma(C,20);
#####################################
# 당일 Range & 30봉간 고저점 #
#####################################
var:DayRange(0),DH(0),DL(0),DM(0);
DayRange = GapxDH[0]-GapxDL[0];
If 0<=DayIndex and DayIndex<=30 Then {
DH=ma(Highest(GAP_ma(h,1),30)-(DH-DL)*(6/9),5);
DL=ma(lowest (GAP_ma(L,1),30)+(DH-DL)*(6/9),5);
DM=DH-(DH-DL)*0.5;
}
else If DayIndex>30 Then {
DH=(GapxDH[0]-(DayRange*(1/3)));
DM=(GapxDH[0]-(DayRange*(1/2)));
DL=(GapxDH[0]-(DayRange*(2/3)));
}
//input :Len(20);
/*H30=ma(Highest(GAP_ma(C,1),20),6);
L30=ma(lowest (GAP_ma(c,1),20),6);
M30=H30-0.5*(H30-L30) ;
가 = GAP_ma(C,2);
나 = H30 ;
다 = Ma05;
라 = Ma10;
마 = M30; //Ma08 DM
바 = L30; //
사 = Dayv;
*/
var:H30(0),L30(0),M30(0);
H30=ma(Highest(GAP_ma(C,1),25),7);
L30=ma(lowest (GAP_ma(c,1),25),7);
M30=H30-0.5*(H30-L30) ;
#####################################
# 5이평 일봉 #
#####################################
//input : P1(5);
var : sumGap(0), gap(0),cnt(0),sumV(0),mav(0),mav1(0);
Array : GC[100](0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
for cnt = 1 to 99{
GC[cnt] = GC[cnt-1][1];
}
}
GC[0] = C - sumGap;
sumV = 0;
if GC[5] > 0 Then{
for cnt = 0 to 5-1 {
sumV = sumV+GC[cnt];
}
maV = sumV / 5;
}
If DayIndex==0 Then
Mav1=Mav;
#####################################
# 당일시가와 5이평일봉의 중간 #
#####################################
var:DayM(0);
If DayV>Mav1 Then
DayM=Mav1+(DayV-Mav1)*0.5 ;
Else If DayV<Mav1 Then
DayM=DayV+(Mav1-DayV)*0.5 ;
Else If DayV==Mav1 Then
DayM=DayV;
###################################################
### 분봉에서 일간이평 ###
###################################################
//input : D1(5),D2(10),D3(20);
var : count(0),sumV1(0),sumV2(0),sumV3(0);
var : Dav1(0),Dav2(0),Dav3(0);
sumV1 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to 20 {
if count < 2 Then
sumV1 = sumV1+GapxDC[count];
if count < 04 Then
sumV2 = sumV2+GapxDC[count];
if count < 08 Then
sumV3 = sumV3+GapxDC[count];
}
DaV1 = sumV1 / 2;
DaV2 = sumV2 / 04;
DaV3 = sumV3 / 08;
즐거운 하루되세요
> 티끌 님이 쓴 글입니다.
> 제목 : 프로그램 수정
> 아래의산식은 시스템중일부입니다
산식중 GAP_ma(C,05)는 작성해주신 사용자 함수입니다
이함수를 이용해서 갭을 제거한 산식을 사용하고 있습니다만
dayhigh,daylow와 같이 어떻게해야 갭을 제거하고사용할지 모르는 것도 있습니다
(틱차트나 분봉차트에서 일이평을 참고하려던 산식도 있습니다)
그래서 갭보정차트를 사용하던중 아래에서 질문한것(41555번: 6개월차트와 12개월차트상의시스템적용 차이)가 발생한것입니다
아래의 산식에서 갭을 제거한 산식으로 수정부탁드립니다
-아 래-
##################################################################
#이평선 ma(c,05),ma(c,10),ma(c,20),ma(c,30)ma(c,60),ma(c,120) #
##################################################################
var : MA05(0),MA07(0),MA10(0),MA20(0);//,MA07(0),MA10(0),MA30(0),MA60(0)
MA05 = GAP_ma(C,05);
MA07 = GAP_ma(C,7);
MA10 = GAP_ma(C,10);
MA20 = GAP_ma(C,20);
#####################################
# 당일 Range & 30봉간 고저점 #
#####################################
var:DayRange(0),DH(0),DL(0),DM(0);
DayRange = dayhigh-daylow;
If 0<=DayIndex and DayIndex<=30 Then {
DH=ma(Highest(GAP_ma(h,1),30)-(DH-DL)*(6/9),5);
DL=ma(lowest (GAP_ma(L,1),30)+(DH-DL)*(6/9),5);
DM=DH-(DH-DL)*0.5;
}
else If DayIndex>30 Then {
DH=(dayhigh-(DayRange*(1/3)));
DM=(dayhigh-(DayRange*(1/2)));
DL=(dayhigh-(DayRange*(2/3)));
}
//input :Len(20);
/*H30=ma(Highest(GAP_ma(C,1),20),6);
L30=ma(lowest (GAP_ma(c,1),20),6);
M30=H30-0.5*(H30-L30) ;
가 = GAP_ma(C,2);
나 = H30 ;
다 = Ma05;
라 = Ma10;
마 = M30; //Ma08 DM
바 = L30; //
사 = Dayv;
*/
var:H30(0),L30(0),M30(0);
H30=ma(Highest(GAP_ma(C,1),25),7);
L30=ma(lowest (GAP_ma(c,1),25),7);
M30=H30-0.5*(H30-L30) ;
#####################################
# 5이평 일봉 #
#####################################
//input : P1(5);
var : sumGap(0), gap(0),cnt(0),sumV(0),mav(0),mav1(0);
Array : GC[100](0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
for cnt = 1 to 99{
GC[cnt] = GC[cnt-1][1];
}
}
GC[0] = C - sumGap;
sumV = 0;
if GC[5] > 0 Then{
for cnt = 0 to 5-1 {
sumV = sumV+GC[cnt];
}
maV = sumV / 5;
}
If DayIndex==0 Then
Mav1=Mav;
#####################################
# 당일시가와 5이평일봉의 중간 #
#####################################
var:DayM(0);
If DayV>Mav1 Then
DayM=Mav1+(DayV-Mav1)*0.5 ;
Else If DayV<Mav1 Then
DayM=DayV+(Mav1-DayV)*0.5 ;
Else If DayV==Mav1 Then
DayM=DayV;
###################################################
### 분봉에서 일간이평 ###
###################################################
//input : D1(5),D2(10),D3(20);
var : count(0),sumV1(0),sumV2(0),sumV3(0);
var : Dav1(0),Dav2(0),Dav3(0);
sumV1 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to 20 {
if count < 2 Then
sumV1 = sumV1+DayClose(count);
if count < 04 Then
sumV2 = sumV2+DayClose(count);
if count < 08 Then
sumV3 = sumV3+DayClose(count);
}
DaV1 = sumV1 / 2;
DaV2 = sumV2 / 04;
DaV3 = sumV3 / 08;
다음글
이전글