커뮤니티

질문 드립니다.

프로필 이미지
마녀58
2024-09-19 21:10:39
591
글번호 183543
답변완료
//매수 : 상승추세 전환(고가가 전고점 돌파) 후 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에 적용시켜 마켓타이밍을 결정하여 메인 종목을 매수,매도하고 싶은데 식을 만들 수 있을까요? 항상 감사드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-09-20 15:11:49

안녕하세요 예스스탁입니다. data2의 추세선은 별도 지표로 적용해 보셔야 합니다. 2번식은 지표식입니다. 1. input:swingPeriod(5); Var:신고가(False,Data2), 신저가(False,Data2), j(0,Data2),jj(0,Data2),최종꼭지점("",Data2),추세구간(0,Data2); Array:고[10,4](0,Data2),저[10,4](0,Data2); // 1:가격,2:Index,3:sDate,4:sTime var : TL1(0,Data2); var : HighStop(0,Data2), LowStop(0,Data2), TrendV(0,Data2); # 추세 판정 신고가 = data2(Highest(H,swingPeriod) == H); 신저가 = data2(Lowest (L,swingPeriod) == L); If 신고가 == True and 신저가 == True Then { // 신고가 신저가 동시 발생 If 최종꼭지점 == "저점" Then { If 저[1,1] > data2(L) Then 추세구간 = -1; Else 추세구간 = 1; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < data2(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] = data2(H); 고[1,2] = data2(Index); 고[1,3] = data2(sDate); 고[1,4] = data2(sTime); } Else If 고[1,1] < data2(H) Then { // 1번 고점보다 높은 고가 출현 고[1,1] = data2(H); 고[1,2] = data2(Index); 고[1,3] = data2(sDate); 고[1,4] = data2(sTime); } 최종꼭지점 = "고점"; } # 하락추세 구간 If 추세구간 == -1 Then { If 최종꼭지점 == "고점" then { For j = 3 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = data2(L); 저[1,2] = data2(Index); 저[1,3] = data2(sDate); 저[1,4] = data2(sTime); } Else If 저[1,1] > data2(L) then { 저[1,1] = data2(L); 저[1,2] = data2(Index); 저[1,3] = data2(sDate); 저[1,4] = data2(sTime); } 최종꼭지점 = "저점"; } # 직전 스윙고가, 스윙저가 if 추세구간 == 1 Then HighStop = 고[2,1]; Else HighStop = 고[1,1]; if 추세구간 == -1 Then LowStop = 저[2,1]; Else LowStop = 저[1,1]; if data2(H) >= HighStop Then TrendV = 1; if data2(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 data2(C)>HighStop Then Buy("B", AtMarket); if MarketPosition == 1 and data2(C)<Lowstop Then ExitLong("EL", AtMarket); if retraceScnt == 2 and data2(C)<Lowstop Then Sell("S", AtMarket); if MarketPosition == -1 and data2(C)>HighStop Then ExitShort("ES", AtMarket); 2. input:swingPeriod(5); Var:신고가(False,Data2), 신저가(False,Data2), j(0,Data2),jj(0,Data2),최종꼭지점("",Data2),추세구간(0,Data2); Array:고[10,4](0,Data2),저[10,4](0,Data2); // 1:가격,2:Index,3:sDate,4:sTime var : TL1(0,Data2); var : HighStop(0,Data2), LowStop(0,Data2), TrendV(0,Data2); # 추세 판정 신고가 = data2(Highest(H,swingPeriod) == H); 신저가 = data2(Lowest (L,swingPeriod) == L); If 신고가 == True and 신저가 == True Then { // 신고가 신저가 동시 발생 If 최종꼭지점 == "저점" Then { If 저[1,1] > data2(L) Then 추세구간 = -1; Else 추세구간 = 1; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < data2(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] = data2(H); 고[1,2] = data2(Index); 고[1,3] = data2(sDate); 고[1,4] = data2(sTime); TL1 = TL_New_Self(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetSize(TL1,1); TL_SetColor(TL1,gray); } Else If 고[1,1] < data2(H) Then { // 1번 고점보다 높은 고가 출현 고[1,1] = data2(H); 고[1,2] = data2(Index); 고[1,3] = data2(sDate); 고[1,4] = data2(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] = data2(L); 저[1,2] = data2(Index); 저[1,3] = data2(sDate); 저[1,4] = data2(sTime); TL1 = TL_New_Self(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetSize(TL1,1); TL_SetColor(TL1,gray); } Else If 저[1,1] > data2(L) then { 저[1,1] = data2(L); 저[1,2] = data2(Index); 저[1,3] = data2(sDate); 저[1,4] = data2(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; } Plot1(Data2(c)); 즐거운 하루되세요