커뮤니티

재문의드립니다ㅜ 감사합니다

프로필 이미지
노아
2021-03-18 16:11:02
1180
글번호 147222
답변완료
답변해주셔서 정말 정말 감사합니다 제가 설명을 잘못드린것 같아 죄송합니다ㅜㅜ 1. 월 거래량을 20만으로 부탁을 드렸는데 그게 아니라 혹시 한달동안 일일 거래량이 20만이상이 되게 하고 싶은데 혹시 수정가능한가요?? 2. 그리고 제가 계속 공부하고 있는데 설정해주신 내부변수들이 어떤걸 의미하고 있는지 몰라서 그러는데 설명 해주실 수 있으신가요?ㅜㅜ 3. 마지막으로 cond가 어떤 건지 아직 잘 이해가 안되는데 혹시 설명해주실수있으신가요?? 친절하게 답변주셔서 정말 감사드리고 번거롭게 해드려 죄송합니다ㅜ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 시스템 문의드립니다! > 안녕하세요 예스스탁입니다. 1 전략실행차트는 최대조회봉가 1만개 입니다. 5분봉으로는 약 27주 정도의 데이타분량입니다. 기본차트 자체에서 52주 최고가를 계산하기에는 봉수가 부족하게 됩니다. 그러므로 올려주신 내용은 차트에 참조데이타가 필요합니다. 기본차트는 분봉주기이고 참조데이타(data2)로 기본차트와 동일종목을 주봉으로 추가하고 참조데이타(data3)로 코스피를 기본차트와 동일하게 분봉으로 추가하신 후에 아래식 적용하시면 됩니다. 참조데이타는 차트왼쪽 상단의 종목선택버튼 중 오른쪽 클릭하면 선택해서 추가할수 있습니다. 기본차트와 동일종목을 다른주기로 추가가 가능합니다. 차트에 추가되는 순서로 data2부터 data99까지 데이타번호가 부여되므로 위 순서에 맞게 추가하셔야 합니다. 기본차트도 이번달거래량을 구하기 위해서 월초의 데이타부터 필요하므로 기본차트의 봉수도 넉넉히 지정해 주셔야 합니다. 차트조회건수는 최대 1만개까지 가능하므로 1만개 조회하시기 바랍니다. 3 input : 월거래량(200000),손실률(10),청산시기(7); var : WH52(0,Data2),MV(-1,data1),WH(-1,Data1),Cond(False,Data1),dd(0,Data1),ED(0,Data1); WH52 = data2(Highest(H,52)); if data1(Bdate > Bdate[1]+30) Then { MV = 0; cond = False; } if MV >= 0 Then MV = MV+M; if data1(DayOfWeek(Bdate) < DayOfWeek(Bdate[1])) Then WH = 0; if WH == 0 or (WH > 0 and H > WH) Then WH = H; if bdate != Bdate[1] Then dd = dd+1; if NextBarSdate != sDate Then { if WH > WH52 Then cond = true; if MV >= 월거래량 and cond == true and cond[1] == False Then Buy("b",AtMarket); } if MarketPosition == 1 Then { if MarketPosition != MarketPosition[1] Then ED = DD[BarsSinceEntry]; if sDate > EntryDate and data1(sTime >= 150500 and sTime[1] < 150500) and Data3(C<CloseD(1) and CloseD(1) < CloseD(2)) Then ExitLong("bx1"); if data1(sTime >= 150500 and sTime[1] < 150500) and DD == ED+청산시기 Then ExitLong("bx2"); } SetStopLoss(손실률,PercentStop); 즐거운 하루되세요 > 노아 님이 쓴 글입니다. > 제목 : 시스템 문의드립니다! > 안녕하세요 시스템 문의드립니다! 한달동안 거래량이 20만이 넘고 한달만에 처음 발생한 신고가가 52주 신고가를 갱신하면 익일 시가에 매수하고 7일 뒤에 청산 매수한날의 익일부터 코스피가 이틀 연속(둘째날은 15:05에 마이너스 일 경우) 마이너스일 경우 당일 종가 청산 손실률 -10%일 경우 시장가 청산 +거래량, 손실률,청산시기를 변수로 하여 최적화를 하려고합니다. 혹시 이런 수식도 작성 가능할까요?? 시스템 문의 부탁드리겠습니다! 감사합니다ㅜㅜ
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-03-18 17:09:26

