커뮤니티

문의드립니다.

프로필 이미지
잡다백수
2018-02-08 10:49:56
165
글번호 116435
답변완료
매번 고맙습니다. 1. 시스템 분봉 외부변수 금액,n개봉,RSI기간,타주기봉기간 진입 1-타주기 이평 40이상에서 타주기 RSI가 2봉 연속 25이하면 금액의 10% 매수 2-1에서 n개봉 지났는데 1보다 가격이 낮으면 20% 매수 3-2에서 n개봉 지났는데 2보다 가격이 낮으면 30% 매수 청산 -1,2,3, 진행하는 동안 RSI가 70에 도달하면 추가 매수는 안하고 모두 청산. -3까지 진행된 뒤 RSI가 70까지 도달하지 못하고 전체포지션 손실률이 n2%에 도달하면 청산
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2018-02-08 15:00:57

안녕하세요 예스스탁입니다. input : 금액(10000000),n개봉(5),RSI기간(10),타주기봉기간(30),이평기간(40),n2(10); var : cnt(0),S1(0),D1(0),TM(0),TF1(0); var : SigSum(0),count2(0),RSIsig(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0),PreRSIv(0),sum(0),mav(0),ii(0); Array : C1[100](0); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF1 = TimeToMinutes(stime)%타주기봉기간; if Bdate != Bdate[1] or (bdate == bdate[1] and TF1 < TF1[1]) Then{ for cnt = 1 to 99{ C1[cnt] = C1[cnt-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; idx = idx + 1; PreRSIv = RSIV[1]; } C1[0] = C; If idx == RSI기간+2 Then { UpSum = 0; DownSum = 0; For Counter = 0 To RSI기간 - 1 { UpAmt = C1[Counter] - C1[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else{ DownAmt = -UpAmt; UpAmt = 0; } UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; } UpAvg = UpSum / RSI기간; DownAvg = DownSum / RSI기간; } If idx > RSI기간+2 Then { UpAmt = C1[0] - C1[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpAvg = (PreUpAvg * (RSI기간 - 1) + UpAmt) / RSI기간; DownAvg = (preDownAvg * (RSI기간 - 1) + DownAmt) / RSI기간; } If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; if idx > 40 Then { sum = 0; for cnt = 0 to 이평기간-1 { sum = sum + C1[cnt]; } mav = sum/이평기간; } if (RSIv > 0 and mav > 0) then { if MarketPosition == 0 and C > mav and RSIV < 25 and preRSIV < 25 Then buy("b1",OnClose,def,floor((금액*0.1)/C)); if MarketPosition == 1 then { if CurrentContracts > CurrentContracts[1] Then ii = index; if MaxEntries == 1 and index == ii+n개봉 Then buy("b2",OnClose,def,floor((금액*0.2)/C)); if MaxEntries == 2 and index == ii+n개봉 Then buy("b3",OnClose,def,floor((금액*0.3)/C)); if RSIV >= 70 Then exitlong("bx1"); if MaxEntries == 3 Then exitlong("bl",AtStop,AvgEntryPrice*(1-n2/100)); } } } 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 매번 고맙습니다. 1. 시스템 분봉 외부변수 금액,n개봉,RSI기간,타주기봉기간 진입 1-타주기 이평 40이상에서 타주기 RSI가 2봉 연속 25이하면 금액의 10% 매수 2-1에서 n개봉 지났는데 1보다 가격이 낮으면 20% 매수 3-2에서 n개봉 지났는데 2보다 가격이 낮으면 30% 매수 청산 -1,2,3, 진행하는 동안 RSI가 70에 도달하면 추가 매수는 안하고 모두 청산. -3까지 진행된 뒤 RSI가 70까지 도달하지 못하고 전체포지션 손실률이 n2%에 도달하면 청산
프로필 이미지

잡다백수

2018-02-08 15:42:57

코딩감사합니다. 몇가지 궁금한 게 있어 재질문드립니다. 만약에 저렇게 타주기로 안하고 그냥 본주기RSI 연속 2이하로 하려면 1. RSI < 25 and RSI[1] < 25 then 이런 식으로 표현하면 되는지요. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. input : 금액(10000000),n개봉(5),RSI기간(10),타주기봉기간(30),이평기간(40),n2(10); var : cnt(0),S1(0),D1(0),TM(0),TF1(0); var : SigSum(0),count2(0),RSIsig(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0),PreRSIv(0),sum(0),mav(0),ii(0); Array : C1[100](0); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF1 = TimeToMinutes(stime)%타주기봉기간; if Bdate != Bdate[1] or (bdate == bdate[1] and TF1 < TF1[1]) Then{ for cnt = 1 to 99{ C1[cnt] = C1[cnt-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; idx = idx + 1; PreRSIv = RSIV[1]; } C1[0] = C; If idx == RSI기간+2 Then { UpSum = 0; DownSum = 0; For Counter = 0 To RSI기간 - 1 { UpAmt = C1[Counter] - C1[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else{ DownAmt = -UpAmt; UpAmt = 0; } UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; } UpAvg = UpSum / RSI기간; DownAvg = DownSum / RSI기간; } If idx > RSI기간+2 Then { UpAmt = C1[0] - C1[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpAvg = (PreUpAvg * (RSI기간 - 1) + UpAmt) / RSI기간; DownAvg = (preDownAvg * (RSI기간 - 1) + DownAmt) / RSI기간; } If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; if idx > 40 Then { sum = 0; for cnt = 0 to 이평기간-1 { sum = sum + C1[cnt]; } mav = sum/이평기간; } if (RSIv > 0 and mav > 0) then { if MarketPosition == 0 and C > mav and RSIV < 25 and preRSIV < 25 Then buy("b1",OnClose,def,floor((금액*0.1)/C)); if MarketPosition == 1 then { if CurrentContracts > CurrentContracts[1] Then ii = index; if MaxEntries == 1 and index == ii+n개봉 Then buy("b2",OnClose,def,floor((금액*0.2)/C)); if MaxEntries == 2 and index == ii+n개봉 Then buy("b3",OnClose,def,floor((금액*0.3)/C)); if RSIV >= 70 Then exitlong("bx1"); if MaxEntries == 3 Then exitlong("bl",AtStop,AvgEntryPrice*(1-n2/100)); } } } 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 매번 고맙습니다. 1. 시스템 분봉 외부변수 금액,n개봉,RSI기간,타주기봉기간 진입 1-타주기 이평 40이상에서 타주기 RSI가 2봉 연속 25이하면 금액의 10% 매수 2-1에서 n개봉 지났는데 1보다 가격이 낮으면 20% 매수 3-2에서 n개봉 지났는데 2보다 가격이 낮으면 30% 매수 청산 -1,2,3, 진행하는 동안 RSI가 70에 도달하면 추가 매수는 안하고 모두 청산. -3까지 진행된 뒤 RSI가 70까지 도달하지 못하고 전체포지션 손실률이 n2%에 도달하면 청산
프로필 이미지

예스스탁 예스스탁 답변

2018-02-08 15:52:10

안녕하세요 예스스탁입니다. 예 맞습니다. RSI가 타주기 계산값이 아니면 올리신 내용과 같이 지정하시면 됩니다. 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : Re : Re : 문의드립니다. > 코딩감사합니다. 몇가지 궁금한 게 있어 재질문드립니다. 만약에 저렇게 타주기로 안하고 그냥 본주기RSI 연속 2이하로 하려면 1. RSI < 25 and RSI[1] < 25 then 이런 식으로 표현하면 되는지요. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. input : 금액(10000000),n개봉(5),RSI기간(10),타주기봉기간(30),이평기간(40),n2(10); var : cnt(0),S1(0),D1(0),TM(0),TF1(0); var : SigSum(0),count2(0),RSIsig(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0),PreRSIv(0),sum(0),mav(0),ii(0); Array : C1[100](0); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF1 = TimeToMinutes(stime)%타주기봉기간; if Bdate != Bdate[1] or (bdate == bdate[1] and TF1 < TF1[1]) Then{ for cnt = 1 to 99{ C1[cnt] = C1[cnt-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; idx = idx + 1; PreRSIv = RSIV[1]; } C1[0] = C; If idx == RSI기간+2 Then { UpSum = 0; DownSum = 0; For Counter = 0 To RSI기간 - 1 { UpAmt = C1[Counter] - C1[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else{ DownAmt = -UpAmt; UpAmt = 0; } UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; } UpAvg = UpSum / RSI기간; DownAvg = DownSum / RSI기간; } If idx > RSI기간+2 Then { UpAmt = C1[0] - C1[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpAvg = (PreUpAvg * (RSI기간 - 1) + UpAmt) / RSI기간; DownAvg = (preDownAvg * (RSI기간 - 1) + DownAmt) / RSI기간; } If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; if idx > 40 Then { sum = 0; for cnt = 0 to 이평기간-1 { sum = sum + C1[cnt]; } mav = sum/이평기간; } if (RSIv > 0 and mav > 0) then { if MarketPosition == 0 and C > mav and RSIV < 25 and preRSIV < 25 Then buy("b1",OnClose,def,floor((금액*0.1)/C)); if MarketPosition == 1 then { if CurrentContracts > CurrentContracts[1] Then ii = index; if MaxEntries == 1 and index == ii+n개봉 Then buy("b2",OnClose,def,floor((금액*0.2)/C)); if MaxEntries == 2 and index == ii+n개봉 Then buy("b3",OnClose,def,floor((금액*0.3)/C)); if RSIV >= 70 Then exitlong("bx1"); if MaxEntries == 3 Then exitlong("bl",AtStop,AvgEntryPrice*(1-n2/100)); } } } 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 매번 고맙습니다. 1. 시스템 분봉 외부변수 금액,n개봉,RSI기간,타주기봉기간 진입 1-타주기 이평 40이상에서 타주기 RSI가 2봉 연속 25이하면 금액의 10% 매수 2-1에서 n개봉 지났는데 1보다 가격이 낮으면 20% 매수 3-2에서 n개봉 지났는데 2보다 가격이 낮으면 30% 매수 청산 -1,2,3, 진행하는 동안 RSI가 70에 도달하면 추가 매수는 안하고 모두 청산. -3까지 진행된 뒤 RSI가 70까지 도달하지 못하고 전체포지션 손실률이 n2%에 도달하면 청산