커뮤니티

문의 (PY2)

프로필 이미지
TRF
2013-12-07 12:50:43
176
글번호 70220
답변완료
1. 아래식같이 표현하면 M1 > M2가 만족하는 100개의 봉중에 50개 이상만 만족하면 PrevAC가 TRUE가 되는건지요? PrevAC = (Countif(M1 > M2, 100) >= 50); 2. 33769 답변주신 내용입니다. 조건A,B,C 중에 하나가 만족하면 B1, B2, B31 모두 시간차를 두고 한꺼번에 진입되는게 아닌가요? #다른진입신호만 허용 if MarketPosition <= 0 and (진입조건A or 진입조건B or 진입조건C) Then{ buy("B1"); buy("B2",AtLimit,c-PriceScale*2); buy("B31",AtLimit,c-PriceScale*2); } 아래부분에서 이해가 안되서 그러는데 한줄한줄 설명좀 부탁드립니다. **************************************************** if MarketPosition == 1 and MaxEntries < 3 Then{ if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*2 Then buy("B2.",AtLimit,EntryPrice-PriceScale*2); if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*4 Then buy("B31.",AtLimit,EntryPrice-PriceScale*4); if CurrentEntries == 2 then buy("B32",AtStop,H[BarsSinceEntry]+PriceScale); } 3. 120일봉선이 표시가 안되는데 아래 수식 검증부탁드립니다. 그리고 500일봉선도 표시하려고 하니까 로딩속도가 엄청 저하되는데 문제가 있는건가요? VARS: M60DPL(60), M120DP(120); VARS: M60DL(0, DATA3), M120D(0, DATA3); VARS: M60DL.SUM(0, DATA3), M120D.SUM(0, DATA3), CNTL(0); ARRAY: CCL[100](0, DATA3); //---------------------------------------------------------------------------------------------------------------------------------------------------------- if ( DATA3(Date <> Date[1]) ) Then { for CNTL = 0 to 99 { CCL[CNTL] = CCL[CNTL - 1][1]; } } CCL[0] = d3CLOSE; M60DL.SUM = 0; M120D.SUM = 0; for CNTL = 0 to M120DPL - 1 { if ( (CNTL < M60DPL) AND (CCL[M60DPL - 1] > 0) ) Then M60DL.SUM = M60DL.SUM + CCL[CNTL]; if ( (CNTL < M120DP) AND (CCL[M120DP - 1] > 0) ) Then M120D.SUM = M120D.SUM + CCL[CNTL]; } M60DL = (M60DL.SUM / M60DPL); M120D = (M120D.SUM / M120DP); // PLOTTING // Plot11(M60DL, "M60D", RGB(0,255,0), DEF, 1); Plot12(M120D, "M120D", RGB(0,255,255), DEF, 1); 4. 10분봉 기준으로 전략실행차트에서 최대 몇일선까지 표시가 가능한지요?? 계산해보니까 10분 * 6 * 6시간 = 하루 36봉 36봉 * 120일 = 4320봉이 필요한데, 최대 5000봉이니까 120일선 이상은 안된다고 보면 맞는건가요? 늘 감사드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-12-09 11:25:16

