커뮤니티

시스템식 부탁드림니다.

프로필 이미지
수루지
2015-09-20 23:50:26
185
글번호 90520
답변완료
1,하기 rsi식을 신호시 시스템식으로 바꾼다. (하단신호시 매수,청산이 되지않고 매수 신호시 추가, 고가선이 볼린저밴드(20,2)상단 골드시 올청산, 상단 신호시에 매도,청산이 되지않고 재 매도신호시 1개 추가, 저가선이 볼린저밴드(20,2)하단선을 데드시에 올청산 ) 2,rsi 식을 macd(12,26)으로 바꾼다. 3,바꾼 macd식을 1번과 같이 만들어 주세요.부탁드림니다.... 4,수식; Input:Period(14),Rsi변동폭(5); Var:j(0),상승(100),하락(-100),양방향(2),추세(0), 파동선(0),Rsi파동선(0),방향(0),RsiV(0),추세선(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0); RsiV = RSI(Period); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { Rsi고Bar[j] = Rsi고Bar[j] + 1; Rsi저Bar[j] = Rsi저Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then { Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } Else Rsi고Bar[0] = Rsi고Bar[0] + 1; If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then { Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } Else Rsi저Bar[0] = Rsi저Bar[0] + 1; If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then { 고[0] = H; 고Bar[0] = 0; } Else 고Bar[0] = 고Bar[0] + 1; If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then { 저[0] = L; 저Bar[0] = 0; } Else 저Bar[0] = 저Bar[0] + 1; #==========================================# # 추세방향 결정 #==========================================# If Rsi저[0][1] + Rsi변동폭 > RsiV[1] && Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승; If Rsi고[0][1] - Rsi변동폭 < RsiV[1] && Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { Rsi저[j+1] = Rsi저[j]; Rsi저Bar[j+1] = Rsi저Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; 고[0] = H; 고Bar[0] = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { Rsi고[j+1] = Rsi고[j]; Rsi고Bar[j+1] = Rsi고Bar[j]; 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; 저[0] = L; 저Bar[0] = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If Rsi고[1] < Rsi고[0] && Rsi고[0][1] - Rsi변동폭 <= RsiV[1] && Rsi고[0][1] - Rsi변동폭 > RsiV Then { Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } If 고[1] < 고[0] && 고[0] > H Then { 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If Rsi저[1] > Rsi저[0] && Rsi저[0][1] + Rsi변동폭 >= RsiV[1] && Rsi저[0][1] + Rsi변동폭 < RsiV Then { Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } If 저[1] > 저[0] && 저[0] < L Then { 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; } } #==========================================# # 지표식 출력 #==========================================# If Rsi파동선[1] != Rsi파동선 Then Plot1(파동선); //적당껏 수평이동 Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,고[0],저[0])); iff( rsi파동선>Rsi파동선[1],magenta,blue); #상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승 If 저[2] > 저[1] && Rsi저[2] < Rsi저[1] Then { 추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2]; Plot2(추세선); } #하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락 if 고[2] < 고[1] && Rsi고[2] > Rsi고[1] Then { 추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2]; Plot3(추세선); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-09-21 14:44:10

안녕하세요 예스스탁입니다. 1 문의하신 내용 시스템식으로 어떻게 변경해 드려야 할지 모르겠습니다. 해당 지표식은 특정조건이 만족할때 출력되고 이전 출력지점과 단순 사선으로 연결이 됩니다. 즉 특정 조건에서만 값이 한번 출력됩니다. 지표값 확인해 보시면 매봉 값이 있지 않습니다. 도움을 드리지 못해 죄송합니다. 2.아래는 RSI대신 MACD로 대체한 지표식입니다. Input:Period1(12),Period2(26),MACD변동폭(0.5); Var:j(0),상승(100),하락(-100),양방향(2),추세(0), 파동선(0),MACD파동선(0),방향(0),MACDV(0),추세선(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0), MACD고[20](0),MACD저[20](0),MACD고Bar[20](0),MACD저Bar[20](0); MACDV = MACD(Period1,Period2); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { MACD고Bar[j] = MACD고Bar[j] + 1; MACD저Bar[j] = MACD저Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If MACD고[0] <= MACDV || MACD고[0] == 0 || IsNaN(MACD고[0]) == True Then { MACD고[0] = MACDV; MACD고Bar[0] = 0; } Else MACD고Bar[0] = MACD고Bar[0] + 1; If MACD저[0] >= MACDV || MACD저[0] == 0 || IsNaN(MACD저[0]) == True Then { MACD저[0] = MACDV; MACD저Bar[0] = 0; } Else MACD저Bar[0] = MACD저Bar[0] + 1; If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then { 고[0] = H; 고Bar[0] = 0; } Else 고Bar[0] = 고Bar[0] + 1; If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then { 저[0] = L; 저Bar[0] = 0; } Else 저Bar[0] = 저Bar[0] + 1; #==========================================# # 추세방향 결정 #==========================================# If MACD저[0][1] + MACD변동폭 > MACDV[1] && MACD저[0][1] + MACD변동폭 <= MACDV Then 방향 = 상승; If MACD고[0][1] - MACD변동폭 < MACDV[1] && MACD고[0][1] - MACD변동폭 >= MACDV Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { MACD저[j+1] = MACD저[j]; MACD저Bar[j+1] = MACD저Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } MACD저[1] = MACD저[0]; MACD저Bar[1] = MACD저Bar[0]; MACD파동선 = MACD저[0]; MACD저[0] = MACDV; MACD저Bar[0] = 0; MACD고[0] = MACDV; MACD고Bar[0] = 0; 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; 고[0] = H; 고Bar[0] = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { MACD고[j+1] = MACD고[j]; MACD고Bar[j+1] = MACD고Bar[j]; 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } MACD고[1] = MACD고[0]; MACD고Bar[1] = MACD고Bar[0]; MACD파동선 = MACD고[0]; MACD고[0] = MACDV; MACD고Bar[0] = 0; MACD저[0] = MACDV; MACD저Bar[0] = 0; 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; 저[0] = L; 저Bar[0] = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If MACD고[1] < MACD고[0] && MACD고[0][1] - MACD변동폭 <= MACDV[1] && MACD고[0][1] - MACD변동폭 > MACDV Then { MACD고[1] = MACD고[0]; MACD고Bar[1] = MACD고Bar[0]; MACD파동선 = MACD고[0]; MACD고[0] = MACDV; MACD고Bar[0] = 0; } If 고[1] < 고[0] && 고[0] > H Then { 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If MACD저[1] > MACD저[0] && MACD저[0][1] + MACD변동폭 >= MACDV[1] && MACD저[0][1] + MACD변동폭 < MACDV Then { MACD저[1] = MACD저[0]; MACD저Bar[1] = MACD저Bar[0]; MACD파동선 = MACD저[0]; MACD저[0] = MACDV; MACD저Bar[0] = 0; } If 저[1] > 저[0] && 저[0] < L Then { 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; } } #==========================================# # 지표식 출력 #==========================================# If MACD파동선[1] != MACD파동선 Then Plot1(파동선); //적당껏 수평이동 Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,고[0],저[0])); iff( MACD파동선>MACD파동선[1],magenta,blue); #상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승 If 저[2] > 저[1] && MACD저[2] < MACD저[1] Then { 추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2]; Plot2(추세선); } #하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락 if 고[2] < 고[1] && MACD고[2] > MACD고[1] Then { 추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2]; Plot3(추세선); } 즐거운 하루되세요 > 수루지 님이 쓴 글입니다. > 제목 : 시스템식 부탁드림니다. > 1,하기 rsi식을 신호시 시스템식으로 바꾼다. (하단신호시 매수,청산이 되지않고 매수 신호시 추가, 고가선이 볼린저밴드(20,2)상단 골드시 올청산, 상단 신호시에 매도,청산이 되지않고 재 매도신호시 1개 추가, 저가선이 볼린저밴드(20,2)하단선을 데드시에 올청산 ) 2,rsi 식을 macd(12,26)으로 바꾼다. 3,바꾼 macd식을 1번과 같이 만들어 주세요.부탁드림니다.... 4,수식; Input:Period(14),Rsi변동폭(5); Var:j(0),상승(100),하락(-100),양방향(2),추세(0), 파동선(0),Rsi파동선(0),방향(0),RsiV(0),추세선(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0); RsiV = RSI(Period); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { Rsi고Bar[j] = Rsi고Bar[j] + 1; Rsi저Bar[j] = Rsi저Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then { Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } Else Rsi고Bar[0] = Rsi고Bar[0] + 1; If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then { Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } Else Rsi저Bar[0] = Rsi저Bar[0] + 1; If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then { 고[0] = H; 고Bar[0] = 0; } Else 고Bar[0] = 고Bar[0] + 1; If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then { 저[0] = L; 저Bar[0] = 0; } Else 저Bar[0] = 저Bar[0] + 1; #==========================================# # 추세방향 결정 #==========================================# If Rsi저[0][1] + Rsi변동폭 > RsiV[1] && Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승; If Rsi고[0][1] - Rsi변동폭 < RsiV[1] && Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { Rsi저[j+1] = Rsi저[j]; Rsi저Bar[j+1] = Rsi저Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; 고[0] = H; 고Bar[0] = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { Rsi고[j+1] = Rsi고[j]; Rsi고Bar[j+1] = Rsi고Bar[j]; 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; 저[0] = L; 저Bar[0] = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If Rsi고[1] < Rsi고[0] && Rsi고[0][1] - Rsi변동폭 <= RsiV[1] && Rsi고[0][1] - Rsi변동폭 > RsiV Then { Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } If 고[1] < 고[0] && 고[0] > H Then { 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If Rsi저[1] > Rsi저[0] && Rsi저[0][1] + Rsi변동폭 >= RsiV[1] && Rsi저[0][1] + Rsi변동폭 < RsiV Then { Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } If 저[1] > 저[0] && 저[0] < L Then { 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; } } #==========================================# # 지표식 출력 #==========================================# If Rsi파동선[1] != Rsi파동선 Then Plot1(파동선); //적당껏 수평이동 Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,고[0],저[0])); iff( rsi파동선>Rsi파동선[1],magenta,blue); #상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승 If 저[2] > 저[1] && Rsi저[2] < Rsi저[1] Then { 추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2]; Plot2(추세선); } #하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락 if 고[2] < 고[1] && Rsi고[2] > Rsi고[1] Then { 추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2]; Plot3(추세선); }