커뮤니티

이평선관련 문의사항입니다.

프로필 이미지
청룡
2010-11-12 05:25:06
859
글번호 33539
답변완료
5분차트에서 이동평균선 5, 20, 60, 120을 이용한 골든, 데드크로스전략을 만들려고 합니다. 1. 시초가에서의 신호는 제외 2. 오후3시5분에 강제청산 3. 5 이평선과 20 이평선의 골든크로스발생 후 다른 골든 또는 데드크로스신호가 3봉이내에 발생할 때 5 이평선과 20 이평선의 골든크로스신호는 받아들이고 다른 신호는 무시. 이것을 (5,20)(5,60)(5,120)(20,60)(20,120)...등의 경우의 수를 모두 비교하여 성과평가가 가능한 식을 만드려 합니다.(참조값만 변화시켜서 만드는 방법이 있는지, 자동으로 모든 경우의수를 비교하는 방법은 있는지(최적화)도 알려주시면 감사하겠습니다.)
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2010-11-12 09:44:58

안녕하세요 예스스탁입니다. input : P1(5),P2(20); var1 = ma(c,P1); var2 = ma(c,P2); if dayindex > 0 and P1 < P2 Then{ if crossup(var1,var2) Then buy(); if CrossDown(var1,var2) Then sell(); } SetStopEndofday(150400); 위식을 차트에 적용하신 후에 input 변수를(5-20 5-60..) 하나하나 변경하셔서 리포트를 확인해 보시는 방법도 있고 아래와 같이 최적화를 통해 확인해 보시는 방법도 있습니다. 5이평과 다른 기간의 이평의 골든데드크로스로 리포트를 비교하여 보고자 하신다면 시뮬레이션에서 변수 최적화기능을 사용하시면 됩니다. 1. 시뮬레이션 차트 실행 2. 봉의 주기와 기간을 설정하여 데이터 로드 3. 위 시스템 적용 4. 시스템 트레딩 설정창의 변수 탭에서 P1,P2변수 최적화 설정 5. 특정 값 몇개로 지정이 불가능 하므로 적당한 최적화를 범위로 지정하셔야 합니다. 6, P1 : 최소값 5 최대값 60 증가단위 5 7, P2 : 최소값 20 최대값 120 증가단위 20 위와 같이 설정하시고 최적화를 수행하면 첨부된 그림과 같은 보고서를 보실 수 있습니다. 각 조합변 리포트를 한눈에 보실 수 있습니다. 즐거운 하루되세요 > 청룡 님이 쓴 글입니다. > 제목 : 이평선관련 문의사항입니다. > 5분차트에서 이동평균선 5, 20, 60, 120을 이용한 골든, 데드크로스전략을 만들려고 합니다. 1. 시초가에서의 신호는 제외 2. 오후3시5분에 강제청산 3. 5 이평선과 20 이평선의 골든크로스발생 후 다른 골든 또는 데드크로스신호가 3봉이내에 발생할 때 5 이평선과 20 이평선의 골든크로스신호는 받아들이고 다른 신호는 무시. 이것을 (5,20)(5,60)(5,120)(20,60)(20,120)...등의 경우의 수를 모두 비교하여 성과평가가 가능한 식을 만드려 합니다.(참조값만 변화시켜서 만드는 방법이 있는지, 자동으로 모든 경우의수를 비교하는 방법은 있는지(최적화)도 알려주시면 감사하겠습니다.)
프로필 이미지

청룡

2010-11-12 10:22:08

