커뮤니티

60111 재질문드립니다.

프로필 이미지
stockric
2018-11-16 04:27:57
186
글번호 123715
답변완료
5개의 진입식에 대입시켜 보았는데요. 1. 아래의 식이 맞는지요? input : y(3),n(5),x(3); var : cnt(0),sum(0),sum1(0),sum2(0),sum3(0),sum4(0),sum5(0); Var : cnt2(0), cnt3(0), cnt4(0), cnt5(0); Var : didx(0), didx2(0), didx3(0), didx4(0), didx5(0); Var : xdate(0), xdate2(0), xdate3(0), xdate4(0), xdate5(0); Array : count[50](0), counta[50](0), countb[50](0), countc[50](0), countd[50](0); if bdate != bdate[1] then { didx = didx+1; count[0] = 0; counta[0] = 0; countb[0] = 0; countc[0] = 0; countd[0] = 0; for cnt = 1 to 49 { count[cnt] = count[cnt-1][1]; } for cnt2 = 1 to 49 { counta[cnt2] = counta[cnt2-1][1]; } for cnt3 = 1 to 49 { countb[cnt3] = countb[cnt3-1][1]; } for cnt4 = 1 to 49 { countc[cnt4] = countc[cnt4-1][1]; } for cnt5 = 1 to 49 { countd[cnt5] = countd[cnt5-1][1]; } sum = 0; sum1 = 0; sum2 = 0; sum3 = 0; sum4 = 0; for cnt = 1 to y { sum = sum+count[cnt]; } for cnt2 = 1 to y { sum2 = sum2+counta[cnt2]; } for cnt3 = 1 to y { sum3 = sum3+countb[cnt3]; } for cnt4 = 1 to y { sum4 = sum4+countc[cnt4]; } for cnt5 = 1 to y { sum5 = sum5+countd[cnt5]; } MessageLog("%.f",sum); if xdate == 0 and sum >= n Then Xdate = Didx; if xdate2 == 0 and sum2 >= n Then Xdate2 = Didx2; if xdate3 == 0 and sum3 >= n Then Xdate3 = Didx3; if xdate4 == 0 and sum4 >= n Then Xdate4 = Didx4; if xdate5 == 0 and sum5 >= n Then Xdate5 = Didx5; if Didx == Xdate+x Then Xdate = 0; if Didx2 == Xdate2+x Then Xdate2 = 0; if Didx3 == Xdate3+x Then Xdate3 = 0; if Didx4 == Xdate4+x Then Xdate4 = 0; if Didx5 == Xdate5+x Then Xdate5 = 0; } if TotalTrades > TotalTrades[1] and IsEntryName("A",1) == true and IsExitName("StopLoss",1) == true Then count[0] = count[0]+1; if TotalTrades > TotalTrades[1] and IsEntryName("B",1) == true and IsExitName("StopLoss",1) == true Then counta[0] = counta[0]+1; if TotalTrades > TotalTrades[1] and IsEntryName("C",1) == true and IsExitName("StopLoss",1) == true Then countb[0] = countb[0]+1; if TotalTrades > TotalTrades[1] and IsEntryName("D",1) == true and IsExitName("StopLoss",1) == true Then countc[0] = countc[0]+1; if TotalTrades > TotalTrades[1] and IsEntryName("E",1) == true and IsExitName("StopLoss",1) == true Then countd[0] = countd[0]+1; if Xdate == 0 and crossup(c,ma(c,5)) Then #A진입식 buy("A"); if Xdate2 == 0 and crossup(c,ma(c,20)) Then #B진입식 buy("B"); if Xdate3 == 0 and crossup(c,ma(c,20)) Then #C진입식 buy("C"); if Xdate4 == 0 and crossup(c,ma(c,20)) Then #D진입식 buy("D"); if Xdate5 == 0 and crossup(c,ma(c,20)) Then #E진입식 buy("E"); 2. 위 로직과 같이 for문이 많아지면, 시스템이 느려진다고 알고 있습니다. 본 로직에서 다이어트할 수 있는 방법은 없을까요?
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-11-16 10:29:37