안녕하세요 예스스탁입니다. 1. PrevAC = (Countif(M1 > M2, 100) >= 50); 최근 100개 봉중 M1이 M2보다 큰봉이 50개 이상이면 true 아니면 false입니다. 2. 우선 아래 내용에서 B31은 C-PriceScale*4입니다. if MarketPosition <= 0 and (진입조건A or 진입조건B or 진입조건C) Then{ buy("B1"); buy("B2",AtLimit,c-PriceScale*2); buy("B31",AtLimit,c-PriceScale*4); } 진입조건 A,B,C중에 하나가 만족하면 봉완성시 B1진입을 하고 다음봉에서 조건만족봉의 종가보다 2틱 낮으면 b2발생, 4틱 낮은 시세 발생하면 b31이 발생합니다. 만약 다음봉에서 b2,b31이 발생하지 않으면 아래 내용으로 추가진입합니다. if MarketPosition == 1 and MaxEntries < 3 Then{ if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*2 Then buy("B2.",AtLimit,EntryPrice-PriceScale*2); if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*4 Then buy("B31.",AtLimit,EntryPrice-PriceScale*4); if CurrentEntries == 2 then buy("B32",AtStop,H[BarsSinceEntry]+PriceScale); } 진입이후 최저가가 진입가 대비 2틱이상 낮지 않으면(B2가 발생하지 않으면) 다음봉에서 진입가-2틱의 시세가 발생하면 진입(B2.) 진입이후 최저가가 진입가 대비 4틱이상 낮지 않으면(B31가 발생하지 않으면) 다음봉에서 진입가-4틱의 시세가 발생하면 진입(B31.) 진입횟수가 2회인 상태에서 첫진입봉의 고가를 상향하면 매수(B32) 3. CCL배열변수가 100으로 지정되어 있습니다. 필요한 수만큰 늘리셔야 하며 늘린만큰 for문에서도 값을 늘려주셔야 합니다 ARRAY: CCL[100](0, DATA3); <-- 배열크기 변경 //---------------------------------------------------------------------------------------------------------------------------------------------------------- if ( DATA3(Date <> Date[1]) ) Then { for CNTL = 0 to 99 <-- 배열크기만큼 최종값 변경 { CCL[CNTL] = CCL[CNTL - 1][1]; } } 기간이 길수록 for문이 증가되므로 속도는 더 느려지게 됩니다. 4. 차트의 주종목은 차트 첫봉의 날짜+99일치의 일간데이터(dayhigh,daylow,dayopen,dayclose)가 사용하실수 있게 되어 있습니다. 그러므로 주종목이면 120이평이 계산이 가능합니다. 참조데이터의 경우에는 차트에 있는 데이터 안에서만 계산할수가 있습니다. 일수는 아래 지표로 확인하시기 바랍니다. var : idx(0,data2); if data2(date != date[1]) Then idx = idx+1; plot1(idx); 참조데이터에서는 분봉데이터로 일봉을 계산할 필요가 없습니다. 일봉이 필요하시면 해당데이터 일봉을 또 추가하시고 이용하시면 됩니다. 즐거운 하루되세요 > TRF 님이 쓴 글입니다. > 제목 : 문의 (PY2) > 1. 아래식같이 표현하면 M1 > M2가 만족하는 100개의 봉중에 50개 이상만 만족하면 PrevAC가 TRUE가 되는건지요? PrevAC = (Countif(M1 > M2, 100) >= 50); 2. 33769 답변주신 내용입니다. 조건A,B,C 중에 하나가 만족하면 B1, B2, B31 모두 시간차를 두고 한꺼번에 진입되는게 아닌가요? #다른진입신호만 허용 if MarketPosition <= 0 and (진입조건A or 진입조건B or 진입조건C) Then{ buy("B1"); buy("B2",AtLimit,c-PriceScale*2); buy("B31",AtLimit,c-PriceScale*2); } 아래부분에서 이해가 안되서 그러는데 한줄한줄 설명좀 부탁드립니다. **************************************************** if MarketPosition == 1 and MaxEntries < 3 Then{ if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*2 Then buy("B2.",AtLimit,EntryPrice-PriceScale*2); if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*4 Then buy("B31.",AtLimit,EntryPrice-PriceScale*4); if CurrentEntries == 2 then buy("B32",AtStop,H[BarsSinceEntry]+PriceScale); } 3. 120일봉선이 표시가 안되는데 아래 수식 검증부탁드립니다. 그리고 500일봉선도 표시하려고 하니까 로딩속도가 엄청 저하되는데 문제가 있는건가요? VARS: M60DPL(60), M120DP(120); VARS: M60DL(0, DATA3), M120D(0, DATA3); VARS: M60DL.SUM(0, DATA3), M120D.SUM(0, DATA3), CNTL(0); ARRAY: CCL[100](0, DATA3); //---------------------------------------------------------------------------------------------------------------------------------------------------------- if ( DATA3(Date <> Date[1]) ) Then { for CNTL = 0 to 99 { CCL[CNTL] = CCL[CNTL - 1][1]; } } CCL[0] = d3CLOSE; M60DL.SUM = 0; M120D.SUM = 0; for CNTL = 0 to M120DPL - 1 { if ( (CNTL < M60DPL) AND (CCL[M60DPL - 1] > 0) ) Then M60DL.SUM = M60DL.SUM + CCL[CNTL]; if ( (CNTL < M120DP) AND (CCL[M120DP - 1] > 0) ) Then M120D.SUM = M120D.SUM + CCL[CNTL]; } M60DL = (M60DL.SUM / M60DPL); M120D = (M120D.SUM / M120DP); // PLOTTING // Plot11(M60DL, "M60D", RGB(0,255,0), DEF, 1); Plot12(M120D, "M120D", RGB(0,255,255), DEF, 1); 4. 10분봉 기준으로 전략실행차트에서 최대 몇일선까지 표시가 가능한지요?? 계산해보니까 10분 * 6 * 6시간 = 하루 36봉 36봉 * 120일 = 4320봉이 필요한데, 최대 5000봉이니까 120일선 이상은 안된다고 보면 맞는건가요? 늘 감사드립니다.