안녕하세요 예스스탁입니다. 수정한 식입니다. cond변수는 이번달 처음으로 52주 신고가를 갱신한날을 체크하는 변수입니다. 월이 변경되면 false가 되고 이번주 최고가가 전주기준 52주 최고가보다 커지면 true가 됩니다. 거래량을 이번달 일평균으로 변경한 식입니다. 수식에 주석을 붙여드립니다. 식작성에 참고하시기 바랍니다. input : 월거래량(200000),손실률(10),청산시기(7); var : WH52(0,Data2),WH(-1,Data1),Cond(False,Data1),dd(0,Data1),ED(0,Data1); var : sum(0,Data1),MD(0,Data1),MV(0,data1),cnt(0,Data1); #Data2의 52개봉 최고가 #모든 데이타는 봉완성기준으로 값을 리턴하고 #Data2는 주봉이므로 아래와 같이 작성하면 전주기준 52주 최고가가 됩니다. #전주기준 52주 최고가는 Data2에서 가져오고 이번주 최고가는 기본차트에서 계산해 사용합니다. WH52 = data2(Highest(H,52)); #Data1 날짜 변경 if Data1(bdate != Bdate[1]) Then { #날짜수 카운트 DD = DD+1; #날짜변경인데 월변경일때 #변수 초기화 if data1(Bdate > Bdate[1]+30) Then { #한달의 날짜수 카운트해 저장하는 변수 #월변경시 0으로 초기화 MD = 0; #주최고가 갱신을 체크하는 변수 #월변경시 false로 초기화 cond = False; } #한달동안 일수 카운트 MD = MD+1; } #주변경 if data1(DayOfWeek(Bdate) < DayOfWeek(Bdate[1])) Then WH = 0; #주최고가 계산 if WH == 0 or (WH > 0 and H > WH) Then WH = H; #당일마지막봉 if NextBarSdate != sDate Then { #이번추 최고가가 52주 최고가보다 크면 #cond는 true if WH > WH52 Then cond = true; #이번달 일일평균 거래량 계산 if DD >= 1 Then { sum = 0; For cnt = 0 to DD-1 { sum = sum + DayVolume(cnt); } MV = sum/DD; } #이번달 일일평균거래량이 20만주이상이고 #이번달에 처음으로 52주 최고가 갱싱한 날이면 #매수 if MV >= 월거래량 and cond == true and cond[1] == False Then Buy("b",AtMarket); } #매수후 if MarketPosition == 1 Then { #매수시점의 날짜수 저장 if MarketPosition != MarketPosition[1] Then ED = DD[BarsSinceEntry]; #매수 다음날이고 #15시 05분이고 #data3이 2일연속 하락이면 #청산 if sDate > EntryDate and data1(sTime >= 150500 and sTime[1] < 150500) and Data3(C<CloseD(1) and CloseD(1) < CloseD(2)) Then ExitLong("bx1"); #매수진입후 7일이 경과한 날의 15시 5분에 청산 if data1(sTime >= 150500 and sTime[1] < 150500) and DD == ED+청산시기 Then ExitLong("bx2"); } # 10% 손실시 청 SetStopLoss(손실률,PercentStop); 즐거운 하루되세요 > 노아 님이 쓴 글입니다. > 제목 : 재문의드립니다ㅜ 감사합니다 > 답변해주셔서 정말 정말 감사합니다 제가 설명을 잘못드린것 같아 죄송합니다ㅜㅜ 1. 월 거래량을 20만으로 부탁을 드렸는데 그게 아니라 혹시 한달동안 일일 거래량이 20만이상이 되게 하고 싶은데 혹시 수정가능한가요?? 2. 그리고 제가 계속 공부하고 있는데 설정해주신 내부변수들이 어떤걸 의미하고 있는지 몰라서 그러는데 설명 해주실 수 있으신가요?ㅜㅜ 3. 마지막으로 cond가 어떤 건지 아직 잘 이해가 안되는데 혹시 설명해주실수있으신가요?? 친절하게 답변주셔서 정말 감사드리고 번거롭게 해드려 죄송합니다ㅜ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 시스템 문의드립니다! > 안녕하세요 예스스탁입니다. 1 전략실행차트는 최대조회봉가 1만개 입니다. 5분봉으로는 약 27주 정도의 데이타분량입니다. 기본차트 자체에서 52주 최고가를 계산하기에는 봉수가 부족하게 됩니다. 그러므로 올려주신 내용은 차트에 참조데이타가 필요합니다. 기본차트는 분봉주기이고 참조데이타(data2)로 기본차트와 동일종목을 주봉으로 추가하고 참조데이타(data3)로 코스피를 기본차트와 동일하게 분봉으로 추가하신 후에 아래식 적용하시면 됩니다. 참조데이타는 차트왼쪽 상단의 종목선택버튼 중 오른쪽 클릭하면 선택해서 추가할수 있습니다. 기본차트와 동일종목을 다른주기로 추가가 가능합니다. 차트에 추가되는 순서로 data2부터 data99까지 데이타번호가 부여되므로 위 순서에 맞게 추가하셔야 합니다. 기본차트도 이번달거래량을 구하기 위해서 월초의 데이타부터 필요하므로 기본차트의 봉수도 넉넉히 지정해 주셔야 합니다. 차트조회건수는 최대 1만개까지 가능하므로 1만개 조회하시기 바랍니다. 3 input : 월거래량(200000),손실률(10),청산시기(7); var : WH52(0,Data2),MV(-1,data1),WH(-1,Data1),Cond(False,Data1),dd(0,Data1),ED(0,Data1); WH52 = data2(Highest(H,52)); if data1(Bdate > Bdate[1]+30) Then { MV = 0; cond = False; } if MV >= 0 Then MV = MV+M; if data1(DayOfWeek(Bdate) < DayOfWeek(Bdate[1])) Then WH = 0; if WH == 0 or (WH > 0 and H > WH) Then WH = H; if bdate != Bdate[1] Then dd = dd+1; if NextBarSdate != sDate Then { if WH > WH52 Then cond = true; if MV >= 월거래량 and cond == true and cond[1] == False Then Buy("b",AtMarket); } if MarketPosition == 1 Then { if MarketPosition != MarketPosition[1] Then ED = DD[BarsSinceEntry]; if sDate > EntryDate and data1(sTime >= 150500 and sTime[1] < 150500) and Data3(C<CloseD(1) and CloseD(1) < CloseD(2)) Then ExitLong("bx1"); if data1(sTime >= 150500 and sTime[1] < 150500) and DD == ED+청산시기 Then ExitLong("bx2"); } SetStopLoss(손실률,PercentStop); 즐거운 하루되세요 > 노아 님이 쓴 글입니다. > 제목 : 시스템 문의드립니다! > 안녕하세요 시스템 문의드립니다! 한달동안 거래량이 20만이 넘고 한달만에 처음 발생한 신고가가 52주 신고가를 갱신하면 익일 시가에 매수하고 7일 뒤에 청산 매수한날의 익일부터 코스피가 이틀 연속(둘째날은 15:05에 마이너스 일 경우) 마이너스일 경우 당일 종가 청산 손실률 -10%일 경우 시장가 청산 +거래량, 손실률,청산시기를 변수로 하여 최적화를 하려고합니다. 혹시 이런 수식도 작성 가능할까요?? 시스템 문의 부탁드리겠습니다! 감사합니다ㅜㅜ