제가 구현하고자 하는 것은 "5,20,60,120이평선을 한번에 써서" 5와20이평선이든 20과120이평선이든 골든이 나오면 매수 데드가 나오면 매도를 하되 한개의 신호가 나온 후 여러개의 신호가 3봉 이내에 한번에 나올경우 "처음 신호만 받아들이고 3봉이내의 나머지 신호는 무시하는 방법" 입니다. 즉, 신호가 동시에 나올경우 "우선순위를 정해서" 신호를 받아들이고 나머지 신호는 무시하는 방법입니다. 이것을 구현할 수 있는 방법을 알고 싶습니다. 감사합니다 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 이평선관련 문의사항입니다. > 안녕하세요 예스스탁입니다. input : P1(5),P2(20); var1 = ma(c,P1); var2 = ma(c,P2); if dayindex > 0 and P1 < P2 Then{ if crossup(var1,var2) Then buy(); if CrossDown(var1,var2) Then sell(); } SetStopEndofday(150400); 위식을 차트에 적용하신 후에 input 변수를(5-20 5-60..) 하나하나 변경하셔서 리포트를 확인해 보시는 방법도 있고 아래와 같이 최적화를 통해 확인해 보시는 방법도 있습니다. 5이평과 다른 기간의 이평의 골든데드크로스로 리포트를 비교하여 보고자 하신다면 시뮬레이션에서 변수 최적화기능을 사용하시면 됩니다. 1. 시뮬레이션 차트 실행 2. 봉의 주기와 기간을 설정하여 데이터 로드 3. 위 시스템 적용 4. 시스템 트레딩 설정창의 변수 탭에서 P1,P2변수 최적화 설정 5. 특정 값 몇개로 지정이 불가능 하므로 적당한 최적화를 범위로 지정하셔야 합니다. 6, P1 : 최소값 5 최대값 60 증가단위 5 7, P2 : 최소값 20 최대값 120 증가단위 20 위와 같이 설정하시고 최적화를 수행하면 첨부된 그림과 같은 보고서를 보실 수 있습니다. 각 조합변 리포트를 한눈에 보실 수 있습니다. 즐거운 하루되세요 > 청룡 님이 쓴 글입니다. > 제목 : 이평선관련 문의사항입니다. > 5분차트에서 이동평균선 5, 20, 60, 120을 이용한 골든, 데드크로스전략을 만들려고 합니다. 1. 시초가에서의 신호는 제외 2. 오후3시5분에 강제청산 3. 5 이평선과 20 이평선의 골든크로스발생 후 다른 골든 또는 데드크로스신호가 3봉이내에 발생할 때 5 이평선과 20 이평선의 골든크로스신호는 받아들이고 다른 신호는 무시. 이것을 (5,20)(5,60)(5,120)(20,60)(20,120)...등의 경우의 수를 모두 비교하여 성과평가가 가능한 식을 만드려 합니다.(참조값만 변화시켜서 만드는 방법이 있는지, 자동으로 모든 경우의수를 비교하는 방법은 있는지(최적화)도 알려주시면 감사하겠습니다.)
프로필 이미지

예스스탁 예스스탁 답변

2010-11-12 11:06:19

