답변완료
질문 드립니다.
//매수 : 상승추세 전환(고가가 전고점 돌파) 후 2번의 되돌림 후 전고점(스윙고점) 상향돌파 시
//매수청산 : 전저점 하향이탈 시
//매도 : 하락추세 전환(저가가 전저점 돌파) 후 2번의 되돌림 후 전저점(스윙저점) 하향이탈 시
//매도청산 : 전고점 상향돌파 시
input:swingPeriod(5);
Var:신고가(False), 신저가(False), j(0),jj(0),최종꼭지점(""),추세구간(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
var : TL1(0);
var : HighStop(0), LowStop(0), TrendV(0);
# 추세 판정
신고가 = Highest(H,swingPeriod) == H ;
신저가 = Lowest (L,swingPeriod) == L ;
If 신고가 == True and 신저가 == True Then { // 신고가 신저가 동시 발생
If 최종꼭지점 == "저점" Then {
If 저[1,1] > L Then
추세구간 = -1;
Else
추세구간 = 1;
}
Else If 최종꼭지점 == "고점" Then {
If 고[1,1] < H Then
추세구간 = 1;
Else
추세구간 = -1;
}
}
Else If 신고가 == True Then //신고가 발생
추세구간 = 1;
Else If 신저가 == True Then //신저가 발생
추세구간 = -1;
# 상승추세 구간
If 추세구간 == 1 Then {
If 최종꼭지점 == "저점" Then {
For j = 3 DownTo 2 {
For jj = 1 To 4 {
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,gray);
}
Else If 고[1,1] < H Then { // 1번 고점보다 높은 고가 출현
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
최종꼭지점 = "고점";
}
# 하락추세 구간
If 추세구간 == -1 Then {
If 최종꼭지점 == "고점" then {
For j = 3 DownTo 2 {
For jj = 1 To 4 {
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,gray);
}
Else If 저[1,1] > L then {
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
}
# 직전 스윙고가, 스윙저가
if 추세구간 == 1 Then
HighStop = 고[2,1];
Else
HighStop = 고[1,1];
if 추세구간 == -1 Then
LowStop = 저[2,1];
Else
LowStop = 저[1,1];
if H >= HighStop Then
TrendV = 1;
if L <= LowStop Then
TrendV = -1;
# 매매식
var : retraceScnt(0), retraceBcnt(0);
if TrendV == 1 Then {
retraceScnt = 0;
if 추세구간[1] == 1 and 추세구간 == -1 Then
retraceBcnt = retraceBcnt + 1;
}
if TrendV == -1 Then {
retraceBcnt = 0;
if 추세구간[1] == -1 and 추세구간 == 1 Then
retraceScnt = retraceScnt + 1;
}
if retraceBcnt == 2 and C>HighStop Then
Buy("B", AtMarket);
if MarketPosition == 1 and C<Lowstop Then
ExitLong("EL", AtMarket);
if retraceScnt == 2 and C<Lowstop Then
Sell("S", AtMarket);
if MarketPosition == -1 and C>HighStop Then
ExitShort("ES", AtMarket);
위의 식을 활용하되 data2에 적용시켜 마켓타이밍을 결정하여
메인 종목을 매수,매도하고 싶은데
식을 만들 수 있을까요?
항상 감사드립니다.
2024-09-19
653
글번호 183543
시스템