답변완료
지표와 PaintBar 조건이 상이하게 나옵니다.
수고하십니다. 하기조건에서 지표와 페인트바 조건이 상이하게 나옵니다.
확인 요청드립니다.
######## PaintBar ##########
input : low_period(30),Stdev_period(50);
var : W(1);//1이면 가중이평, 0이면 단순이평
var : source(0),DM(0);
var : FZ1(0),FAVG1(0),FSTDEV1(0),FZ1Limit(0);
var : FZ2(0),FAVG2(0),FSTDEV2(0),FZ2Limit(0);
var : F_Con(False),FO(0),FC(0),tx(0),tx1(0),test(0);
source = (o+h+l+c)/4;
FZ1 = (lowest(source,low_period) - source)/lowest(source,low_period);
FAVG1 = iff(W==0,ma(FZ1,Stdev_period),wma(FZ1,Stdev_period));
FSTDEV1 = std(FZ1,Stdev_period);
FZ1Limit = FAVG1-FSTDEV1;
FZ2 = iff(W==0,ma(source, low_period),wma(source, low_period));
FAVG2 = iff(W==0,ma(FZ2,Stdev_period),wma(FZ2,Stdev_period));
FSTDEV2 = std(FZ2, Stdev_period);
FZ2Limit = FAVG2+FSTDEV2;
// Fearzone
F_Con = FZ1 < FZ1Limit and FZ2 > FZ2Limit;
if F_Con Then test = 1;
Else test = 0;
FO = iff(F_Con == true, low-TrueRange,Nan);
FC = iff(F_Con == true, low-2*TrueRange,Nan);
PlotPaintBar(FO,FC,"FearZone Candlesticks",Red);
tx1 = text_new(sDate,sTime,L,NumToStr(test,0));
Text_SetStyle(tx,2,0);
Text_SetColor(tx,Red);
if F_Con == true Then
{
tx = text_new(sDate,sTime,L,"●");
Text_SetStyle(tx,2,0);
Text_SetColor(tx,Red);
}
######## 지표 ##########
input : low_period(30),Stdev_period(50);
var : W(1);//1이면 가중이평, 0이면 단순이평
var : source(0),DM(0);
var : FZ1(0),FAVG1(0),FSTDEV1(0),FZ1Limit(0);
var : FZ2(0),FAVG2(0),FSTDEV2(0),FZ2Limit(0);
var : F_Con(False),FO(0),FC(0),tx(0),tx1(0),test(0);
source = (o+h+l+c)/4;
FZ1 = (lowest(source,low_period) - source)/lowest(source,low_period);
FAVG1 = iff(W==0,ma(FZ1,Stdev_period),wma(FZ1,Stdev_period));
FSTDEV1 = std(FZ1,Stdev_period);
FZ1Limit = FAVG1-FSTDEV1;
FZ2 = iff(W==0,ma(source, low_period),wma(source, low_period));
FAVG2 = iff(W==0,ma(FZ2,Stdev_period),wma(FZ2,Stdev_period));
FSTDEV2 = std(FZ2, Stdev_period);
FZ2Limit = FAVG2+FSTDEV2;
// Fearzone
F_Con = FZ1 < FZ1Limit and FZ2 > FZ2Limit;
FO = iff(F_Con == true, low-TrueRange,Nan);
FC = iff(F_Con == true, low-2*TrueRange,Nan);
F_Con = FZ1 < FZ1Limit and FZ2 > FZ2Limit;
if F_Con Then test = 1;
Else test = 0;
plot1(FZ1,"FZ1");
plot2(FZ1Limit,"FZ1Limit");
plot3(FZ2,"FZ2");
plot4(FZ2Limit,"FZ2Limit");
plot5(FO,"FO");
plot6(FC,"FC");
plot7(TrueRange,"TrueRange");
plot8(test,"test");
**********************************************************
test 값이 상이하게 나옵니다.
F_Con 값이 True 가 PaintBar 에서 간헐적인데 지표에서는 연속적으로 나옵니다.
수식으로는 연속이 맞는데 PaintBar 에서 상이한것 같습니다.
PaintBar 조건처럼 나오게 할수 있는 방법을 찾고 있습니다.
가능한지요?
2024-03-14
818
글번호 177478
지표
답변완료
수식변환
수고하십니다.
트레이딩부 지표인 "SSL Hybrid" 지표를 예스로 변환 부탁드립니다.
=============================
study("SSL Hybrid", overlay=true)
show_Baseline = input(title="Show Baseline", type=input.bool, defval=true)
show_SSL1 = input(title="Show SSL1", type=input.bool, defval=false)
show_atr = input(title="Show ATR bands", type=input.bool, defval=true)
//ATR
atrlen = input(14, "ATR Period")
mult = input(1, "ATR Multi", step=0.1)
smoothing = input(title="ATR Smoothing", defval="WMA", options=["RMA", "SMA", "EMA", "WMA"])
ma_function(source, atrlen) =>
if smoothing == "RMA"
rma(source, atrlen)
else
if smoothing == "SMA"
sma(source, atrlen)
else
if smoothing == "EMA"
ema(source, atrlen)
else
wma(source, atrlen)
atr_slen = ma_function(tr(true), atrlen)
////ATR Up/Low Bands
upper_band = atr_slen * mult + close
lower_band = close - atr_slen * mult
////BASELINE / SSL1 / SSL2 / EXIT MOVING AVERAGE VALUES
maType = input(title="SSL1 / Baseline Type", type=input.string, defval="HMA", options=["SMA","EMA","DEMA","TEMA","LSMA","WMA","MF","VAMA","TMA","HMA", "JMA", "Kijun v2", "EDSMA","McGinley"])
len = input(title="SSL1 / Baseline Length", defval=60)
SSL2Type = input(title="SSL2 / Continuation Type", type=input.string, defval="JMA", options=["SMA","EMA","DEMA","TEMA","WMA","MF","VAMA","TMA","HMA", "JMA","McGinley"])
len2 = input(title="SSL 2 Length", defval=5)
//
SSL3Type = input(title="EXIT Type", type=input.string, defval="HMA", options=["DEMA","TEMA","LSMA","VAMA","TMA","HMA","JMA", "Kijun v2", "McGinley", "MF"])
len3 = input(title="EXIT Length", defval=15)
src = input(title="Source", type=input.source, defval=close)
//
tema(src, len) =>
ema1 = ema(src, len)
ema2 = ema(ema1, len)
ema3 = ema(ema2, len)
(3 * ema1) - (3 * ema2) + ema3
kidiv = input(defval=1,maxval=4, title="Kijun MOD Divider")
jurik_phase = input(title="* Jurik (JMA) Only - Phase", type=input.integer, defval=3)
jurik_power = input(title="* Jurik (JMA) Only - Power", type=input.integer, defval=1)
volatility_lookback = input(10, title="* Volatility Adjusted (VAMA) Only - Volatility lookback length")
//MF
beta = input(0.8,minval=0,maxval=1,step=0.1, title="Modular Filter, General Filter Only - Beta")
feedback = input(false, title="Modular Filter Only - Feedback")
z = input(0.5,title="Modular Filter Only - Feedback Weighting",step=0.1, minval=0, maxval=1)
//EDSMA
ssfLength = input(title="EDSMA - Super Smoother Filter Length", type=input.integer, minval=1, defval=20)
ssfPoles = input(title="EDSMA - Super Smoother Filter Poles", type=input.integer, defval=2, options=[2, 3])
//----
//EDSMA
get2PoleSSF(src, length) =>
PI = 2 * asin(1)
arg = sqrt(2) * PI / length
a1 = exp(-arg)
b1 = 2 * a1 * cos(arg)
c2 = b1
c3 = -pow(a1, 2)
c1 = 1 - c2 - c3
ssf = 0.0
ssf := c1 * src + c2 * nz(ssf[1]) + c3 * nz(ssf[2])
get3PoleSSF(src, length) =>
PI = 2 * asin(1)
arg = PI / length
a1 = exp(-arg)
b1 = 2 * a1 * cos(1.738 * arg)
c1 = pow(a1, 2)
coef2 = b1 + c1
coef3 = -(c1 + b1 * c1)
coef4 = pow(c1, 2)
coef1 = 1 - coef2 - coef3 - coef4
ssf = 0.0
ssf := coef1 * src + coef2 * nz(ssf[1]) + coef3 * nz(ssf[2]) + coef4 * nz(ssf[3])
ma(type, src, len) =>
float result = 0
if type=="TMA"
result := sma(sma(src, ceil(len / 2)), floor(len / 2) + 1)
if type=="MF"
ts=0.,b=0.,c=0.,os=0.
//----
alpha = 2/(len+1)
a = feedback ? z*src + (1-z)*nz(ts[1],src) : src
//----
b := a > alpha*a+(1-alpha)*nz(b[1],a) ? a : alpha*a+(1-alpha)*nz(b[1],a)
c := a < alpha*a+(1-alpha)*nz(c[1],a) ? a : alpha*a+(1-alpha)*nz(c[1],a)
os := a == b ? 1 : a == c ? 0 : os[1]
//----
upper = beta*b+(1-beta)*c
lower = beta*c+(1-beta)*b
ts := os*upper+(1-os)*lower
result := ts
if type=="LSMA"
result := linreg(src, len, 0)
if type=="SMA" // Simple
result := sma(src, len)
if type=="EMA" // Exponential
result := ema(src, len)
if type=="DEMA" // Double Exponential
e = ema(src, len)
result := 2 * e - ema(e, len)
if type=="TEMA" // Triple Exponential
e = ema(src, len)
result := 3 * (e - ema(e, len)) + ema(ema(e, len), len)
if type=="WMA" // Weighted
result := wma(src, len)
if type=="VAMA" // Volatility Adjusted
/// Copyright © 2019 to present, Joris Duyck (JD)
mid=ema(src,len)
dev=src-mid
vol_up=highest(dev,volatility_lookback)
vol_down=lowest(dev,volatility_lookback)
result := mid+avg(vol_up,vol_down)
if type=="HMA" // Hull
result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))
if type=="JMA" // Jurik
/// Copyright © 2018 Alex Orekhov (everget)
/// Copyright © 2017 Jurik Research and Consulting.
phaseRatio = jurik_phase < -100 ? 0.5 : jurik_phase > 100 ? 2.5 : jurik_phase / 100 + 1.5
beta = 0.45 * (len - 1) / (0.45 * (len - 1) + 2)
alpha = pow(beta, jurik_power)
jma = 0.0
e0 = 0.0
e0 := (1 - alpha) * src + alpha * nz(e0[1])
e1 = 0.0
e1 := (src - e0) * (1 - beta) + beta * nz(e1[1])
e2 = 0.0
e2 := (e0 + phaseRatio * e1 - nz(jma[1])) * pow(1 - alpha, 2) + pow(alpha, 2) * nz(e2[1])
jma := e2 + nz(jma[1])
result := jma
if type=="Kijun v2"
kijun = avg(lowest(len), highest(len))//, (open + close)/2)
conversionLine = avg(lowest(len/kidiv), highest(len/kidiv))
delta = (kijun + conversionLine)/2
result :=delta
if type=="McGinley"
mg = 0.0
mg := na(mg[1]) ? ema(src, len) : mg[1] + (src - mg[1]) / (len * pow(src/mg[1], 4))
result :=mg
if type=="EDSMA"
zeros = src - nz(src[2])
avgZeros = (zeros + zeros[1]) / 2
// Ehlers Super Smoother Filter
ssf = ssfPoles == 2
? get2PoleSSF(avgZeros, ssfLength)
: get3PoleSSF(avgZeros, ssfLength)
// Rescale filter in terms of Standard Deviations
stdev = stdev(ssf, len)
scaledFilter = stdev != 0
? ssf / stdev
: 0
alpha = 5 * abs(scaledFilter) / len
edsma = 0.0
edsma := alpha * src + (1 - alpha) * nz(edsma[1])
result := edsma
result
///SSL 1 and SSL2
emaHigh = ma(maType, high, len)
emaLow = ma(maType, low, len)
maHigh = ma(SSL2Type, high, len2)
maLow = ma(SSL2Type, low, len2)
///EXIT
ExitHigh = ma(SSL3Type, high, len3)
ExitLow = ma(SSL3Type, low, len3)
///Keltner Baseline Channel
BBMC = ma(maType, close, len)
useTrueRange = input(true)
multy = input(0.2, step=0.05, title="Base Channel Multiplier")
Keltma = ma(maType, src, len)
range = useTrueRange ? tr : high - low
rangema = ema(range, len)
upperk =Keltma + rangema * multy
lowerk = Keltma - rangema * multy
//Baseline Violation Candle
open_pos = open*1
close_pos = close*1
difference = abs(close_pos-open_pos)
atr_violation = difference > atr_slen
InRange = upper_band > BBMC and lower_band < BBMC
candlesize_violation = atr_violation and InRange
plotshape(candlesize_violation, color=color.white, size=size.tiny,style=shape.diamond, location=location.top, transp=0,title="Candle Size > 1xATR")
//SSL1 VALUES
Hlv = int(na)
Hlv := close > emaHigh ? 1 : close < emaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? emaHigh : emaLow
//SSL2 VALUES
Hlv2 = int(na)
Hlv2 := close > maHigh ? 1 : close < maLow ? -1 : Hlv2[1]
sslDown2 = Hlv2 < 0 ? maHigh : maLow
//EXIT VALUES
Hlv3 = int(na)
Hlv3 := close > ExitHigh ? 1 : close < ExitLow ? -1 : Hlv3[1]
sslExit = Hlv3 < 0 ? ExitHigh : ExitLow
base_cross_Long = crossover(close, sslExit)
base_cross_Short = crossover(sslExit, close)
codiff = base_cross_Long ? 1 : base_cross_Short ? -1 : na
//COLORS
show_color_bar = input(title="Color Bars", type=input.bool, defval=true)
color_bar = close > upperk ? #00c3ff : close < lowerk ? #ff0062 : color.gray
color_ssl1 = close > sslDown ? #00c3ff : close < sslDown ? #ff0062 : na
//PLOTS
plotarrow(codiff, colorup=#00c3ff, colordown=#ff0062,title="Exit Arrows", transp=20, maxheight=20, offset=0)
p1 = plot(show_Baseline ? BBMC : na, color=color_bar, linewidth=4,transp=0, title='MA Baseline')
DownPlot = plot( show_SSL1 ? sslDown : na, title="SSL1", linewidth=3, color=color_ssl1, transp=10)
barcolor(show_color_bar ? color_bar : na)
up_channel = plot(show_Baseline ? upperk : na, color=color_bar, title="Baseline Upper Channel")
low_channel = plot(show_Baseline ? lowerk : na, color=color_bar, title="Basiline Lower Channel")
fill(up_channel, low_channel, color=color_bar, transp=90)
////SSL2 Continiuation from ATR
atr_crit = input(0.9, step=0.1, title="Continuation ATR Criteria")
upper_half = atr_slen * atr_crit + close
lower_half = close - atr_slen * atr_crit
buy_inatr = lower_half < sslDown2
sell_inatr = upper_half > sslDown2
sell_cont = close < BBMC and close < sslDown2
buy_cont = close > BBMC and close > sslDown2
sell_atr = sell_inatr and sell_cont
buy_atr = buy_inatr and buy_cont
atr_fill = buy_atr ? color.green : sell_atr ? color.purple : color.white
LongPlot = plot(sslDown2, title="SSL2", linewidth=2, color=atr_fill, style=plot.style_circles, transp=0)
u = plot(show_atr ? upper_band : na, "+ATR", color=color.white, transp=80)
l = plot(show_atr ? lower_band : na, "-ATR", color=color.white, transp=80)
//ALERTS
alertcondition(crossover(close, sslDown), title='SSL Cross Alert', message='SSL1 has crossed.')
alertcondition(crossover(close, sslDown2), title='SSL2 Cross Alert', message='SSL2 has crossed.')
alertcondition(sell_atr, title='Sell Continuation', message='Sell Continuation.')
alertcondition(buy_atr, title='Buy Continuation', message='Buy Continuation.')
alertcondition(crossover(close, sslExit), title='Exit Sell', message='Exit Sell Alert.')
alertcondition(crossover(sslExit, close), title='Exit Buy', message='Exit Buy Alert.')
alertcondition(crossover(close, upperk ), title='Baseline Buy Entry', message='Base Buy Alert.')
alertcondition(crossover(lowerk, close ), title='Baseline Sell Entry', message='Base Sell Alert.')
2024-03-14
1272
글번호 177465
지표
답변완료
지표식을 검색식으로 변환 부탁 드립니다.ㅜㅡㅠ
안녕하세요.
아래와 같은 지표식을 작성 하였는데요.
이것을 "종목검색식"으로 바꾸는 것에 자꾸 오차가 생겨서
첨언을 받고자 질문을 드립니다! ㅜㅠ
※↓ 1분봉 지표 입니다!
//--------↓지표식 내용 첨부↓--------//
var : 카운트day(0);
if Bdate != Bdate[1] Then
{ 카운트day = 1; }
Else
{ 카운트day = 카운트day+1; }
Var: 구간최고가(0),구간최저가(0);
구간최고가 = Highest(H,카운트day);
구간최저가 = Lowest(L,카운트day);
var : 단일호가(0);
단일호가 = PriceScale * 1;
var : HL사이호가갯수A(0);
HL사이호가갯수A = (구간최고가 - 구간최저가)/ 단일호가;
var : 묶음호가갯수(0);
if HL사이호가갯수A <= 10 Then {묶음호가갯수 = 1;}
if HL사이호가갯수A > 10 Then {묶음호가갯수 = 4;}
if HL사이호가갯수A >= 20 Then {묶음호가갯수 = 6;}
##
Array:매물대[30,4](0);
Var : 총거래량(0);
총거래량 = AccumN(V,카운트day);
Var : 가격단위(0);
가격단위 = Ceiling( HL사이호가갯수A / 묶음호가갯수 ) * PriceScale * 1;
매물대[1,1] = 구간최저가;
매물대[1,2] = 매물대[1,1] + 가격단위;
매물대[1,3] = 0;
매물대[1,4] = 0;
Var : j(0);
For j = 2 To 묶음호가갯수
{ 매물대[j,1] = 매물대[j-1,1] + 가격단위;
매물대[j,2] = 매물대[j-1,2] + 가격단위;
매물대[j,3] = 0; }
Var : k(0);
For k = 0 To 카운트day -1
{
For j = 1 To 묶음호가갯수
{
If 매물대[j,1] <= C[k] and C[k] < 매물대[j,2] Then
{ 매물대[j,3] = 매물대[j,3] + V[k];
매물대[j,4] = 매물대[j,3] / 총거래량 * 100;
j = 묶음호가갯수; }
}
}
Var : q(0);
For j = 1 To 묶음호가갯수 - 1
{
For k = j + 1 To 묶음호가갯수
{
If 매물대[j,3] < 매물대[k,3] Then
{
For q = 1 To 4 // 열번호 1~4
{ var18 = 매물대[j,q]; // 데이터를 맞바꾸기
매물대[j,q] = 매물대[k,q];
매물대[k,q] = Var18; }
}
}
}
##
var : 매물유지기간(0);
if (매물대[1,1][1] != 매물대[1,1][0]) or (카운트day < 15) Then
{ 매물유지기간 = 0; }
if 매물대[1,1][1] == 매물대[1,1][0] Then
{ 매물유지기간 = 매물유지기간 + 1; }
var : 분봉매물보정_상(0) , 분봉매물보정_하(0);
if 15 < 카운트day and 3 <= 매물유지기간 Then
{
분봉매물보정_상 = 매물대[1,2][0];
분봉매물보정_하 = 매물대[1,1][0];
}
if 3 > 매물유지기간 Then
{
분봉매물보정_상 = 분봉매물보정_상[1];
분봉매물보정_하 = 분봉매물보정_하[1];
}
if Bdate != Bdate[1] Then
{
분봉매물보정_상 = 0;
분봉매물보정_하 = 0;
}
##
var : 매물중심(0);
매물중심 = (분봉매물보정_상+분봉매물보정_하)/2 ;
var : 일간매물중심(0);
var : 일간매물_상(0) , 일간매물_하(0);
if (분봉매물보정_상[1] < 매물중심[0] and 분봉매물보정_하[1] < 매물중심[0]) or
(분봉매물보정_상[1] > 매물중심[0] and 분봉매물보정_하[1] > 매물중심[0]) then
{ 일간매물중심 = 매물중심[0];
일간매물_상 = 분봉매물보정_상[0];
일간매물_하 = 분봉매물보정_하[0];
}
if (분봉매물보정_상[1] > 매물중심[0] and 분봉매물보정_하[1] < 매물중심[0]) then
{ 일간매물중심 = 일간매물중심[1];
일간매물_상 = 일간매물_상[1];
일간매물_하 = 일간매물_하[1];
}
if 분봉매물보정_상 != 0 and 분봉매물보정_하 != 0 and 일간매물중심 != 0 Then
{
Plot1( 일간매물중심 , "일간매물중심" , Blue , Def , 1 );
Plot2( 일간매물_상 , "일간매물_상" , LightRed , Def , 0 );
Plot3( 일간매물_하 , "일간매물_하" , LightRed , Def , 0 );
}
Else
{NoPlot(1);
NoPlot(2);
NoPlot(3);
}
//--------↑지표식 내용 첨부↑--------//
위 내용을 바탕으로 1분봉 상에서
Plot1에 해당하는 [ "일간매물중심" 보다 "Ema(c,5)"가 크다/작다 ]로
종목검색식을 작성하고자 하는데요.
조회봉수 500으로 해서 find해 봤지만 검색 결과가 엉뚱하게 나와서요..ㅜ
위 지표식에서 어떤 부분들을 고처야 검색이 정확하게 되는지 모르겠어서....ㅠ
글을 남깁니다 ㅠㅠㅠㅠㅠㅠ
2024-03-14
959
글번호 177463
종목검색