커뮤니티

부탁드립니다

프로필 이미지
왕밥빵
2023-09-12 15:51:54
1175
글번호 172395
답변완료
안녕하세요 예스스탁입니다. 피라미딩을 모든진입신호허용으로 설정하고 적용하시면 됩니다. Input : Period1(12),Period2(14); var : cnt(0),S1(0),D1(0),TM(0),TF1(0),idx(0); Var : DownAmt1(0), UpAmt1(0), UpSum1(0), DownSum1(0), UpAvg1(0), DownAvg1(0),PreUpAvg1(0), preDownAvg1(0),RSI1(0); Var : DownAmt2(0), UpAmt2(0), UpSum2(0), DownSum2(0), UpAvg2(0), DownAvg2(0),PreUpAvg2(0), preDownAvg2(0),RSI2(0); Array : C1[100](0); if DayOfWeek(Bdate) < DayOfWeek(Bdate[1]) Then { for cnt = 99 downto 1 { C1[cnt] = C1[cnt-1]; } PreUpAvg1 = UpAvg1[1]; preDownAvg1 = DownAvg1[1]; PreUpAvg2 = UpAvg2[1]; preDownAvg2 = DownAvg2[1]; idx = idx + 1; } C1[0] = C; If idx == Period1+2 Then { UpSum1 = 0; DownSum1 = 0; For cnt = 0 To Period1 - 1 { UpAmt1 = C1[cnt] - C1[cnt+1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else { DownAmt1 = -UpAmt1; UpAmt1 = 0; } UpSum1 = UpSum1 + UpAmt1; DownSum1 = DownSum1 + DownAmt1; } UpAvg1 = UpSum1 / Period1; DownAvg1 = DownSum1 / Period1; } If idx > Period1+2 Then { UpAmt1 = C1[0] - C1[1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else { DownAmt1 = -UpAmt1; UpAmt1 = 0; } UpAvg1 = (PreUpAvg1 * (Period1 - 1) + UpAmt1) / Period1; DownAvg1 = (preDownAvg1 * (Period1 - 1) + DownAmt1) / Period1; } If UpAvg1 + DownAvg1 <> 0 Then RSI1 = 100 * UpAvg1 / (UpAvg1 + DownAvg1); Else RSI1 = 0; If idx == Period2+2 Then { UpSum2 = 0; DownSum2 = 0; For cnt = 0 To Period2 - 1 { UpAmt2 = C1[cnt] - C1[cnt+1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else { DownAmt2 = -UpAmt2; UpAmt2 = 0; } UpSum2 = UpSum2 + UpAmt2; DownSum2 = DownSum2 + DownAmt2; } UpAvg2 = UpSum2 / Period2; DownAvg2 = DownSum2 / Period2; } If idx > Period1+2 Then { UpAmt2 = C1[0] - C1[1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else { DownAmt2 = -UpAmt2; UpAmt2 = 0; } UpAvg2 = (PreUpAvg2 * (Period2 - 1) + UpAmt2) / Period2; DownAvg2 = (preDownAvg2 * (Period2 - 1) + DownAmt2) / Period2; } If UpAvg2 + DownAvg2 <> 0 Then RSI2 = 100 * UpAvg2 / (UpAvg2 + DownAvg2); Else RSI2 = 0; if RSI1 >= 30 and RSI1 <= 70 and RSI2 <= 30 Then Buy("b"); if MarketPosition == 1 Then { if RSI2 >= 70 Then ExitLong(); } 즐거운 하루되세요 > 왕밥빵 님이 쓴 글입니다. > 제목 : 부탁드립니다 > 일봉상에 사용할건데 주봉 rsi 기간 12 값 30~70, rsi 기간 14 값 30 이하 금일 종가에 매수 추가매수때는 30이하 반복시 하루한번 종가 추가매수, rsi 기간 14 값 70 이상시 매도 제가 질문을 잘못했네요 일봉상 사용하는데 주봉 rsi 기간 12 값 30~70, 일봉rsi 기간 14 값 30이하 금일 종가에 매수, 추가매수때는 일봉상 rsi가 30이하 반복시 종가 추가매수, 일봉 rsi 기간 14 값 70 이상시 매도입니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-09-12 16:55:32

안녕하세요 예스스탁입니다. RSI2를 기본차트 RSI로 변경해 드립니다. 첫진입과 추가진입 모두 주봉 RSI조건이 충족되여야 하면 1번 추가진입은 주봉조건 제외하고 일봉 RSI조건만 체크하면 2번식 사용하시면 됩니다. 피라미딩은 모두 모든 진입신호 허용으로 설정하시면 됩니다. 1 Input : Period1(12),Period2(14); var : cnt(0),S1(0),D1(0),TM(0),TF1(0),idx(0); Var : DownAmt1(0), UpAmt1(0), UpSum1(0), DownSum1(0), UpAvg1(0), DownAvg1(0),PreUpAvg1(0), preDownAvg1(0),RSI1(0); Var : DownAmt2(0), UpAmt2(0), UpSum2(0), DownSum2(0), UpAvg2(0), DownAvg2(0),PreUpAvg2(0), preDownAvg2(0),RSI2(0); Array : C1[100](0); if DayOfWeek(Bdate) < DayOfWeek(Bdate[1]) Then { for cnt = 99 downto 1 { C1[cnt] = C1[cnt-1]; } PreUpAvg1 = UpAvg1[1]; preDownAvg1 = DownAvg1[1]; PreUpAvg2 = UpAvg2[1]; preDownAvg2 = DownAvg2[1]; idx = idx + 1; } C1[0] = C; If idx == Period1+2 Then { UpSum1 = 0; DownSum1 = 0; For cnt = 0 To Period1 - 1 { UpAmt1 = C1[cnt] - C1[cnt+1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else { DownAmt1 = -UpAmt1; UpAmt1 = 0; } UpSum1 = UpSum1 + UpAmt1; DownSum1 = DownSum1 + DownAmt1; } UpAvg1 = UpSum1 / Period1; DownAvg1 = DownSum1 / Period1; } If idx > Period1+2 Then { UpAmt1 = C1[0] - C1[1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else { DownAmt1 = -UpAmt1; UpAmt1 = 0; } UpAvg1 = (PreUpAvg1 * (Period1 - 1) + UpAmt1) / Period1; DownAvg1 = (preDownAvg1 * (Period1 - 1) + DownAmt1) / Period1; } If UpAvg1 + DownAvg1 <> 0 Then RSI1 = 100 * UpAvg1 / (UpAvg1 + DownAvg1); Else RSI1 = 0; RSI2 = RSI(Period2); if RSI1 >= 30 and RSI1 <= 70 and RSI2 <= 30 Then Buy("b"); if MarketPosition == 1 Then { if RSI2 >= 70 Then ExitLong(); } 2 Input : Period1(12),Period2(14); var : cnt(0),S1(0),D1(0),TM(0),TF1(0),idx(0); Var : DownAmt1(0), UpAmt1(0), UpSum1(0), DownSum1(0), UpAvg1(0), DownAvg1(0),PreUpAvg1(0), preDownAvg1(0),RSI1(0); Var : DownAmt2(0), UpAmt2(0), UpSum2(0), DownSum2(0), UpAvg2(0), DownAvg2(0),PreUpAvg2(0), preDownAvg2(0),RSI2(0); Array : C1[100](0); if DayOfWeek(Bdate) < DayOfWeek(Bdate[1]) Then { for cnt = 99 downto 1 { C1[cnt] = C1[cnt-1]; } PreUpAvg1 = UpAvg1[1]; preDownAvg1 = DownAvg1[1]; PreUpAvg2 = UpAvg2[1]; preDownAvg2 = DownAvg2[1]; idx = idx + 1; } C1[0] = C; If idx == Period1+2 Then { UpSum1 = 0; DownSum1 = 0; For cnt = 0 To Period1 - 1 { UpAmt1 = C1[cnt] - C1[cnt+1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else { DownAmt1 = -UpAmt1; UpAmt1 = 0; } UpSum1 = UpSum1 + UpAmt1; DownSum1 = DownSum1 + DownAmt1; } UpAvg1 = UpSum1 / Period1; DownAvg1 = DownSum1 / Period1; } If idx > Period1+2 Then { UpAmt1 = C1[0] - C1[1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else { DownAmt1 = -UpAmt1; UpAmt1 = 0; } UpAvg1 = (PreUpAvg1 * (Period1 - 1) + UpAmt1) / Period1; DownAvg1 = (preDownAvg1 * (Period1 - 1) + DownAmt1) / Period1; } If UpAvg1 + DownAvg1 <> 0 Then RSI1 = 100 * UpAvg1 / (UpAvg1 + DownAvg1); Else RSI1 = 0; RSI2 = RSI(Period2); if MarketPosition == 0 and RSI1 >= 30 and RSI1 <= 70 and RSI2 <= 30 Then Buy("b"); if MarketPosition == 1 Then { if RSI2 <= 30 Then Buy("bb"); if RSI2 >= 70 Then ExitLong(); } 즐거운 하루되세요 > 왕밥빵 님이 쓴 글입니다. > 제목 : 부탁드립니다 > 안녕하세요 예스스탁입니다. 피라미딩을 모든진입신호허용으로 설정하고 적용하시면 됩니다. Input : Period1(12),Period2(14); var : cnt(0),S1(0),D1(0),TM(0),TF1(0),idx(0); Var : DownAmt1(0), UpAmt1(0), UpSum1(0), DownSum1(0), UpAvg1(0), DownAvg1(0),PreUpAvg1(0), preDownAvg1(0),RSI1(0); Var : DownAmt2(0), UpAmt2(0), UpSum2(0), DownSum2(0), UpAvg2(0), DownAvg2(0),PreUpAvg2(0), preDownAvg2(0),RSI2(0); Array : C1[100](0); if DayOfWeek(Bdate) < DayOfWeek(Bdate[1]) Then { for cnt = 99 downto 1 { C1[cnt] = C1[cnt-1]; } PreUpAvg1 = UpAvg1[1]; preDownAvg1 = DownAvg1[1]; PreUpAvg2 = UpAvg2[1]; preDownAvg2 = DownAvg2[1]; idx = idx + 1; } C1[0] = C; If idx == Period1+2 Then { UpSum1 = 0; DownSum1 = 0; For cnt = 0 To Period1 - 1 { UpAmt1 = C1[cnt] - C1[cnt+1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else { DownAmt1 = -UpAmt1; UpAmt1 = 0; } UpSum1 = UpSum1 + UpAmt1; DownSum1 = DownSum1 + DownAmt1; } UpAvg1 = UpSum1 / Period1; DownAvg1 = DownSum1 / Period1; } If idx > Period1+2 Then { UpAmt1 = C1[0] - C1[1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else { DownAmt1 = -UpAmt1; UpAmt1 = 0; } UpAvg1 = (PreUpAvg1 * (Period1 - 1) + UpAmt1) / Period1; DownAvg1 = (preDownAvg1 * (Period1 - 1) + DownAmt1) / Period1; } If UpAvg1 + DownAvg1 <> 0 Then RSI1 = 100 * UpAvg1 / (UpAvg1 + DownAvg1); Else RSI1 = 0; If idx == Period2+2 Then { UpSum2 = 0; DownSum2 = 0; For cnt = 0 To Period2 - 1 { UpAmt2 = C1[cnt] - C1[cnt+1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else { DownAmt2 = -UpAmt2; UpAmt2 = 0; } UpSum2 = UpSum2 + UpAmt2; DownSum2 = DownSum2 + DownAmt2; } UpAvg2 = UpSum2 / Period2; DownAvg2 = DownSum2 / Period2; } If idx > Period1+2 Then { UpAmt2 = C1[0] - C1[1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else { DownAmt2 = -UpAmt2; UpAmt2 = 0; } UpAvg2 = (PreUpAvg2 * (Period2 - 1) + UpAmt2) / Period2; DownAvg2 = (preDownAvg2 * (Period2 - 1) + DownAmt2) / Period2; } If UpAvg2 + DownAvg2 <> 0 Then RSI2 = 100 * UpAvg2 / (UpAvg2 + DownAvg2); Else RSI2 = 0; if RSI1 >= 30 and RSI1 <= 70 and RSI2 <= 30 Then Buy("b"); if MarketPosition == 1 Then { if RSI2 >= 70 Then ExitLong(); } 즐거운 하루되세요 > 왕밥빵 님이 쓴 글입니다. > 제목 : 부탁드립니다 > 일봉상에 사용할건데 주봉 rsi 기간 12 값 30~70, rsi 기간 14 값 30 이하 금일 종가에 매수 추가매수때는 30이하 반복시 하루한번 종가 추가매수, rsi 기간 14 값 70 이상시 매도 제가 질문을 잘못했네요 일봉상 사용하는데 주봉 rsi 기간 12 값 30~70, 일봉rsi 기간 14 값 30이하 금일 종가에 매수, 추가매수때는 일봉상 rsi가 30이하 반복시 종가 추가매수, 일봉 rsi 기간 14 값 70 이상시 매도입니다