커뮤니티

시스템식 수정 문의드립니다

프로필 이미지
kosto1
2016-06-14 22:28:26
106
글번호 99078
답변완료
안녕하세요. 신고가 조건을 수정하고 그에 따른 조건을 추가해보고 싶어 글 올립니다 항상 신경써주셔서 감사합니다!! 1 신고가 양봉돌파(O *1.03 < C) & 그 봉의 폭이 이전 최대폭보다 클때 폭계산 : 1 조건의 신고가 봉만 저가를 봉의 고가로 처리해서 폭계산(DIFF = HV-LV=0), 다음 신고가 돌파까지 1조건의 신고가봉만 저가를 H로 고정 다음봉 부터는 폭계산식 그대로 계산 진입 : 현재식 그대로 진입 2. 신고가 양봉돌파(O *1.03 < C) & 그 봉의 폭이 이전 최대폭보다 작을때 폭 계산: 폭계산식 그대로 계산 진입 : 현재식 그대로 진입 3. 신고가 음봉돌파(O *1.03 > C) 했을때 폭 계산 : 폭계산식 그대로 계산 진입 : 신고가 재돌파 시까지 진입금지 -------------------------------------------------------------------------------- input : P(20),시작날짜(20160108),매수1차(1000000),매수2차(1500000),매수3차(2000000); var : T(0),HH(0),Price1(0),Price2(0),Price3(0),diff(0),maxdiff(0),Lv(0),sum(0),mav(0),cnt(0),Hv(0),entry(false); var : dayhh(0),EnvelUp(0),Percent(20); sum = 0; dayhh = dayhigh(0); for cnt = 0 to P-1{ sum = sum+DayClose(cnt); if dayhigh(cnt) > dayhh Then dayhh = dayhigh(cnt); } mav = sum/P; EnvelUp = maV + maV * (Percent / 100); ######## 매수전 조건 ############## if sdate >= 시작날짜 then{ if crossup(L,mav) Then{ T = 1; diff = 0; maxdiff = 0; Condition1 = false; entry = false; } if CrossDown(H,mav) Then{ T = -1; Condition1 = false; entry = false; } ##### 신고가 조건 ############ if dayhh > dayhh[1] Then{ Condition1 = true; entry = true; Hv = H; Lv = L; } ######### 폭계산식 ############### if T == 1 and Condition1 == true Then{ if H > Hv Then Hv = H; if L < Lv Then Lv = L; diff = Hv-Lv; if diff > maxdiff Then maxdiff = diff; Price1 = Hv-maxdiff*1; Price2 = Hv-maxdiff*2; Price3 = Hv-maxdiff*3; } if MarketPosition == 1 Then entry = false; #가격이 하락해 1차매수가격 이하이면 매수 if MarketPosition == 0 and Condition1 == true and entry == true and L > mav and Hv >= Price1*1.025 Then buy("b1",atlimit,Price1,Floor(매수1차/C)); #가격이 하락해 2차매수가격 이하이면 매수 if MarketPosition == 1 and MaxEntries == 1 and Price2[BarsSinceEntry+1] > 0 Then buy("b2",atlimit,Price2[BarsSinceEntry+1],Floor(매수2차/C)); #가격이 하락해 3차매수가격 이하이면 매수 if MarketPosition == 1 and MaxEntries == 2 and Price3[BarsSinceEntry+1] > 0 Then buy("b3",atlimit,Price3[BarsSinceEntry+1],Floor(매수3차/C)); if MarketPosition == 1 Then{ #진입이후로 한번도 선 아래로 내려가지 않은경우 #진입이후 최저가에서 폭만큼 상승하면 청산 if countif(L<mav,BarsSinceEntry) == 0 Then ExitLong("bx1",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]); #진입이후로 20선 아래로 한번이상 내려간 경우 #진입이후 최저가에서 폭의 절반만큼 상승하면 청산 if countif(L<mav,BarsSinceEntry) >= 1 Then ExitLong("bx2",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.5); #일괄매도 = 현재 20일 신고가 이후 최저가 + 최대폭(75%) ExitLong("일괄매도",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.75); if MaxEntries == 2 Then exitlong("본절2",atlimit,(Price1[BarsSinceEntry+1]+Price2[BarsSinceEntry+1])/2); if MaxEntries == 3 Then exitlong("본절3",atlimit,Price2[BarsSinceEntry+1]); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-06-15 17:11:12

