답변완료
수고많습니다. 제가 만들어봐도 자꾸 다르게 나와서... 2가지 조건에 맞는 검색식 부탁드립
1
var : A(0),A1(0),A2(0),A3(0),A4(0),B(0);
A=OBV();
B=Ema(A, 9);
A1=accum(V*(Pow(C-L,2)-Pow(H-C, 2))/(H-L));
A2=ADX(11);
A3=100*Ema(C,10)/Ema(C[20],10);
A4=100*Ema(Ema(C,10)/Ema(C[20],10),9);
if A3[1]<=100 && (Crossup(A3,A4) OR Crossup(A,B)) &&
A[1]<A && A1[1]<A1 && A2[1]<A2 && A3[1]<A3 Then
Find(1);
================================================
2
INPUT : period(20),기간1(12),기간2(5),기간3(5);
VAR : A(0),B(0),GB(0),GS(0),SS(0),AA(0);
A=(C - lowest(C, period))/C*100;
GB=max(A, 0);
B=(highest(C, period) -C)/C*100;
GS=max(B, 0);
SS=AccumN(C-lowest(L,기간1),기간2)
/AccumN((highest(H,기간1)-lowest(L,기간1)),기간2)* 100; //스토케스틱 슬로우 본선
AA=EmA(SS, 기간3); //스토케스틱 시그널선
IF CROSSUP(GB, GS) && C>O && SS[1]<=20 && (CROSSUP(SS,AA) OR CROSSUP(SS,20)) TheN
Find(1);
2024-09-11
459
글번호 183387
종목검색
답변완료
수식 추가 문의 드립니다
안녕하세요
예전에 추세선 관련해서 수식 작성해주셨는데요
TLH 와 TLL 선을 5개까지만 EXTRIGHT 하는 조건인데요
추세선을 더 추가 하는경우 수식을 단순화 하기 위해서 "배열 변수"로 처리 할 수 있을까요? 그리고 가장 최근 추세선만 SETSIZE 2로 하고 싶을땐 어떻게 작성을 하면 될까요
질문2) 그리고 마지막 문단에 크로스업 하는 조건들도 매 추세선 마다 나열을 했는데요 이 부분도 배열로 단순화 할 수 있을까요?? 감사합니다
if TL_GetValue(TLH,sDate,stime) > 0 then
{
value1 = TL_GetValue(TLH,sDate,stime);
if CrossUp(O,Value1) Then plot11(high,"tlcross1",Yellow);
이하 반복~
질문 3)
HB 와 LB 사이의 봉갯수 간격 제한 하는 부분이 잘 적용이 안되는데 검토를 좀 해주실 수 있을까요? 가령 9개 이하만 표시하라고 했을때 9개 이상인것도 표현이 되고 있습니다. 수식 구조상에 문제가 있는건가요?
#봉갯수 간격 제한
if (abs(hb-lb) <= 9) Then
{
TL_SetColor(tl,LightGreen);
TL_SetStyle(tl,3);
}
수식은 아래와 같습니다
input : n(20);
var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TXn(0),txper(0),TXpaa(0),nline(0),tl2(0);
var : txx(0),TXper1(0);
var : hd(0),ht(0),hd1(0),ht1(0),hv(0),hv1(0), LD(0), LT(0), LV (0), LD1(0), LT1(0),LV1(0);
var: TLH(0),TLH1(0),TLH2(0),TLH3(0),TLH4(0),TLH5(0), TLL(0),TLL1(0),TLL2(0),TLL3(0),TLL4(0),TLL5(0);
if CountIf(H >= L*1.08,n) >= 1 Then
{
hh = 0;
hb = 0;
ll = 0;
lb = 0;
For cnt = 0 to n-1
{
if hh == 0 or (hh > 0 and h[cnt] > hh) Then
{
hh = h[cnt];
hb = cnt;
}
if ll == 0 or (ll > 0 and l[cnt] < ll) Then
{
ll = l[cnt];
lb = cnt;
}
}
if (hB < lB AND ll *1.13 <HH and (hh != Var3 and ll != Var4) ) OR
(hB > lB AND LL>HH*0.70 and (hh != Var3 and ll != Var4) ) Then
{
hd = sDate[hb];
ht = sTime[hb];
hv = hh;
hd1 = hd[1];
ht1 = ht[1];
hv1 = hv[1];
if hv1 > 0 Then
{
TLH1 = TLH[1];
TLH2 = TLH1[1];
TLH3 = TLH2[1];
TLH4 = TLH3[1];
TLH5= TLH4[1];
TL_SetExtRight(TLH5,False);
TLH = TL_new(hd1,ht1,hv1,hd,ht,hv);
TL_SetExtRight(TLH,True);
IF (HV > HV1*0.9 AND HV < HV1*1.09) OR (HV1 > HV*0.9 AND HV1 <HV*1.09) TheN
TL_SetColoR(TLH,LightGreen);
}
LD = sDatE[LB];
LT = sTimE[LB];
LV = LL;
LD1 = LD[1];
LT1 = LT[1];
LV1 = LV[1];
IF LV1 > 0 TheN
{
TLL1 = TLL[1];
TLL2 = TLL1[1];
TLL3 = TLL2[1];
TLL4 = TLL3[1];
TLL5= TLL4[1];
TL_SetExtRighT(TLL5,FalsE);
TLL= TL_NEW(LD1,LT1,LV1,LD,LT,LV);
TL_SetExtRighT(TLL,TRUE);
TL_SetColoR(TLL,Yellow);
}
VAR3 = hh;
VAR4 = ll;
VAR1 = Index[lb];
VAR2 = VAR1[1];
if VAR2 > 0 Then
{
VAR5 = 0;
For cnt = Index-var1 to Index-var2
{
if Var5 == 0 or (Var5 > 0 and h[cnt] > Var5) Then
Var5 = h[cnt];
}
}
if var1 >= Var2 Then
{
TL = TL_New(sDate[lb],sTime[lb],ll,sDate[hb],sTime[hb],hh);
TL_SetDrawMode(tl,1); TL_SetColoR(TL,Cyan);
TXper= text_new(sDate[lb],sTime[lb],ll,"★");
Text_SetStyle(txper,2,0);
Text_SetSizE(TXPER,18);
Text_SetColor(txper,MagentA);
TXpaa= text_new(sDate[HB],sTime[HB],HH,"★");
Text_SetStyle(TXPAA,2,0);
Text_SetSizE(TXPAA,15);
Text_SetColor(tXPAA,LightGreen);
}
}
}
#우상향, 우하향 색상 구분
if lb > hb Then
{
TL_SetColor(TL,LIGHTReD);
TL_SetStyle(tl,2);
TL_SetDrawMode(tl,1);
}
Else
{
TL_SetColor(TL,LightBlue);
TL_SetStyle(tl,2);
}
#봉갯수 간격 제한
if (abs(hb-lb) <= 9) Then
{
TL_SetColor(tl,LightGreen);
TL_SetStyle(tl,3);
}
If VAR5 > 0 Then
{
PLOT35(VAR5,"INTER TL HH",Tomato);
IF CrossUP(C,Var5) Then PLOT34(C,"CROSS구간고가",CyaN);
}
if TL_GetValue(TLH,sDate,stime) > 0 then
{
value1 = TL_GetValue(TLH,sDate,stime);
if CrossUp(O,Value1) Then plot11(high,"tlcross1",Yellow);
}
if TL_GetValue(TLH1,sDate,stime) > 0 then
{
value2 = TL_GetValue(TLH,sDate,stime);
if CrossUp(O,Value2) Then plot22(high,"tlcross2",Red);
}
if TL_GetValue(TLH2,sDate,stime) > 0 then
{
value3 = TL_GetValue(TLH,sDate,stime);
if CrossUp(O,Value3) Then plot33(high,"tlcross3",LightGreen);
}
if TL_GetValue(TLH3,sDate,stime) > 0 then
{
value4 = TL_GetValue(TLH,sDate,stime);
if CrossUp(O,Value4) Then plot44(high,"tlcross4",Cyan);
}
2024-09-11
529
글번호 183379
지표
답변완료
문의 드립니다.
study(shorttitle="BB Filter", title="Bollinger Bands Filter", overlay=true, resolution="")
src = input(close, title = "Source")
length = input(55, minval=1, title = "SMA length")// 20 for classis Bollinger Bands SMA line (basis)
mult = input(1., minval=0.236, maxval=2, title="Standard Deviation")//2 for Classic Bollinger Bands //Maxval = 2 as higher the deviation, higher the risk
basis = sma(src, length)
dev = mult * stdev(src,length)
CC = input(true, "Color Bars")
upper = basis + dev
lower = basis - dev
//Conditions for Long and Short - Extra filter condition can be used such as RSI or CCI etc.
short = src<lower// and rsi(close,14)<40
long = src>upper// and rsi(close,14)>60
L1 = barssince(long)
S1 = barssince(short)
longSignal = L1<S1 and not (L1<S1)[1]
shortSignal = S1<L1 and not (S1<L1)[1]
//Plots and Fills
////Long/Short shapes with text
// plotshape(S1<L1 and not (S1<L1)[1]?close:na, text = "sᴇʟʟ", textcolor=#ff0100, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "SELL", editable = true)
// plotshape(L1<S1 and not (L1<S1)[1]?close:na, text = "ʙᴜʏ", textcolor = #008000, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "BUY", editable = true)
plotshape(shortSignal?close:na, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "Short Signal", editable = true)
plotshape(longSignal?close:na, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "Long Signal", editable = true)
p1 = plot(upper, color=#ff0000, display=display.all, transp=75, title = "Upper Band")
p2 = plot(lower, color=#008000, display=display.all, transp=75, title = "Lower Band")
p = plot(basis, color=L1<S1?#008000:S1<L1?#ff0000:na, linewidth=2, editable=false, title="Basis")
fill(p,p1, color=color.teal, transp=85, title = "Top Fill") //fill for basis-upper
fill(p,p2, color=color.orange, transp=85, title = "Bottom Fill")//fill for basis-lower
//Barcolor
bcol = src>upper?color.new(#8ceb07,0):
src<lower?color.new(#ff0000,0):
src>basis?color.green:
src<basis?color.red:na
barcolor(CC?bcol:na, editable=false, title = "Color Bars")
//Alerts ---- // Use 'Once per bar close'
alertcondition(condition=longSignal, title="Long - BB Filter", message='BB Filter Long @ {{close}}') // Use 'Once per bar close'
alertcondition(condition=shortSignal, title="Short - BB Filter", message='BB Filter Short @ {{close}}') // Use 'Once per bar close'
트레이딩뷰 지표인데 예스 수식으로 좀 바꿔주세요.
2024-09-11
830
글번호 183378
지표