안녕하세요 예스스탁입니다. 1 예 맞습니다. 2 for문을 불필요하게 여러번 사용하실 필요가 없습니다. 하나이 for문에서 처리하시면 됩니다. input : y(3),n(5),x(3); var : cnt(0),sum(0),sum1(0),sum2(0),sum3(0),sum4(0),sum5(0); Var : cnt2(0), cnt3(0), cnt4(0), cnt5(0); Var : didx(0), didx2(0), didx3(0), didx4(0), didx5(0); Var : xdate(0), xdate2(0), xdate3(0), xdate4(0), xdate5(0); Array : count[50](0), counta[50](0), countb[50](0), countc[50](0), countd[50](0); if bdate != bdate[1] then { didx = didx+1; count[0] = 0; counta[0] = 0; countb[0] = 0; countc[0] = 0; countd[0] = 0; for cnt = 1 to 49 { count[cnt] = count[cnt-1][1]; counta[cnt] = counta[cnt-1][1]; countb[cnt] = countb[cnt-1][1]; countc[cnt] = countc[cnt-1][1]; countd[cnt] = countd[cnt-1][1]; } sum = 0; sum1 = 0; sum2 = 0; sum3 = 0; sum4 = 0; for cnt = 1 to y { sum = sum+count[cnt]; sum = sum+counta[cnt]; sum = sum+countb[cnt]; sum = sum+countc[cnt]; sum = sum+countd[cnt]; } if xdate == 0 and sum >= n Then Xdate = Didx; if xdate2 == 0 and sum2 >= n Then Xdate2 = Didx2; if xdate3 == 0 and sum3 >= n Then Xdate3 = Didx3; if xdate4 == 0 and sum4 >= n Then Xdate4 = Didx4; if xdate5 == 0 and sum5 >= n Then Xdate5 = Didx5; if Didx == Xdate+x Then Xdate = 0; if Didx2 == Xdate2+x Then Xdate2 = 0; if Didx3 == Xdate3+x Then Xdate3 = 0; if Didx4 == Xdate4+x Then Xdate4 = 0; if Didx5 == Xdate5+x Then Xdate5 = 0; } if TotalTrades > TotalTrades[1] then { if IsEntryName("A",1) == true and IsExitName("StopLoss",1) == true Then count[0] = count[0]+1; if IsEntryName("B",1) == true and IsExitName("StopLoss",1) == true Then counta[0] = counta[0]+1; if IsEntryName("C",1) == true and IsExitName("StopLoss",1) == true Then countb[0] = countb[0]+1; if IsEntryName("D",1) == true and IsExitName("StopLoss",1) == true Then countc[0] = countc[0]+1; if IsEntryName("E",1) == true and IsExitName("StopLoss",1) == true Then countd[0] = countd[0]+1; } if Xdate == 0 and crossup(c,ma(c,5)) Then #A진입식 buy("A"); if Xdate2 == 0 and crossup(c,ma(c,20)) Then #B진입식 buy("B"); if Xdate3 == 0 and crossup(c,ma(c,20)) Then #C진입식 buy("C"); if Xdate4 == 0 and crossup(c,ma(c,20)) Then #D진입식 buy("D"); if Xdate5 == 0 and crossup(c,ma(c,20)) Then #E진입식 buy("E"); 즐거운 하루되세요 > stockric 님이 쓴 글입니다. > 제목 : 60111 재질문드립니다. > 5개의 진입식에 대입시켜 보았는데요. 1. 아래의 식이 맞는지요? input : y(3),n(5),x(3); var : cnt(0),sum(0),sum1(0),sum2(0),sum3(0),sum4(0),sum5(0); Var : cnt2(0), cnt3(0), cnt4(0), cnt5(0); Var : didx(0), didx2(0), didx3(0), didx4(0), didx5(0); Var : xdate(0), xdate2(0), xdate3(0), xdate4(0), xdate5(0); Array : count[50](0), counta[50](0), countb[50](0), countc[50](0), countd[50](0); if bdate != bdate[1] then { didx = didx+1; count[0] = 0; counta[0] = 0; countb[0] = 0; countc[0] = 0; countd[0] = 0; for cnt = 1 to 49 { count[cnt] = count[cnt-1][1]; } for cnt2 = 1 to 49 { counta[cnt2] = counta[cnt2-1][1]; } for cnt3 = 1 to 49 { countb[cnt3] = countb[cnt3-1][1]; } for cnt4 = 1 to 49 { countc[cnt4] = countc[cnt4-1][1]; } for cnt5 = 1 to 49 { countd[cnt5] = countd[cnt5-1][1]; } sum = 0; sum1 = 0; sum2 = 0; sum3 = 0; sum4 = 0; for cnt = 1 to y { sum = sum+count[cnt]; } for cnt2 = 1 to y { sum2 = sum2+counta[cnt2]; } for cnt3 = 1 to y { sum3 = sum3+countb[cnt3]; } for cnt4 = 1 to y { sum4 = sum4+countc[cnt4]; } for cnt5 = 1 to y { sum5 = sum5+countd[cnt5]; } MessageLog("%.f",sum); if xdate == 0 and sum >= n Then Xdate = Didx; if xdate2 == 0 and sum2 >= n Then Xdate2 = Didx2; if xdate3 == 0 and sum3 >= n Then Xdate3 = Didx3; if xdate4 == 0 and sum4 >= n Then Xdate4 = Didx4; if xdate5 == 0 and sum5 >= n Then Xdate5 = Didx5; if Didx == Xdate+x Then Xdate = 0; if Didx2 == Xdate2+x Then Xdate2 = 0; if Didx3 == Xdate3+x Then Xdate3 = 0; if Didx4 == Xdate4+x Then Xdate4 = 0; if Didx5 == Xdate5+x Then Xdate5 = 0; } if TotalTrades > TotalTrades[1] and IsEntryName("A",1) == true and IsExitName("StopLoss",1) == true Then count[0] = count[0]+1; if TotalTrades > TotalTrades[1] and IsEntryName("B",1) == true and IsExitName("StopLoss",1) == true Then counta[0] = counta[0]+1; if TotalTrades > TotalTrades[1] and IsEntryName("C",1) == true and IsExitName("StopLoss",1) == true Then countb[0] = countb[0]+1; if TotalTrades > TotalTrades[1] and IsEntryName("D",1) == true and IsExitName("StopLoss",1) == true Then countc[0] = countc[0]+1; if TotalTrades > TotalTrades[1] and IsEntryName("E",1) == true and IsExitName("StopLoss",1) == true Then countd[0] = countd[0]+1; if Xdate == 0 and crossup(c,ma(c,5)) Then #A진입식 buy("A"); if Xdate2 == 0 and crossup(c,ma(c,20)) Then #B진입식 buy("B"); if Xdate3 == 0 and crossup(c,ma(c,20)) Then #C진입식 buy("C"); if Xdate4 == 0 and crossup(c,ma(c,20)) Then #D진입식 buy("D"); if Xdate5 == 0 and crossup(c,ma(c,20)) Then #E진입식 buy("E"); 2. 위 로직과 같이 for문이 많아지면, 시스템이 느려진다고 알고 있습니다. 본 로직에서 다이어트할 수 있는 방법은 없을까요?