커뮤니티

수식 작성 부탁드립니다

프로필 이미지
뎅이요
2022-12-21 16:44:34
1131
글번호 164773
답변완료
1. 지표 data1에 아래의 수식을 사용합니다 data2에서 동일한 수식을 사용할려고 합니다. factor(5), AtrPeriod(20) 의 외부변수등 facto2r(5), AtrPeriod2(20)로변경하여 시스템작성시 중복되 않게 작성 부탁드립니다 input : ntime(30),factor(5), AtrPeriod(20); var : S1(0),D1(0),TM(0),TF(0),HH(0),LL(0),C1(0); var : src(0), AtrV(0),ATRv1(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(0), direction(0),alpha(0),source(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%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { HH = H; LL = L; C1 = C[1]; ATRV1 = ATRV[1]; prevSuperTrend = superTrend[1]; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; } if H > HH Then HH = H; if L < LL Then LL = L; src = (HH+LL)/2; if C1 > 0 Then { alpha = 1 / AtrPeriod ; source = max(HH - LL, abs(HH - C1), abs(LL - C1)); ATrV = alpha * source + (1 - alpha) * ATrV1; upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; if lowerBand > prevLowerBand or C1 < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or C1 > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if prevSuperTrend == prevUpperBand Then { if C > upperBand Then direction = -1; Else direction = 1; } Else { if C < lowerBand Then direction = 1; Else direction = -1; } if direction == -1 Then superTrend = lowerBand; Else superTrend = upperBand; Plot1(C,"종가"); } } 2. 시스템 식에서 BBup = BollBandUp(Period,MultiD); 상단밴드 이격도 95 하향돌파시 즉시 청산이되도록 수식 부탁드립니다. 추가로 상단밴드에서 5틱 하락시 청산되도록 수식 부탁 드립니다. 감사합니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-12-21 17:12:06

안녕하세요 예스스탁입니다. 1 input : ntime(30),factor(5), AtrPeriod(20); var : S1(0,Data1),D1(0,Data1),TM(0,Data1),TF(0,Data1),HH(0,Data1),LL(0,Data1),C1(0,Data1); var : src(0,Data1), AtrV(0,Data1),ATRv1(0,Data1),upperBand(0,Data1),lowerBand(0,Data1), prevLowerBand(0,Data1), prevUpperBand(0,Data1); var : prevSuperTrend(0,Data1), superTrend(0,Data1), direction(0,Data1),alpha(0,Data1),source(0,Data1); if data1(Bdate != Bdate[1]) Then { S1 = data1(TimeToMinutes(stime)); D1 = data1(sdate); } if D1 > 0 then { if data1(sdate) == D1 Then TM = data1(TimeToMinutes(stime))-S1; Else TM = data1(TimeToMinutes(stime))+1440-S1; TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { HH = Data1(H); LL = data1(L); C1 = data1(C[1]); ATRV1 = ATRV[1]; prevSuperTrend = superTrend[1]; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; } if data1(H) > HH Then HH = data1(H); if Data1(L) < LL Then LL = data1(L); src = (HH+LL)/2; if C1 > 0 Then { alpha = 1 / AtrPeriod ; source = max(HH - LL, abs(HH - C1), abs(LL - C1)); ATrV = alpha * source + (1 - alpha) * ATrV1; upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; if lowerBand > prevLowerBand or C1 < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or C1 > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if prevSuperTrend == prevUpperBand Then { if data1(C) > upperBand Then direction = -1; Else direction = 1; } Else { if data1(C) < lowerBand Then direction = 1; Else direction = -1; } if direction == -1 Then superTrend = lowerBand; Else superTrend = upperBand; Plot1(data1(C),"종가"); } } input : d2ntime(30),d2factor(5), d2AtrPeriod(20); var : d2S1(0,Data2),d2D1(0,Data2),d2TM(0,Data2),d2TF(0,Data2),d2HH(0,Data2),d2LL(0,Data2),d2C1(0,Data2); var : d2src(0,Data2), d2AtrV(0,Data2),d2ATRv1(0,Data2),d2upperBand(0,Data2),d2lowerBand(0,Data2), d2prevLowerBand(0,Data2), d2prevUpperBand(0,Data2); var : d2prevSuperTrend(0,Data2), d2superTrend(0,Data2), d2direction(0,Data2),d2alpha(0,Data2),d2source(0,Data2); if data2(Bdate != Bdate[1]) Then { d2S1 = data2(TimeToMinutes(stime)); d2D1 = data2(sdate); } if d2D1 > 0 then { if data2(sdate) == d2D1 Then d2TM = data2(TimeToMinutes(stime))-d2S1; Else d2TM = data2(TimeToMinutes(stime))+1440-d2S1; d2TF = d2TM%d2ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and d2ntime > 1 and d2TF < d2TF[1]) or (Bdate == Bdate[1] and d2ntime > 1 and d2TM >= d2TM[1]+d2ntime) or (Bdate == Bdate[1] and d2ntime == 1 and d2TM > d2TM[1]) Then { d2HH = data2(H); d2LL = data2(L); d2C1 = data2(C[1]); d2ATRV1 = d2ATRV[1]; d2prevSuperTrend = d2superTrend[1]; d2prevLowerBand = d2lowerBand[1]; d2prevUpperBand = d2upperBand[1]; } if data2(H) > d2HH Then d2HH = data2(H); if data2(L) < d2LL Then d2LL = data2(L); d2src = (d2HH+d2LL)/2; if d2C1 > 0 Then { d2alpha = 1 / d2AtrPeriod ; d2source = max(d2HH - d2LL, abs(d2HH - d2C1), abs(d2LL - d2C1)); d2ATrV = d2alpha * d2source + (1 - d2alpha) * d2ATrV1; d2upperBand = d2src + d2factor * d2AtrV; d2lowerBand = d2src - d2factor * d2AtrV; if d2lowerBand > d2prevLowerBand or d2C1 < d2prevLowerBand Then d2lowerBand = d2lowerBand; Else d2lowerBand = d2prevLowerBand; if d2upperBand < d2prevUpperBand or d2C1 > d2prevUpperBand Then d2upperBand = d2upperBand; Else d2upperBand = d2prevUpperBand; if d2prevSuperTrend == d2prevUpperBand Then { if C > d2upperBand Then d2direction = -1; Else d2direction = 1; } Else { if C < d2lowerBand Then d2direction = 1; Else d2direction = -1; } if d2direction == -1 Then d2superTrend =d2lowerBand; Else d2superTrend = d2upperBand; Plot2(data2(C),"종가"); } } 2 input : Period(20),MultiD(2); var : bbup(0); BBup = BollBandUp(Period,MultiD); if MarketPosition == 1 and L > BBup*0.95 Then ExitLong("bx1",AtStop,Bbup*0.95); if MarketPosition == 1 and L > BBup-PriceScale*5 Then ExitLong("bx2",AtStop,Bbup-PriceScale*5); 즐거운 하루되세요 > 뎅이요 님이 쓴 글입니다. > 제목 : 수식 작성 부탁드립니다 > 1. 지표 data1에 아래의 수식을 사용합니다 data2에서 동일한 수식을 사용할려고 합니다. factor(5), AtrPeriod(20) 의 외부변수등 facto2r(5), AtrPeriod2(20)로변경하여 시스템작성시 중복되 않게 작성 부탁드립니다 input : ntime(30),factor(5), AtrPeriod(20); var : S1(0),D1(0),TM(0),TF(0),HH(0),LL(0),C1(0); var : src(0), AtrV(0),ATRv1(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(0), direction(0),alpha(0),source(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%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { HH = H; LL = L; C1 = C[1]; ATRV1 = ATRV[1]; prevSuperTrend = superTrend[1]; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; } if H > HH Then HH = H; if L < LL Then LL = L; src = (HH+LL)/2; if C1 > 0 Then { alpha = 1 / AtrPeriod ; source = max(HH - LL, abs(HH - C1), abs(LL - C1)); ATrV = alpha * source + (1 - alpha) * ATrV1; upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; if lowerBand > prevLowerBand or C1 < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or C1 > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if prevSuperTrend == prevUpperBand Then { if C > upperBand Then direction = -1; Else direction = 1; } Else { if C < lowerBand Then direction = 1; Else direction = -1; } if direction == -1 Then superTrend = lowerBand; Else superTrend = upperBand; Plot1(C,"종가"); } } 2. 시스템 식에서 BBup = BollBandUp(Period,MultiD); 상단밴드 이격도 95 하향돌파시 즉시 청산이되도록 수식 부탁드립니다. 추가로 상단밴드에서 5틱 하락시 청산되도록 수식 부탁 드립니다. 감사합니다.