커뮤니티

부탁드립니다 항상 감사합니다

프로필 이미지
윤호석
2025-09-26 07:41:24.0
76
글번호 194283
답변완료
input : 타주기분(60); input : P(20), Dv(2); var : S1(0), D1(0), TM(0), TF(0), prevTF(0), isNew(false); var : cnt(0), SumSqrt(0), Stdv(0), sum(0), BBmd(0), BBup(0), BBdn(0); var : lastPriceInBlock(0), isFirst(true); Array : CC; { 기준 시각/날짜 초기화 } if Bdate <> Bdate[1] then begin S1 = TimeToMinutes(stime); D1 = sdate; end; if D1 > 0 then begin if sdate = D1 then TM = TimeToMinutes(stime) - S1 else TM = TimeToMinutes(stime) + 1440 - S1; TF = TM % 타주기분; prevTF = TF[1]; { 새 블럭 판단: 날짜 변경 or 나머지 되감김 or 충분히 경과 } isNew = (Bdate <> Bdate[1]) or (TF < prevTF) or (TM >= TM[1] + 타주기분); { 각 틱에서 현재 블럭의 마지막 가격을 트래킹 } lastPriceInBlock = C; if isNew and (isFirst = false) then begin { 직전 블럭 종료 시점 가격을 밀어넣기 } for cnt = 99 downto 1 begin CC[cnt] = CC[cnt-1]; end; CC[0] = C[1]; { 직전 틱(=직전 블럭 끝)의 종가를 기록 } end; if isFirst then begin { 초기 1회 세팅: 현재가로 CC[0] 채우기 } CC[0] = C; isFirst = false; end; { 충분히 쌓였으면 볼밴 계산 } if P <= 99 and CC[P-1] > 0 then begin sum = 0; for cnt = 0 to P-1 begin sum = sum + CC[cnt]; end; BBmd = sum / P; SumSqrt = 0; for cnt = 0 to P-1 begin SumSqrt = SumSqrt + (CC[cnt] - BBmd)*(CC[cnt] - BBmd); end; Stdv = SquareRoot(SumSqrt / P); BBup = BBmd + (Dv * Stdv); BBdn = BBmd - (Dv * Stdv); Plot1(BBup, "상단"); Plot2(BBmd, "중단"); Plot3(BBdn, "하단"); end; end; 예스트레이더 해외선물에 적용할수있게끔 부탁드립니다
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-09-26 13:54:55.0

안녕하세요 예스스탁입니다. input : 타주기분(60),P(20),Dv(2); var : S1(0),D1(0),TM(0),TF(0); var : cnt(0),SumSqrt(0),Stdv(0); var : sum(0),BBmd(0),Bbup(0),BBdn(0),BandB(0); Array : CC[100](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } 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 = 1 to 99 { CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if CC[P] > 0 then{ sum = 0; for cnt = 0 to P-1{ sum = sum + CC[cnt]; } BBmd = sum/P; SumSqrt = 0; For cnt = 0 To P - 1 { SumSqrt = SumSqrt + (CC[cnt] - BBmd)^2; } Stdv = SquareRoot(SumSqrt / P); BBup = BBmd + (Dv * Stdv); BBdn = BBmd - (Dv * Stdv); Plot1(BBup,"상단"); Plot2(BBmd,"중단"); Plot3(BBdn,"하단"); } } 즐거운 하루되세요 > 윤호석 님이 쓴 글입니다. > 제목 : 부탁드립니다 항상 감사합니다 > input : 타주기분(60); input : P(20), Dv(2); var : S1(0), D1(0), TM(0), TF(0), prevTF(0), isNew(false); var : cnt(0), SumSqrt(0), Stdv(0), sum(0), BBmd(0), BBup(0), BBdn(0); var : lastPriceInBlock(0), isFirst(true); Array : CC; { 기준 시각/날짜 초기화 } if Bdate <> Bdate[1] then begin S1 = TimeToMinutes(stime); D1 = sdate; end; if D1 > 0 then begin if sdate = D1 then TM = TimeToMinutes(stime) - S1 else TM = TimeToMinutes(stime) + 1440 - S1; TF = TM % 타주기분; prevTF = TF[1]; { 새 블럭 판단: 날짜 변경 or 나머지 되감김 or 충분히 경과 } isNew = (Bdate <> Bdate[1]) or (TF < prevTF) or (TM >= TM[1] + 타주기분); { 각 틱에서 현재 블럭의 마지막 가격을 트래킹 } lastPriceInBlock = C; if isNew and (isFirst = false) then begin { 직전 블럭 종료 시점 가격을 밀어넣기 } for cnt = 99 downto 1 begin CC[cnt] = CC[cnt-1]; end; CC[0] = C[1]; { 직전 틱(=직전 블럭 끝)의 종가를 기록 } end; if isFirst then begin { 초기 1회 세팅: 현재가로 CC[0] 채우기 } CC[0] = C; isFirst = false; end; { 충분히 쌓였으면 볼밴 계산 } if P <= 99 and CC[P-1] > 0 then begin sum = 0; for cnt = 0 to P-1 begin sum = sum + CC[cnt]; end; BBmd = sum / P; SumSqrt = 0; for cnt = 0 to P-1 begin SumSqrt = SumSqrt + (CC[cnt] - BBmd)*(CC[cnt] - BBmd); end; Stdv = SquareRoot(SumSqrt / P); BBup = BBmd + (Dv * Stdv); BBdn = BBmd - (Dv * Stdv); Plot1(BBup, "상단"); Plot2(BBmd, "중단"); Plot3(BBdn, "하단"); end; end; 예스트레이더 해외선물에 적용할수있게끔 부탁드립니다