커뮤니티

주석요청

프로필 이미지
흰둥이아빠
2024-08-20 14:56:27
710
글번호 182703
답변완료
안녕하세요? 아래 글번호 88697번 답변주신 스크립트 주석 좀 부탁드립니다. 감사합니다. input : Period1(20),Period2(100),타주기분(10),P(100); var : S1(0),D1(0),TM(0),TF(0),cnt(0); var : m1(0),m2(0),sum1(0),mav(0),entry(0); Array : CC[200](0); m1 = ma(C,Period1); m2 = ma(C,Period2); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; entry = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { for cnt = 199 downto 1 { CC[cnt] = CC[cnt-1]; } } CC[0] = C; if CC[P-1] > 0 then { sum1 = 0; for cnt = 0 to P-1 { sum1 = sum1+CC[cnt]; } mav = sum1/P; if MarketPosition >= 0 and DayOpen > m2 and m2 > mav and CrossDown(c,m2) and entry < 1 Then Sell("s",AtMarket); if MarketPosition == -1 Then { if CrossDown(c,mav) Then ExitShort("sx",AtMarket); if CountIf(CrossUp(C,m1),BarsSinceEntry) == 3 Then ExitShort("sx2",AtMarket); } if MarketPosition >= 0 and DayOpen < m2 and m2 < mav and CrossUp(c,m2) and entry < 1 Then Buy("b",AtMarket); if MarketPosition == 1 Then { if CrossUp(c,mav) Then ExitLong("bx",AtMarket); if CountIf(CrossDown(C,m1),BarsSinceEntry) == 3 Then ExitLong("bx2",AtMarket); } } } SetStopEndofday(150000);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-08-21 11:43:03

안녕하세요 예스스탁입니다. input : Period1(20),Period2(100),타주기분(10),P(100); var : S1(0),D1(0),TM(0),TF(0),cnt(0); var : m1(0),m2(0),sum1(0),mav(0),entry(0); Array : CC[200](0); #20이평 m1 = ma(C,Period1); #100이평 m2 = ma(C,Period2); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; entry = 0; } #당일 진입횟수 if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; #타주기 계산 if D1 > 0 then { #영업일 첫봉이후 경과한 시간(분) if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; #TM을 10으로 나누어 나머지 계산 TF = TM%타주기분; #새로운 10분봉이 발생하면 if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { #이전 10분의 종가를 200개 저장 for cnt = 199 downto 1 { CC[cnt] = CC[cnt-1]; } } #현재 10분 구간 종가 CC[0] = C; #10분봉 종가가 100개이상 모았을 경우 if CC[P-1] > 0 then { #10분봉 종가를 합산 sum1 = 0; for cnt = 0 to P-1 { sum1 = sum1+CC[cnt]; } #평균값 계산 mav = sum1/P; #시초가가 100이평보다 크고 100이평은 10분봉 100이평보다 크고 #종가가 100이평을 하향이탈하면 매도 if MarketPosition >= 0 and DayOpen > m2 and m2 > mav and CrossDown(c,m2) and entry < 1 Then Sell("s",AtMarket); #매도후 if MarketPosition == -1 Then { #10분봉 100이평 하향이탈하면 청산 if CrossDown(c,mav) Then ExitShort("sx",AtMarket); #진입이후 종가가 20이평을 3번 하향이탈하면 청산 if CountIf(CrossUp(C,m1),BarsSinceEntry) == 3 Then ExitShort("sx2",AtMarket); } #시초가가 100이평보다 작고 100이평은 10분봉 100이평보다 작고 #종가가 100이평을 상향돌파하면 매수 if MarketPosition >= 0 and DayOpen < m2 and m2 < mav and CrossUp(c,m2) and entry < 1 Then Buy("b",AtMarket); #매수후 if MarketPosition == 1 Then { #10분봉 100이평을 상향돌파하면 청산 if CrossUp(c,mav) Then ExitLong("bx",AtMarket); #진입이후 종가가 20이평을 3번 상향돌파하면 청산 if CountIf(CrossDown(C,m1),BarsSinceEntry) == 3 Then ExitLong("bx2",AtMarket); } } } #15시 청 SetStopEndofday(150000); 즐거운 하루되세요 > 흰둥이아빠 님이 쓴 글입니다. > 제목 : 주석요청 > 안녕하세요? 아래 글번호 88697번 답변주신 스크립트 주석 좀 부탁드립니다. 감사합니다. input : Period1(20),Period2(100),타주기분(10),P(100); var : S1(0),D1(0),TM(0),TF(0),cnt(0); var : m1(0),m2(0),sum1(0),mav(0),entry(0); Array : CC[200](0); m1 = ma(C,Period1); m2 = ma(C,Period2); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; entry = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { for cnt = 199 downto 1 { CC[cnt] = CC[cnt-1]; } } CC[0] = C; if CC[P-1] > 0 then { sum1 = 0; for cnt = 0 to P-1 { sum1 = sum1+CC[cnt]; } mav = sum1/P; if MarketPosition >= 0 and DayOpen > m2 and m2 > mav and CrossDown(c,m2) and entry < 1 Then Sell("s",AtMarket); if MarketPosition == -1 Then { if CrossDown(c,mav) Then ExitShort("sx",AtMarket); if CountIf(CrossUp(C,m1),BarsSinceEntry) == 3 Then ExitShort("sx2",AtMarket); } if MarketPosition >= 0 and DayOpen < m2 and m2 < mav and CrossUp(c,m2) and entry < 1 Then Buy("b",AtMarket); if MarketPosition == 1 Then { if CrossUp(c,mav) Then ExitLong("bx",AtMarket); if CountIf(CrossDown(C,m1),BarsSinceEntry) == 3 Then ExitLong("bx2",AtMarket); } } } SetStopEndofday(150000);