커뮤니티
시스템
2019-02-25 13:32:57
231
글번호 126520
안녕하세요 수고가 정말 많으십니다
아래지표식을 매수/매도가 가능한 시스템식으로 부탁드리겠습니다
Input:Rate(3),
kind(1); // 1:일반다이버전스,2:히든다이버전스,3:과장된다이버전스,4:3중다이버전스
Var:j(0),jj(0),iValue(0),
고저구분(0), // 1: 고점, 2: 저점
신규여부(0); // 1: 신규, 2: 연장
Array:HH[10,4](0),LL[10,4](0), // 1:가격, 2:Index, 3:sDate, 4:sTime
IH[10,4](0),IL[10,4](0), // 지표의 고,저점을 관리
TL[10](0),
BeginIndex[4](0);
#==========================================#
// iValue = RSI(9);
// iValue = StochasticsK(10,5);
// iValue = StochasticsD(5,3,3);
// iValue = MACD(12,26);
iValue = MACD_OSC(12,26,9); // 현재 설정 값
// iValue = CCI(9);
// iValue = LRS(C,14);
// iValue = Volume;
Plot1(iValue);
#==========================================#
// 주가 차트에 대한 파동선
고저구분 = ChgRateZigZag(Rate,0,HH,LL,신규여부); // 최소변동률지그재그
If 고저구분 == 1 Then { // 고점
If 신규여부 == 1 Then
TL[0] = TL_New(LL[1,3],LL[1,4],LL[1,1],HH[1,3],HH[1,4],HH[1,1]);
If 신규여부 == 2 Then // 고점 연장
TL_SetEnd(TL[0],HH[1,3],HH[1,4],HH[1,1]);
} Else If 고저구분 == -1 Then { // 저점
If 신규여부 == 1 Then
TL[0] = TL_New(HH[1,3],HH[1,4],HH[1,1],LL[1,3],LL[1,4],LL[1,1]);
If 신규여부 == 2 Then // 저점 연장
TL_SetEnd(TL[0],LL[1,3],LL[1,4],LL[1,1]);
}
TL_SetSize(TL[0],1);
TL_SetColor(TL[0],PINK);
#==========================================#
// 보조지표에 대한 파동선
Value1 = IndiDivergence(고저구분,신규여부,iValue,IH,IL); // 주가의 지그재그파동 결과를 입력
// 결과값이 1이면 정상, 0이면 오류
If Value1 == 1 Then {
If 고저구분 == 1 Then { // 고점
If 신규여부 == 1 Then // 주가 파동에 신규 고점 발생
TL[1] = TL_New_Self(IL[1,3],IL[1,4],IL[1,1],IH[1,3],IH[1,4],IH[1,1]);
Else // 주가의 꼭지점이 그대로라도 지표는 변하므로 매봉마다 연장처리
TL_SetEnd(TL[1],IH[1,3],IH[1,4],IH[1,1]);
} Else If 고저구분 == -1 Then { // 저점
If 신규여부 == 1 Then // 주가 파동에 신규 저점 발생
TL[1] = TL_New_Self(IH[1,3],IH[1,4],IH[1,1],IL[1,3],IL[1,4],IL[1,1]);
Else
TL_SetEnd(TL[1],IL[1,3],IL[1,4],IL[1,1]);
}
TL_SetSize(TL[1],1);
TL_SetColor(TL[1],BLUE);
}
#==========================================#
// 다이버전스 표시
If (kind == 1 and HH[2,1] < HH[1,1] and IH[2,1] > IH[1,1]) or
// 일반 약세 다이버전스 : 주가 고점 상승, 보조지표 고점 하락
(kind == 2 and HH[2,1] > HH[1,1] and IH[2,1] < IH[1,1]) or
// 히든 약세 다이버전스 : 주가 고점 하락, 보조지표 고점 상승
(kind == 3 and abs(HH[2,1] - HH[1,1]) <= 2 * PriceScale and IH[2,1] > IH[1,1]) Then {
// 과장된 약세 다이버전스 : 주가 고점의 차이가 2틱 이내이고 보조지표 고점 하락
Value2 = (HH[1,1]-HH[2,1])/(HH[1,2]-HH[2,2])*(Index-HH[2,2])+HH[2,1];
Value3 = (IH[1,1]-IH[2,1])/(IH[1,2]-IH[2,2])*(Index-IH[2,2])+IH[2,1];
If BeginIndex[0] == HH[2,2] Then {
// 다이버전스를 나타내는 추세선의 시작점이 변함이 없으면 추세선 끝점만 연장
TL_SetEnd(TL[2],sDate,sTime,Value2);
TL_SetEnd(TL[3],sDate,sTime,Value3);
} Else {
TL[2] = TL_New(HH[2,3],HH[2,4],HH[2,1],sDate,sTime,Value2);
TL[3] = TL_New_Self(IH[2,3],IH[2,4],IH[2,1],sDate,sTime,Value3);
BeginIndex[0] = HH[2,2]; // 추세선 시작점인 2번 고점의 index 값을 저장
}
TL_SetSize(TL[2],3);
TL_SetSize(TL[3],3);
TL_SetColor(TL[2],LGREEN);
TL_SetColor(TL[3],LGREEN);
}
If (kind == 1 and LL[2,1] > LL[1,1] and IL[2,1] < IL[1,1]) or
// 일반 강세 다이버전스 : 주가 저점 하락, 보조지표 저점 상승
(kind == 2 and LL[2,1] < LL[1,1] and IL[2,1] > IL[1,1]) or
// 히든 강세 다이버전스 : 주가 저점 상승, 보조지표 저점 하락
(kind == 3 and abs(LL[2,1] - LL[1,1]) <= 2 * PriceScale and IL[2,1] < IL[1,1]) Then {
// 과장된 강세 다이버전스 : 주가 저점의 차이가 2틱 이내, 보조지표 저점 상승
Value4 = (LL[1,1]-LL[2,1])/(LL[1,2]-LL[2,2])*(Index-LL[2,2])+LL[2,1];
Value5 = (IL[1,1]-IL[2,1])/(IL[1,2]-IL[2,2])*(Index-IL[2,2])+IL[2,1];
If BeginIndex[1] == LL[2,2] Then {
TL_SetEnd(TL[4],sDate,sTime,Value4);
TL_SetEnd(TL[5],sDate,sTime,Value5);
} Else {
TL[4] = TL_New(LL[2,3],LL[2,4],LL[2,1],sDate,sTime,Value4);
TL[5] = TL_New_Self(IL[2,3],IL[2,4],IL[2,1],sDate,sTime,Value5);
BeginIndex[1] = LL[2,2];
}
TL_SetSize(TL[4],3);
TL_SetSize(TL[5],3);
TL_SetColor(TL[4],MAGENTA);
TL_SetColor(TL[5],MAGENTA);
}
If kind == 4 and HH[3,1] < HH[1,1] and // 주가 고점 상승
(HH[1,1]-HH[3,1])/(HH[1,2]-HH[3,2])*(HH[2,2]-HH[3,2])+HH[3,1] > HH[2,1] and
// 2번 고점은 1번과 3번 고점을 잇는 선보다 밑에 위치
IH[3,1] > IH[1,1] and // 보조지표 고점 하락
(IH[1,1]-IH[3,1])/(IH[1,2]-IH[3,2])*(IH[2,2]-IH[3,2])+IH[3,1] > IH[2,1] Then {
// 2번 고점은 1번과 3번 고점을 잇는 선보다 밑에 위치
Value2 = (HH[1,1]-HH[3,1])/(HH[1,2]-HH[3,2])*(Index-HH[3,2])+HH[3,1];
Value3 = (IH[1,1]-IH[3,1])/(IH[1,2]-IH[3,2])*(Index-IH[3,2])+IH[3,1];
If BeginIndex[0] == HH[3,2] Then {
TL_SetEnd(TL[2],sDate,sTime,Value2);
TL_SetEnd(TL[3],sDate,sTime,Value3);
} Else {
TL[2] = TL_New(HH[3,3],HH[3,4],HH[3,1],sDate,sTime,Value2);
TL[3] = TL_New_Self(IH[3,3],IH[3,4],IH[3,1],sDate,sTime,Value3);
BeginIndex[0] = HH[3,2];
}
TL_SetSize(TL[2],3);
TL_SetSize(TL[3],3);
TL_SetColor(TL[2],LGREEN);
TL_SetColor(TL[3],LGREEN);
}
If kind == 4 and LL[3,1] > LL[1,1] and // 주가 저점 하락
(LL[1,1]-LL[3,1])/(LL[1,2]-LL[3,2])*(LL[2,2]-LL[3,2])+LL[3,1] < LL[2,1] and
// 2번 저점이 1번,3번 저점을 잇는 선보다 위에 위치
IL[3,1] < IL[1,1] and // 보조지표 저점 상승
(IL[1,1]-IL[3,1])/(IL[1,2]-IL[3,2])*(IL[2,2]-IL[3,2])+IL[3,1] < IL[2,1] Then {
Value4 = (LL[1,1]-LL[3,1])/(LL[1,2]-LL[3,2])*(Index-LL[3,2])+LL[3,1];
Value5 = (IL[1,1]-IL[3,1])/(IL[1,2]-IL[3,2])*(Index-IL[3,2])+IL[3,1];
If BeginIndex[1] == LL[3,2] Then {
TL_SetEnd(TL[4],sDate,sTime,Value4);
TL_SetEnd(TL[5],sDate,sTime,Value5);
} Else {
TL[4] = TL_New(LL[3,3],LL[3,4],LL[3,1],sDate,sTime,Value4);
TL[5] = TL_New_Self(IL[3,3],IL[3,4],IL[3,1],sDate,sTime,Value5);
BeginIndex[1] = LL[3,2];
}
TL_SetSize(TL[4],3);
TL_SetSize(TL[5],3);
TL_SetColor(TL[4],MAGENTA);
TL_SetColor(TL[5],MAGENTA);
}
수고하세요
답변 1
예스스탁 예스스탁 답변
2019-02-25 15:55:43
안녕하세요
예스스탁입니다.
지표만으로는 진입시점을 잘 모르겠습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> 유인력11 님이 쓴 글입니다.
> 제목 : 시스템
> 안녕하세요 수고가 정말 많으십니다
아래지표식을 매수/매도가 가능한 시스템식으로 부탁드리겠습니다
Input:Rate(3),
kind(1); // 1:일반다이버전스,2:히든다이버전스,3:과장된다이버전스,4:3중다이버전스
Var:j(0),jj(0),iValue(0),
고저구분(0), // 1: 고점, 2: 저점
신규여부(0); // 1: 신규, 2: 연장
Array:HH[10,4](0),LL[10,4](0), // 1:가격, 2:Index, 3:sDate, 4:sTime
IH[10,4](0),IL[10,4](0), // 지표의 고,저점을 관리
TL[10](0),
BeginIndex[4](0);
#==========================================#
// iValue = RSI(9);
// iValue = StochasticsK(10,5);
// iValue = StochasticsD(5,3,3);
// iValue = MACD(12,26);
iValue = MACD_OSC(12,26,9); // 현재 설정 값
// iValue = CCI(9);
// iValue = LRS(C,14);
// iValue = Volume;
Plot1(iValue);
#==========================================#
// 주가 차트에 대한 파동선
고저구분 = ChgRateZigZag(Rate,0,HH,LL,신규여부); // 최소변동률지그재그
If 고저구분 == 1 Then { // 고점
If 신규여부 == 1 Then
TL[0] = TL_New(LL[1,3],LL[1,4],LL[1,1],HH[1,3],HH[1,4],HH[1,1]);
If 신규여부 == 2 Then // 고점 연장
TL_SetEnd(TL[0],HH[1,3],HH[1,4],HH[1,1]);
} Else If 고저구분 == -1 Then { // 저점
If 신규여부 == 1 Then
TL[0] = TL_New(HH[1,3],HH[1,4],HH[1,1],LL[1,3],LL[1,4],LL[1,1]);
If 신규여부 == 2 Then // 저점 연장
TL_SetEnd(TL[0],LL[1,3],LL[1,4],LL[1,1]);
}
TL_SetSize(TL[0],1);
TL_SetColor(TL[0],PINK);
#==========================================#
// 보조지표에 대한 파동선
Value1 = IndiDivergence(고저구분,신규여부,iValue,IH,IL); // 주가의 지그재그파동 결과를 입력
// 결과값이 1이면 정상, 0이면 오류
If Value1 == 1 Then {
If 고저구분 == 1 Then { // 고점
If 신규여부 == 1 Then // 주가 파동에 신규 고점 발생
TL[1] = TL_New_Self(IL[1,3],IL[1,4],IL[1,1],IH[1,3],IH[1,4],IH[1,1]);
Else // 주가의 꼭지점이 그대로라도 지표는 변하므로 매봉마다 연장처리
TL_SetEnd(TL[1],IH[1,3],IH[1,4],IH[1,1]);
} Else If 고저구분 == -1 Then { // 저점
If 신규여부 == 1 Then // 주가 파동에 신규 저점 발생
TL[1] = TL_New_Self(IH[1,3],IH[1,4],IH[1,1],IL[1,3],IL[1,4],IL[1,1]);
Else
TL_SetEnd(TL[1],IL[1,3],IL[1,4],IL[1,1]);
}
TL_SetSize(TL[1],1);
TL_SetColor(TL[1],BLUE);
}
#==========================================#
// 다이버전스 표시
If (kind == 1 and HH[2,1] < HH[1,1] and IH[2,1] > IH[1,1]) or
// 일반 약세 다이버전스 : 주가 고점 상승, 보조지표 고점 하락
(kind == 2 and HH[2,1] > HH[1,1] and IH[2,1] < IH[1,1]) or
// 히든 약세 다이버전스 : 주가 고점 하락, 보조지표 고점 상승
(kind == 3 and abs(HH[2,1] - HH[1,1]) <= 2 * PriceScale and IH[2,1] > IH[1,1]) Then {
// 과장된 약세 다이버전스 : 주가 고점의 차이가 2틱 이내이고 보조지표 고점 하락
Value2 = (HH[1,1]-HH[2,1])/(HH[1,2]-HH[2,2])*(Index-HH[2,2])+HH[2,1];
Value3 = (IH[1,1]-IH[2,1])/(IH[1,2]-IH[2,2])*(Index-IH[2,2])+IH[2,1];
If BeginIndex[0] == HH[2,2] Then {
// 다이버전스를 나타내는 추세선의 시작점이 변함이 없으면 추세선 끝점만 연장
TL_SetEnd(TL[2],sDate,sTime,Value2);
TL_SetEnd(TL[3],sDate,sTime,Value3);
} Else {
TL[2] = TL_New(HH[2,3],HH[2,4],HH[2,1],sDate,sTime,Value2);
TL[3] = TL_New_Self(IH[2,3],IH[2,4],IH[2,1],sDate,sTime,Value3);
BeginIndex[0] = HH[2,2]; // 추세선 시작점인 2번 고점의 index 값을 저장
}
TL_SetSize(TL[2],3);
TL_SetSize(TL[3],3);
TL_SetColor(TL[2],LGREEN);
TL_SetColor(TL[3],LGREEN);
}
If (kind == 1 and LL[2,1] > LL[1,1] and IL[2,1] < IL[1,1]) or
// 일반 강세 다이버전스 : 주가 저점 하락, 보조지표 저점 상승
(kind == 2 and LL[2,1] < LL[1,1] and IL[2,1] > IL[1,1]) or
// 히든 강세 다이버전스 : 주가 저점 상승, 보조지표 저점 하락
(kind == 3 and abs(LL[2,1] - LL[1,1]) <= 2 * PriceScale and IL[2,1] < IL[1,1]) Then {
// 과장된 강세 다이버전스 : 주가 저점의 차이가 2틱 이내, 보조지표 저점 상승
Value4 = (LL[1,1]-LL[2,1])/(LL[1,2]-LL[2,2])*(Index-LL[2,2])+LL[2,1];
Value5 = (IL[1,1]-IL[2,1])/(IL[1,2]-IL[2,2])*(Index-IL[2,2])+IL[2,1];
If BeginIndex[1] == LL[2,2] Then {
TL_SetEnd(TL[4],sDate,sTime,Value4);
TL_SetEnd(TL[5],sDate,sTime,Value5);
} Else {
TL[4] = TL_New(LL[2,3],LL[2,4],LL[2,1],sDate,sTime,Value4);
TL[5] = TL_New_Self(IL[2,3],IL[2,4],IL[2,1],sDate,sTime,Value5);
BeginIndex[1] = LL[2,2];
}
TL_SetSize(TL[4],3);
TL_SetSize(TL[5],3);
TL_SetColor(TL[4],MAGENTA);
TL_SetColor(TL[5],MAGENTA);
}
If kind == 4 and HH[3,1] < HH[1,1] and // 주가 고점 상승
(HH[1,1]-HH[3,1])/(HH[1,2]-HH[3,2])*(HH[2,2]-HH[3,2])+HH[3,1] > HH[2,1] and
// 2번 고점은 1번과 3번 고점을 잇는 선보다 밑에 위치
IH[3,1] > IH[1,1] and // 보조지표 고점 하락
(IH[1,1]-IH[3,1])/(IH[1,2]-IH[3,2])*(IH[2,2]-IH[3,2])+IH[3,1] > IH[2,1] Then {
// 2번 고점은 1번과 3번 고점을 잇는 선보다 밑에 위치
Value2 = (HH[1,1]-HH[3,1])/(HH[1,2]-HH[3,2])*(Index-HH[3,2])+HH[3,1];
Value3 = (IH[1,1]-IH[3,1])/(IH[1,2]-IH[3,2])*(Index-IH[3,2])+IH[3,1];
If BeginIndex[0] == HH[3,2] Then {
TL_SetEnd(TL[2],sDate,sTime,Value2);
TL_SetEnd(TL[3],sDate,sTime,Value3);
} Else {
TL[2] = TL_New(HH[3,3],HH[3,4],HH[3,1],sDate,sTime,Value2);
TL[3] = TL_New_Self(IH[3,3],IH[3,4],IH[3,1],sDate,sTime,Value3);
BeginIndex[0] = HH[3,2];
}
TL_SetSize(TL[2],3);
TL_SetSize(TL[3],3);
TL_SetColor(TL[2],LGREEN);
TL_SetColor(TL[3],LGREEN);
}
If kind == 4 and LL[3,1] > LL[1,1] and // 주가 저점 하락
(LL[1,1]-LL[3,1])/(LL[1,2]-LL[3,2])*(LL[2,2]-LL[3,2])+LL[3,1] < LL[2,1] and
// 2번 저점이 1번,3번 저점을 잇는 선보다 위에 위치
IL[3,1] < IL[1,1] and // 보조지표 저점 상승
(IL[1,1]-IL[3,1])/(IL[1,2]-IL[3,2])*(IL[2,2]-IL[3,2])+IL[3,1] < IL[2,1] Then {
Value4 = (LL[1,1]-LL[3,1])/(LL[1,2]-LL[3,2])*(Index-LL[3,2])+LL[3,1];
Value5 = (IL[1,1]-IL[3,1])/(IL[1,2]-IL[3,2])*(Index-IL[3,2])+IL[3,1];
If BeginIndex[1] == LL[3,2] Then {
TL_SetEnd(TL[4],sDate,sTime,Value4);
TL_SetEnd(TL[5],sDate,sTime,Value5);
} Else {
TL[4] = TL_New(LL[3,3],LL[3,4],LL[3,1],sDate,sTime,Value4);
TL[5] = TL_New_Self(IL[3,3],IL[3,4],IL[3,1],sDate,sTime,Value5);
BeginIndex[1] = LL[3,2];
}
TL_SetSize(TL[4],3);
TL_SetSize(TL[5],3);
TL_SetColor(TL[4],MAGENTA);
TL_SetColor(TL[5],MAGENTA);
}
수고하세요
이전글