커뮤니티
항상 감사합니다. 수식 짜보다가 꼬여서 도움 부탁드립니다.
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();
}
다음글
이전글