안녕하세요 예스스탁입니다. input : P(20),시작날짜(20160108),매수1차(1000000),매수2차(1500000),매수3차(2000000); var : T(0),HH(0),Price1(0),Price2(0),Price3(0),diff(0),maxdiff(0),Lv(0),sum(0),mav(0),cnt(0),Hv(0),entry(false); var : dayhh(0),EnvelUp(0),Percent(20); sum = 0; dayhh = dayhigh(0); for cnt = 0 to P-1{ sum = sum+DayClose(cnt); if dayhigh(cnt) > dayhh Then dayhh = dayhigh(cnt); } mav = sum/P; EnvelUp = maV + maV * (Percent / 100); ######## 매수전 조건 ############## if sdate >= 시작날짜 then{ if crossup(L,mav) Then{ T = 1; diff = 0; maxdiff = 0; Condition1 = false; entry = false; } if CrossDown(H,mav) Then{ T = -1; Condition1 = false; entry = false; } ##### 신고가 조건 ############ if dayhh > dayhh[1] Then{ Condition1 = true; if O*1.03 < C then{ entry = true; if H-L > maxdiff Then{ Hv = H; Lv = H; } Else{ Hv = H; Lv = L; } } else{ entry = true; Hv = H; Lv = L; } } ######### 폭계산식 ############### if T == 1 and Condition1 == true Then{ if H > Hv Then Hv = H; if L < Lv Then Lv = L; diff = Hv-Lv; if diff > maxdiff Then maxdiff = diff; Price1 = Hv-maxdiff*1; Price2 = Hv-maxdiff*2; Price3 = Hv-maxdiff*3; } if MarketPosition == 1 Then entry = false; #가격이 하락해 1차매수가격 이하이면 매수 if MarketPosition == 0 and Condition1 == true and entry == true and L > mav and Hv >= Price1*1.025 Then buy("b1",atlimit,Price1,Floor(매수1차/C)); #가격이 하락해 2차매수가격 이하이면 매수 if MarketPosition == 1 and MaxEntries == 1 and Price2[BarsSinceEntry+1] > 0 Then buy("b2",atlimit,Price2[BarsSinceEntry+1],Floor(매수2차/C)); #가격이 하락해 3차매수가격 이하이면 매수 if MarketPosition == 1 and MaxEntries == 2 and Price3[BarsSinceEntry+1] > 0 Then buy("b3",atlimit,Price3[BarsSinceEntry+1],Floor(매수3차/C)); if MarketPosition == 1 Then{ #진입이후로 한번도 선 아래로 내려가지 않은경우 #진입이후 최저가에서 폭만큼 상승하면 청산 if countif(L<mav,BarsSinceEntry) == 0 Then ExitLong("bx1",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]); #진입이후로 20선 아래로 한번이상 내려간 경우 #진입이후 최저가에서 폭의 절반만큼 상승하면 청산 if countif(L<mav,BarsSinceEntry) >= 1 Then ExitLong("bx2",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.5); #일괄매도 = 현재 20일 신고가 이후 최저가 + 최대폭(75%) ExitLong("일괄매도",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.75); if MaxEntries == 2 Then exitlong("본절2",atlimit,(Price1[BarsSinceEntry+1]+Price2[BarsSinceEntry+1])/2); if MaxEntries == 3 Then exitlong("본절3",atlimit,Price2[BarsSinceEntry+1]); } } 즐거운 하루되세요 > kosto1 님이 쓴 글입니다. > 제목 : 시스템식 수정 문의드립니다 > 안녕하세요. 신고가 조건을 수정하고 그에 따른 조건을 추가해보고 싶어 글 올립니다 항상 신경써주셔서 감사합니다!! 1 신고가 양봉돌파(O *1.03 < C) & 그 봉의 폭이 이전 최대폭보다 클때 폭계산 : 1 조건의 신고가 봉만 저가를 봉의 고가로 처리해서 폭계산(DIFF = HV-LV=0), 다음 신고가 돌파까지 1조건의 신고가봉만 저가를 H로 고정 다음봉 부터는 폭계산식 그대로 계산 진입 : 현재식 그대로 진입 2. 신고가 양봉돌파(O *1.03 < C) & 그 봉의 폭이 이전 최대폭보다 작을때 폭 계산: 폭계산식 그대로 계산 진입 : 현재식 그대로 진입 3. 신고가 음봉돌파(O *1.03 > C) 했을때 폭 계산 : 폭계산식 그대로 계산 진입 : 신고가 재돌파 시까지 진입금지 -------------------------------------------------------------------------------- input : P(20),시작날짜(20160108),매수1차(1000000),매수2차(1500000),매수3차(2000000); var : T(0),HH(0),Price1(0),Price2(0),Price3(0),diff(0),maxdiff(0),Lv(0),sum(0),mav(0),cnt(0),Hv(0),entry(false); var : dayhh(0),EnvelUp(0),Percent(20); sum = 0; dayhh = dayhigh(0); for cnt = 0 to P-1{ sum = sum+DayClose(cnt); if dayhigh(cnt) > dayhh Then dayhh = dayhigh(cnt); } mav = sum/P; EnvelUp = maV + maV * (Percent / 100); ######## 매수전 조건 ############## if sdate >= 시작날짜 then{ if crossup(L,mav) Then{ T = 1; diff = 0; maxdiff = 0; Condition1 = false; entry = false; } if CrossDown(H,mav) Then{ T = -1; Condition1 = false; entry = false; } ##### 신고가 조건 ############ if dayhh > dayhh[1] Then{ Condition1 = true; entry = true; Hv = H; Lv = L; } ######### 폭계산식 ############### if T == 1 and Condition1 == true Then{ if H > Hv Then Hv = H; if L < Lv Then Lv = L; diff = Hv-Lv; if diff > maxdiff Then maxdiff = diff; Price1 = Hv-maxdiff*1; Price2 = Hv-maxdiff*2; Price3 = Hv-maxdiff*3; } if MarketPosition == 1 Then entry = false; #가격이 하락해 1차매수가격 이하이면 매수 if MarketPosition == 0 and Condition1 == true and entry == true and L > mav and Hv >= Price1*1.025 Then buy("b1",atlimit,Price1,Floor(매수1차/C)); #가격이 하락해 2차매수가격 이하이면 매수 if MarketPosition == 1 and MaxEntries == 1 and Price2[BarsSinceEntry+1] > 0 Then buy("b2",atlimit,Price2[BarsSinceEntry+1],Floor(매수2차/C)); #가격이 하락해 3차매수가격 이하이면 매수 if MarketPosition == 1 and MaxEntries == 2 and Price3[BarsSinceEntry+1] > 0 Then buy("b3",atlimit,Price3[BarsSinceEntry+1],Floor(매수3차/C)); if MarketPosition == 1 Then{ #진입이후로 한번도 선 아래로 내려가지 않은경우 #진입이후 최저가에서 폭만큼 상승하면 청산 if countif(L<mav,BarsSinceEntry) == 0 Then ExitLong("bx1",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]); #진입이후로 20선 아래로 한번이상 내려간 경우 #진입이후 최저가에서 폭의 절반만큼 상승하면 청산 if countif(L<mav,BarsSinceEntry) >= 1 Then ExitLong("bx2",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.5); #일괄매도 = 현재 20일 신고가 이후 최저가 + 최대폭(75%) ExitLong("일괄매도",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.75); if MaxEntries == 2 Then exitlong("본절2",atlimit,(Price1[BarsSinceEntry+1]+Price2[BarsSinceEntry+1])/2); if MaxEntries == 3 Then exitlong("본절3",atlimit,Price2[BarsSinceEntry+1]); } }