커뮤니티

항상 감사합니다. 수식 짜보다가 꼬여서 도움 부탁드립니다.

프로필 이미지
가치투자꾼
2017-04-13 16:35:20
157
글번호 108776
답변완료
안녕하세요. DMI를 변형시켜서 하나 짜보고 있습니다. 해보고자 하는 것은 PDI-MDI의 차이에 해당하는 DI 값을 기준으로 최근 11일간의 DI 중 8일 이상 mdd값 이하인 경우 매수 최근 18일간 DI 중 12일 이상 mdd 이하인 경우에 매수청산 최근 11일간의 DI가 8일 이상 pdd 이상인 경우 매도입니다. 최근 18일간 DI 중 12일 이상 pdd 이상인 경우 매도청산입니다. 원래는 /*if DI[11] <= MDD and DI[10] <= MDD and DI[9] <= MDD and DI[8] <= MDD and DI[7] <= MDD and DI[6] <= MDD and DI[5] <= MDD and DI[5] <= MDD and DI[4] <= MDD and DI[3] <= MDD and DI[2] <= MDD and DI[1] <= MDD and DI[0] <= MDD Then { sell(); } 이렇게 노가다식으로 짰는데 조금 코딩을 간소화 시켜보고 싶어 부탁드립니다. input : Period(14), PDD(11), MDD(-11), maxi(11),aaa(0), cnt(0); var : DI(0), DP(0), DM(0), entry(0); // DP = DIPlus(Period); #data2에서 계산하도록 변경 DM = DIMinus(Period); #data2에서 계산하도록 변경 DI = DP-DM; if sdate != sdate[1] Then { cnt = 0; for aaa to maxi{ if di[i] <= mdd Then cnt = cnt +1; if cnt >=8 Then buy(); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-04-14 09:05:09

안녕하세요 예스스탁입니다. data2를 일봉으로 설정하고 아래와 같이 작성하시면 됩니다. countif함수가 일봉봉수안에 조건만족횟수를 리턴해 주는 함수입니다. #data2 일봉 input : Period(14), PDD(11), MDD(-11); var : DI(0,data2), DP(0,data2),DM(0,data2); DP = data2(DIPlus(Period)); #data2에서 계산하도록 변경 DM = data2(DIMinus(Period)); #data2에서 계산하도록 변경 DI = DP-DM; if MarketPosition <= 0 and data2(countif(DI <= mdd,11) >= 8) Then buy(); if MarketPosition == 1 and data2(countif(DI <= mdd,18) >= 12) Then ExitLong(); if MarketPosition >= 0 and data2(countif(DI > pdd,11) >= 8) Then sell(); if MarketPosition == -1 and data2(countif(DI <= mdd,18) >= 12) Then ExitShort(); 즐거운 하루되세요 > 가치투자꾼 님이 쓴 글입니다. > 제목 : 항상 감사합니다. 수식 짜보다가 꼬여서 도움 부탁드립니다. > 안녕하세요. DMI를 변형시켜서 하나 짜보고 있습니다. 해보고자 하는 것은 PDI-MDI의 차이에 해당하는 DI 값을 기준으로 최근 11일간의 DI 중 8일 이상 mdd값 이하인 경우 매수 최근 18일간 DI 중 12일 이상 mdd 이하인 경우에 매수청산 최근 11일간의 DI가 8일 이상 pdd 이상인 경우 매도입니다. 최근 18일간 DI 중 12일 이상 pdd 이상인 경우 매도청산입니다. 원래는 /*if DI[11] <= MDD and DI[10] <= MDD and DI[9] <= MDD and DI[8] <= MDD and DI[7] <= MDD and DI[6] <= MDD and DI[5] <= MDD and DI[5] <= MDD and DI[4] <= MDD and DI[3] <= MDD and DI[2] <= MDD and DI[1] <= MDD and DI[0] <= MDD Then { sell(); } 이렇게 노가다식으로 짰는데 조금 코딩을 간소화 시켜보고 싶어 부탁드립니다. input : Period(14), PDD(11), MDD(-11), maxi(11),aaa(0), cnt(0); var : DI(0), DP(0), DM(0), entry(0); // DP = DIPlus(Period); #data2에서 계산하도록 변경 DM = DIMinus(Period); #data2에서 계산하도록 변경 DI = DP-DM; if sdate != sdate[1] Then { cnt = 0; for aaa to maxi{ if di[i] <= mdd Then cnt = cnt +1; if cnt >=8 Then buy(); }