커뮤니티

문의드립니다

프로필 이미지
cjfdk
2024-05-27 19:05:20
573
글번호 180045
답변완료
수고 많으십니다 2가지 시스템의 교집합 신호를 부탁드립니다 1번 시스템 input : Length(20),Mult(1.5); input : ADX_Length(50),P1(6),P2(12); input : Take_Profit(500),Stop_Loss(500); var : Price(0),Basis(0),StdDev(0),upper(0),lower(0); var : TR(0),DirectionalMovementPlus(0),DirectionalMovementMinus(0); var : SmoothedTrueRange(0),SmoothedDirectionalMovementPlus(0),SmoothedDirectionalMovementMinus(0); var : DIP(0),DIM(0),DX(0),SmoothedADX1(0),SmoothedADX2(0); Price = close; Basis = ma(Price, Length); StdDev = Mult * std(Price, Length); Upper = Basis + StdDev; Lower = Basis - StdDev; TR = max(max(high-low, abs(high-close[1])), abs(low-close[1])); DirectionalMovementPlus = iff(high-high[1] > low[1]-low , max(high-high[1], 0) , 0); DirectionalMovementMinus = iff(low[1]-low > high-high[1] , max(low[1]-low, 0) , 0); SmoothedTrueRange = SmoothedTrueRange - (SmoothedTrueRange/ADX_Length) + TR; SmoothedDirectionalMovementPlus = SmoothedDirectionalMovementPlus - (SmoothedDirectionalMovementPlus/ADX_Length) + DirectionalMovementPlus; SmoothedDirectionalMovementMinus = SmoothedDirectionalMovementMinus - (SmoothedDirectionalMovementMinus/ADX_Length) + DirectionalMovementMinus; DIP = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100; DIM = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100; DX = abs(DIP - DIM) / (DIP + DIM)*100; SmoothedADX1 = ema(DX, P1); SmoothedADX2 = ema(DX, P2); Condition1 = CrossUp(Price, Lower) and SmoothedADX1 < SmoothedADX2; Condition2 = CrossDown(Price, Upper) and SmoothedADX1 < SmoothedADX2; if Condition1 == true Then Buy(); if Condition2 == true Then Sell(); SetStopProfittarget(Take_Profit,PointStop); SetStopLoss(Stop_Loss,PointStop 2번 시스템 input : lengthMA(34),lengthSignal(9); var : src(0),hi(0),lo(0),Ema1(0),Ema2(0),mi(0); var : md(0),sb(0),sh(0),mdc(0); /*calc_smma(src, len) => smma=na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len smma calc_zlema(src, length) => ema1=ema(src, length) ema2=ema(ema1, length) d=ema1-ema2 ema1+d */ src = (h+l+c)/3; hi = IFF(IsNan(hi[1]) == true, ma(high,lengthMA), hi[1]*(lengthMA-1)+high)/lengthMA; lo = IFF(IsNan(lo[1]) == true, ma(low,lengthMA), lo[1]*(lengthMA-1)+low)/lengthMA; ema1 = ema(src, lengthMA); ema2 = ema(ema1, lengthMA); mi = ema1+(ema1-ema2); md = IFf((mi>hi), (mi-hi) , IFf((mi<lo) , (mi - lo) , 0)); sb = ma(md, lengthSignal); sh = md-sb; mdc = iff(src>mi,iff(src>hi,lime,green),iff(src<lo,red,orange)); /*plot1(0,"MidLine",Gray); plot2(md,"ImpulseMACD",mdc);#속성에서 막대 plot3(sh,"ImpulseHisto",Blue); #속성에서 막대 plot4(sb,"ImpulseMACDCDSignal",Maroon);*/ if CrossUp(sb,0) or CrossUp(sb,md) Then Buy(); if CrossDown(sb,0) or CrossDown(sb,md) Then sell() 위 2가지 시스템중 1번 시스템이 매수면 +1점 매도면 -1점 2번 시스템이 매수면 +1점 매도면 -1점 이렇게 두 시스템에 점수를 주어 두 시스템의 합이 +2점이면 매수 0점이면 모두청산 -2점이면 매도 이런 수식을 부탁드립니다 항상 감사드립니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-05-28 08:58:26

안녕하세요 예스스탁입니다. input : Length(20),Mult(1.5); input : ADX_Length(50),P1(6),P2(12); input : Take_Profit(500),Stop_Loss(500); var : Price(0),Basis(0),StdDev(0),upper(0),lower(0); var : TR(0),DirectionalMovementPlus(0),DirectionalMovementMinus(0); var : SmoothedTrueRange(0),SmoothedDirectionalMovementPlus(0),SmoothedDirectionalMovementMinus(0); var : DIP(0),DIM(0),DX(0),SmoothedADX1(0),SmoothedADX2(0); input : lengthMA(34),lengthSignal(9); var : src(0),hi(0),lo(0),Ema1(0),Ema2(0),mi(0); var : md(0),sb(0),sh(0),mdc(0); var : S1(0),S2(0),T(0); Price = close; Basis = ma(Price, Length); StdDev = Mult * std(Price, Length); Upper = Basis + StdDev; Lower = Basis - StdDev; TR = max(max(high-low, abs(high-close[1])), abs(low-close[1])); DirectionalMovementPlus = iff(high-high[1] > low[1]-low , max(high-high[1], 0) , 0); DirectionalMovementMinus = iff(low[1]-low > high-high[1] , max(low[1]-low, 0) , 0); SmoothedTrueRange = SmoothedTrueRange - (SmoothedTrueRange/ADX_Length) + TR; SmoothedDirectionalMovementPlus = SmoothedDirectionalMovementPlus - (SmoothedDirectionalMovementPlus/ADX_Length) + DirectionalMovementPlus; SmoothedDirectionalMovementMinus = SmoothedDirectionalMovementMinus - (SmoothedDirectionalMovementMinus/ADX_Length) + DirectionalMovementMinus; DIP = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100; DIM = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100; DX = abs(DIP - DIM) / (DIP + DIM)*100; SmoothedADX1 = ema(DX, P1); SmoothedADX2 = ema(DX, P2); Condition1 = CrossUp(Price, Lower) and SmoothedADX1 < SmoothedADX2; Condition2 = CrossDown(Price, Upper) and SmoothedADX1 < SmoothedADX2; src = (h+l+c)/3; hi = IFF(IsNan(hi[1]) == true, ma(high,lengthMA), hi[1]*(lengthMA-1)+high)/lengthMA; lo = IFF(IsNan(lo[1]) == true, ma(low,lengthMA), lo[1]*(lengthMA-1)+low)/lengthMA; ema1 = ema(src, lengthMA); ema2 = ema(ema1, lengthMA); mi = ema1+(ema1-ema2); md = IFf((mi>hi), (mi-hi) , IFf((mi<lo) , (mi - lo) , 0)); sb = ma(md, lengthSignal); sh = md-sb; mdc = iff(src>mi,iff(src>hi,lime,green),iff(src<lo,red,orange)); if S1 <= 0 and Condition1 == true Then S1 = 1; if S1 >= 0 and Condition2 == true Then S1 = -1; if S2 <= 0 and CrossUp(sb,0) or CrossUp(sb,md) Then S2 = 1; if S2 >= 0 and CrossDown(sb,0) or CrossDown(sb,md) Then S2 = -1; T = S1+S2; if T != T[1] Then { if T == 2 Then Buy(); if T == 0 and T[1] == 2 then ExitLong(); if T == -2 Then Sell(); if T == 0 and T[1] == -2 then ExitShort(); } SetStopProfittarget(Take_Profit,PointStop); SetStopLoss(Stop_Loss,PointStop); 즐거운 하루되세요 > cjfdk 님이 쓴 글입니다. > 제목 : 문의드립니다 > 수고 많으십니다 2가지 시스템의 교집합 신호를 부탁드립니다 1번 시스템 input : Length(20),Mult(1.5); input : ADX_Length(50),P1(6),P2(12); input : Take_Profit(500),Stop_Loss(500); var : Price(0),Basis(0),StdDev(0),upper(0),lower(0); var : TR(0),DirectionalMovementPlus(0),DirectionalMovementMinus(0); var : SmoothedTrueRange(0),SmoothedDirectionalMovementPlus(0),SmoothedDirectionalMovementMinus(0); var : DIP(0),DIM(0),DX(0),SmoothedADX1(0),SmoothedADX2(0); Price = close; Basis = ma(Price, Length); StdDev = Mult * std(Price, Length); Upper = Basis + StdDev; Lower = Basis - StdDev; TR = max(max(high-low, abs(high-close[1])), abs(low-close[1])); DirectionalMovementPlus = iff(high-high[1] > low[1]-low , max(high-high[1], 0) , 0); DirectionalMovementMinus = iff(low[1]-low > high-high[1] , max(low[1]-low, 0) , 0); SmoothedTrueRange = SmoothedTrueRange - (SmoothedTrueRange/ADX_Length) + TR; SmoothedDirectionalMovementPlus = SmoothedDirectionalMovementPlus - (SmoothedDirectionalMovementPlus/ADX_Length) + DirectionalMovementPlus; SmoothedDirectionalMovementMinus = SmoothedDirectionalMovementMinus - (SmoothedDirectionalMovementMinus/ADX_Length) + DirectionalMovementMinus; DIP = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100; DIM = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100; DX = abs(DIP - DIM) / (DIP + DIM)*100; SmoothedADX1 = ema(DX, P1); SmoothedADX2 = ema(DX, P2); Condition1 = CrossUp(Price, Lower) and SmoothedADX1 < SmoothedADX2; Condition2 = CrossDown(Price, Upper) and SmoothedADX1 < SmoothedADX2; if Condition1 == true Then Buy(); if Condition2 == true Then Sell(); SetStopProfittarget(Take_Profit,PointStop); SetStopLoss(Stop_Loss,PointStop 2번 시스템 input : lengthMA(34),lengthSignal(9); var : src(0),hi(0),lo(0),Ema1(0),Ema2(0),mi(0); var : md(0),sb(0),sh(0),mdc(0); /*calc_smma(src, len) => smma=na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len smma calc_zlema(src, length) => ema1=ema(src, length) ema2=ema(ema1, length) d=ema1-ema2 ema1+d */ src = (h+l+c)/3; hi = IFF(IsNan(hi[1]) == true, ma(high,lengthMA), hi[1]*(lengthMA-1)+high)/lengthMA; lo = IFF(IsNan(lo[1]) == true, ma(low,lengthMA), lo[1]*(lengthMA-1)+low)/lengthMA; ema1 = ema(src, lengthMA); ema2 = ema(ema1, lengthMA); mi = ema1+(ema1-ema2); md = IFf((mi>hi), (mi-hi) , IFf((mi<lo) , (mi - lo) , 0)); sb = ma(md, lengthSignal); sh = md-sb; mdc = iff(src>mi,iff(src>hi,lime,green),iff(src<lo,red,orange)); /*plot1(0,"MidLine",Gray); plot2(md,"ImpulseMACD",mdc);#속성에서 막대 plot3(sh,"ImpulseHisto",Blue); #속성에서 막대 plot4(sb,"ImpulseMACDCDSignal",Maroon);*/ if CrossUp(sb,0) or CrossUp(sb,md) Then Buy(); if CrossDown(sb,0) or CrossDown(sb,md) Then sell() 위 2가지 시스템중 1번 시스템이 매수면 +1점 매도면 -1점 2번 시스템이 매수면 +1점 매도면 -1점 이렇게 두 시스템에 점수를 주어 두 시스템의 합이 +2점이면 매수 0점이면 모두청산 -2점이면 매도 이런 수식을 부탁드립니다 항상 감사드립니다