안녕하세요 예스스탁입니다. 아래식을 참고하시기 바랍니다. 주석은 5-20의 경우만 달아드렸습니다. Condition1 = crossup(ma(C,5),ma(C,20)); Condition2 = crossup(ma(C,5),ma(C,20)); Condition3 = crossup(ma(C,5),ma(C,60)); Condition4 = crossup(ma(C,5),ma(C,120)); Condition5 = crossup(ma(C,20),ma(C,60)); Condition6 = crossup(ma(C,20),ma(C,120)); Condition7 = crossup(ma(c,60),ma(c,120)); Condition11 = CrossDown(ma(C,5),ma(C,20)); Condition12 = CrossDown(ma(C,5),ma(C,20)); Condition13 = CrossDown(ma(C,5),ma(C,60)); Condition14 = CrossDown(ma(C,5),ma(C,120)); Condition15 = CrossDown(ma(C,20),ma(C,60)); Condition16 = CrossDown(ma(C,20),ma(C,120)); Condition17 = CrossDown(ma(c,60),ma(c,120)); if dayindex > 0 then{ #첫봉이후 if Condition1 Then{ if MarketPosition == 0 or # 무포지션일때 이전상황 관계없이 진입 (MarketPosition == -1 and IsEntryName("s1") == true) or # 매도상태이고 진입이 S1이면 진입봉수 관계없이 진입 (MarketPosition == -1 and IsEntryName("s1") == false and BarsSinceEntry > 3) Then# 매도상태이고 진입이 S1이 아니면 진입봉수 3봉 이후에 진입 buy("b1"); } if Condition2 Then{ if MarketPosition == 0 or (MarketPosition == -1 and IsEntryName("s2") == true) or (MarketPosition == -1 and IsEntryName("s2") == false and BarsSinceEntry > 3) Then buy("b2"); } if Condition3 Then{ if MarketPosition == 0 or (MarketPosition == -1 and IsEntryName("s3") == true) or (MarketPosition == -1 and IsEntryName("s3") == false and BarsSinceEntry > 3) Then buy("b3"); } if Condition4 Then{ if MarketPosition == 0 or (MarketPosition == -1 and IsEntryName("s4") == true) or (MarketPosition == -1 and IsEntryName("s4") == false and BarsSinceEntry > 3) Then buy("b4"); } if Condition5 Then{ if MarketPosition == 0 or (MarketPosition == -1 and IsEntryName("s5") == true) or (MarketPosition == -1 and IsEntryName("s5") == false and BarsSinceEntry > 3) Then buy("b5"); } if Condition6 Then{ if MarketPosition == 0 or (MarketPosition == -1 and IsEntryName("s6") == true) or (MarketPosition == -1 and IsEntryName("s6") == false and BarsSinceEntry > 3) Then buy("b6"); } if Condition7 Then{ if MarketPosition == 0 or (MarketPosition == -1 and IsEntryName("s7") == true) or (MarketPosition == -1 and IsEntryName("s7") == false and BarsSinceEntry > 3) Then buy("b7"); } } if dayindex > 0 then{ #첫봉이후 if Condition11 Then{ if MarketPosition == 0 or # 무포지션일때 이전상황 관계없이 진입 (MarketPosition == 1 and IsEntryName("b1") == true) or # 매수상태이고 진입이 b1이면 진입봉수 관계없이 진입 (MarketPosition == 1 and IsEntryName("b1") == false and BarsSinceEntry > 3) Then# 매도상태이고 진입이 b1이 아니면 진입봉수 3봉 이후에 진입 Sell("s1"); } if Condition12 Then{ if MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("b2") == true) or (MarketPosition == 1 and IsEntryName("b2") == false and BarsSinceEntry > 3) Then Sell("s2"); } if Condition13 Then{ if MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("b3") == true) or (MarketPosition == 1 and IsEntryName("b3") == false and BarsSinceEntry > 3) Then Sell("s3"); } if Condition14 Then{ if MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("b4") == true) or (MarketPosition == 1 and IsEntryName("b4") == false and BarsSinceEntry > 3) Then Sell("s4"); } if Condition15 Then{ if MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("b5") == true) or (MarketPosition == 1 and IsEntryName("b5") == false and BarsSinceEntry > 3) Then Sell("s5"); } if Condition16 Then{ if MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("b6") == true) or (MarketPosition == 1 and IsEntryName("b6") == false and BarsSinceEntry > 3) Then Sell("s6"); } if Condition17 Then{ if MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("b7") == true) or (MarketPosition == 1 and IsEntryName("b7") == false and BarsSinceEntry > 3) Then Sell("s7"); } } 2. A조건 만족 후 3봉이내에 B조건 만족하면 매수 A조건 = 5-60 골든크로스 B조건 = 5-20 골든크로스 if crossup(ma(c,5),ma(c,60)) and#현재 5-60 골든크로스 countif(crossup(ma(c,5),ma(c,20)),3) >= 1 Then#3개봉 이내에 5-20 골든크로스가 1회이상 있음 buy(); 즐거운 하루되세요 > 청룡 님이 쓴 글입니다. > 제목 : Re : Re : 이평선관련 문의사항입니다. > 제가 구현하고자 하는 것은 "5,20,60,120이평선을 한번에 써서" 5와20이평선이든 20과120이평선이든 골든이 나오면 매수 데드가 나오면 매도를 하되 한개의 신호가 나온 후 여러개의 신호가 3봉 이내에 한번에 나올경우 "처음 신호만 받아들이고 3봉이내의 나머지 신호는 무시하는 방법" 입니다. 즉, 신호가 동시에 나올경우 "우선순위를 정해서" 신호를 받아들이고 나머지 신호는 무시하는 방법입니다. 이것을 구현할 수 있는 방법을 알고 싶습니다. 감사합니다 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 이평선관련 문의사항입니다. > 안녕하세요 예스스탁입니다. input : P1(5),P2(20); var1 = ma(c,P1); var2 = ma(c,P2); if dayindex > 0 and P1 < P2 Then{ if crossup(var1,var2) Then buy(); if CrossDown(var1,var2) Then sell(); } SetStopEndofday(150400); 위식을 차트에 적용하신 후에 input 변수를(5-20 5-60..) 하나하나 변경하셔서 리포트를 확인해 보시는 방법도 있고 아래와 같이 최적화를 통해 확인해 보시는 방법도 있습니다. 5이평과 다른 기간의 이평의 골든데드크로스로 리포트를 비교하여 보고자 하신다면 시뮬레이션에서 변수 최적화기능을 사용하시면 됩니다. 1. 시뮬레이션 차트 실행 2. 봉의 주기와 기간을 설정하여 데이터 로드 3. 위 시스템 적용 4. 시스템 트레딩 설정창의 변수 탭에서 P1,P2변수 최적화 설정 5. 특정 값 몇개로 지정이 불가능 하므로 적당한 최적화를 범위로 지정하셔야 합니다. 6, P1 : 최소값 5 최대값 60 증가단위 5 7, P2 : 최소값 20 최대값 120 증가단위 20 위와 같이 설정하시고 최적화를 수행하면 첨부된 그림과 같은 보고서를 보실 수 있습니다. 각 조합변 리포트를 한눈에 보실 수 있습니다. 즐거운 하루되세요 > 청룡 님이 쓴 글입니다. > 제목 : 이평선관련 문의사항입니다. > 5분차트에서 이동평균선 5, 20, 60, 120을 이용한 골든, 데드크로스전략을 만들려고 합니다. 1. 시초가에서의 신호는 제외 2. 오후3시5분에 강제청산 3. 5 이평선과 20 이평선의 골든크로스발생 후 다른 골든 또는 데드크로스신호가 3봉이내에 발생할 때 5 이평선과 20 이평선의 골든크로스신호는 받아들이고 다른 신호는 무시. 이것을 (5,20)(5,60)(5,120)(20,60)(20,120)...등의 경우의 수를 모두 비교하여 성과평가가 가능한 식을 만드려 합니다.(참조값만 변화시켜서 만드는 방법이 있는지, 자동으로 모든 경우의수를 비교하는 방법은 있는지(최적화)도 알려주시면 감사하겠습니다.)