답변완료
수식부탁드립니다^^)
박스권 일목균형표
============= 수식4 ============
AA=H(1)>highest(c(2), 20);
// or H(1)>highest(c(2), 60);
// cross up highest close till preday with Period 20 or 60
//AAA=(H>AA or H>AA(1));
// starting point of 5 kiss or crossup 20 eavg
BB=(C>eavg(C, 5) or crossup(C, eavg(C,20)));
BBB=BB or BB(1) or BB(2);
// crossup highest volume
CC=V(1)>highest(V(2), 20);
// or V(1)>highest(V(2), 60);
CCC=CC or CC(1) or CC(2);
// neg candle (or tail) // buy signal
DD=O>C and C<(abs(C(1)-O(1))*2/3+min(C(1),O(1)));
//support eavg(c, 20) //lower bound
EE= max(eavg(C, 5), eavg(C,20));
FF=(C>(highest(high(25),9)+lowest(low(25),9)+highest(high(25),26)+lowest(low(25),26))/4 ) and (C>(highest(high(25),52)+lowest(low(25),52))/2);
condition=AA and BBB and CCC and DD and FF;
valuewhen(1, condition, (abs(C(1)-O(1))*2/3+min(C(1), O(1))))
========== 수식5 ============
AA=H(1)>highest(c(2), 20);
// or H(1)>highest(c(2), 60);
// cross up highest close till preday with Period 20 or 60
//AAA=(H>AA or H>AA(1));
// starting point of 5 kiss or crossup 20 eavg
BB=(C>eavg(C, 5) or crossup(C, eavg(C,20)));
BBB=BB or BB(1) or BB(2);
// crossup highest volume
CC=V(1)>highest(V(2), 20);
// or V(1)>highest(V(2), 60);
CCC=CC or CC(1) or CC(2);
// neg candle (or tail) // buy signal
DD=O>C and C<(abs(C(1)-O(1))*2/3+min(C(1),O(1)));
//support eavg(c, 20) //lower bound
EE= max(eavg(C, 5), eavg(C,20));
FF=(C>(highest(high(25),9)+lowest(low(25),9)+highest(high(25),26)+lowest(low(25),26))/4 ) and (C>(highest(high(25),52)+lowest(low(25),52))/2);
condition=AA and BBB and CCC and DD and FF;
valuewhen(1, condition, max((abs(C(1)-O(1))*2/3+min(C(1), O(1)))*0.95, EE))
2023-01-05
1390
글번호 165120
지표
답변완료
수정 부탁합니다
안녕하세요^^
맨 아래입니다
input:length(6);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0),고점변곡(""),저점변곡("");
var : clr1(0),clr2(0),BE(0),SE(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(0==1,data2(C),data2(H));
LL = IFF(0==1,data2(C),data2(L));
If data2(Index) == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = data2(Highest(HH,length)) == HH and 최종고가 <> HH;
Condition2 = data2(Lowest (LL,length)) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
T = 1;
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(sTime);
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 0, 1);
Text_SetColor(Text1,Red);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,Gray);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(sTime);
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 1 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(sTime);
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 0, -1);
Text_SetColor(Text1,Blue);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,Gray);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(sTime);
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
if T == -1 and T[1] != -1 Then
{
TL12 = TL_New(고[2,3],고[2,4],고[2,1],data2(sdate),data2(stime),고[2,1]);
TL_Delete(TL13);
TL13 = TL_New(고[1,3],고[1,4],고[1,1],data2(Sdate),data2(Stime),고[1,1]);
TL_SetExtRight(TL13,true);
TL_SetSize(TL13,2);
TL_SetColor(TL12,clr1);
TL_SetSize(TL12,2);
clr1 = Pink;
TL_SetColor(TL13,Pink);
}
if T == 1 and T[1] != 1 Then
{
TL14= TL_New(저[2,3],저[2,4],저[2,1],data2(sdate),data2(stime),저[2,1]);
TL_Delete(TL15);
TL15= TL_New(저[1,3],저[1,4],저[1,1],data2(sdate),data2(stime),저[1,1]);
TL_SetExtRight(TL15,true);
TL_SetColor(TL14,clr2);
TL_SetSize(TL14,2);
clr2 = LightBlue;
TL_SetColor(TL15,clr2);
TL_SetSize(TL15,2);
}
#================================================================#
VAR:mav5(0),mav10(0),mav20(0),mav40(0),mav60(0),mav120(0);
mav5=ma(c,5);
mav10=ma(c,10);
mav20=ma(c,20);
mav40=ma(c,40);
mav60=ma(c,60);
mav120=ma(c,120);
condition1=CountIf(mav10<mav20,20) >= 10 and t==1 and
저[1,1] <mav20[Index-저[1,2]] and 고[1,1]>mav20[Index-고[1,2]];
var:box1(0);
if condition1 Then
{
Box1 = Box_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
Box_Setcolor(box1,MAGENTA);
Box_Setfill(box1,true,100,true);
}
//박스가 저[1,1]에서 고[1,1]까지 그려지게 수정 부탁드립니다
//countif 조건은 역배열 상태에서 만족 하면 됩니다(저[1,1]확정부터가 아닌)
//박스는 층층히 겹치는 부분을 없애주세요
//condition1 배열변수 가능하면 적용 부탁드립니다
감사합니다~
2023-01-05
1002
글번호 165110
지표
답변완료
변환좀 해주세요
바쁘신데 송구 합니다 .
아래의 트레이딩뷰의 지표를 예스로 변환좀 부탁 드립니다 .
가격캔들에 컬러를 넣도록 되어 있는것은 빼고 Heatmap Volume 만
보조지표로 만들도록 도움을 청합니다 . 감사합니다 .
이메일로 부탁드립니다 .
cybersta11@ naver.com
//@version=4
study(title="Heatmap Volume [xdecow]", shorttitle="HVol [xdecow]", max_bars_back=2000, format=format.volume)
//------------------------------------------------------------------------------
// Inputs
length = input(610, title="MA Length", type=input.integer, minval=2)
slength = input(610, title='Std Length', type=input.integer, minval=2)
cmode = input('Heatmap', 'Color Mode', options=['Heatmap', 'Up/Down'])
zmode = input('Backgrounds', 'Display Heatmap Zones as', options=['None', 'Lines', 'Backgrounds', 'Both'])
bcolor_enabled = input(true, 'Colored bars')
osc = input(false, 'Show as oscillator')
thresholdExtraHigh = input(4, title="Extra High Volume Threshold", type=input.float)
thresholdHigh = input(2.5, title="High Volume Threshold", type=input.float)
thresholdMedium = input(1, title="Medium Volume Threshold", type=input.float)
thresholdNormal = input(-0.5, title="Normal Volume Threshold", type=input.float)
//------------------------------------------------------------------------------
// Colors
// heatmap colors
chm1 = #ff0000 // extra high red
chm2 = #ff7800 // high orange
chm3 = #ffcf03 // medium yellow
chm4 = #a0d6dc // normal
chm5 = #1f9cac // low
// heatmap colors
chmthresholdExtraHigh = input(chm1, 'Heatmap Extra High')
chmthresholdHigh = input(chm2, 'Heatmap High')
chmthresholdMedium = input(chm3, 'Heatmap Medium')
chmthresholdNormal = input(chm4, 'Heatmap Normal')
chmthresholdLow = input(chm5, 'Heatmap Low')
// up colors
cupthresholdExtraHigh = input(#00FF00, 'Up Extra High')
cupthresholdHigh = input(#30FF30, 'Up High')
cupthresholdMedium = input(#60FF60, 'Up Medium')
cupthresholdNormal = input(#8FFF8F, 'Up Normal')
cupthresholdLow = input(#BFFFBF, 'Up Low')
// down colors
cdnthresholdExtraHigh = input(#FF0000, 'Down Extra High')
cdnthresholdHigh = input(#FF3030, 'Down High')
cdnthresholdMedium = input(#FF6060, 'Down Medium')
cdnthresholdNormal = input(#FF8F8F, 'Down Normal')
cdnthresholdLow = input(#FFBFBF, 'Down Low')
// threshold colors
cthresholdExtraHighUp = cmode == 'Heatmap' ? chmthresholdExtraHigh : cupthresholdExtraHigh
cthresholdHighUp = cmode == 'Heatmap' ? chmthresholdHigh : cupthresholdHigh
cthresholdMediumUp = cmode == 'Heatmap' ? chmthresholdMedium : cupthresholdMedium
cthresholdNormalUp = cmode == 'Heatmap' ? chmthresholdNormal : cupthresholdNormal
cthresholdLowUp = cmode == 'Heatmap' ? chmthresholdLow : cupthresholdLow
cthresholdExtraHighDn = cmode == 'Heatmap' ? chmthresholdExtraHigh : cdnthresholdExtraHigh
cthresholdHighDn = cmode == 'Heatmap' ? chmthresholdHigh : cdnthresholdHigh
cthresholdMediumDn = cmode == 'Heatmap' ? chmthresholdMedium : cdnthresholdMedium
cthresholdNormalDn = cmode == 'Heatmap' ? chmthresholdNormal : cdnthresholdNormal
cthresholdLowDn = cmode == 'Heatmap' ? chmthresholdLow : cdnthresholdLow
//------------------------------------------------------------------------------
// Calcs
length := length > bar_index + 1 ? bar_index + 1 : length
slength := slength > bar_index + 1 ? bar_index + 1 : slength
pstdev(Series, Period) =>
mean = sum(Series, Period) / Period
summation = 0.0
for i=0 to Period-1
sampleMinusMean = nz(Series[i]) - mean
summation := summation + sampleMinusMean * sampleMinusMean
return = sqrt(summation / Period)
mean = sma(volume, length)
std = pstdev(volume, slength)
stdbar = (volume - mean) / std
dir = close > open
v = osc ? volume - mean : volume
mosc = osc ? 0 : mean
bcolor = stdbar > thresholdExtraHigh ? dir ? cthresholdExtraHighUp : cthresholdExtraHighDn :
stdbar > thresholdHigh ? dir ? cthresholdHighUp : cthresholdHighDn :
stdbar > thresholdMedium ? dir ? cthresholdMediumUp : cthresholdMediumDn :
stdbar > thresholdNormal ? dir ? cthresholdNormalUp : cthresholdNormalDn :
dir ? cthresholdLowUp : cthresholdLowDn
// heatmap lines
zshow_lines = zmode == 'Lines' or zmode == 'Both'
zshow_backgrounds = zmode == 'Backgrounds' or zmode == 'Both'
tst = highest(v, min(300, bar_index+1)) * 9999
ts0 = osc ? lowest(v, min(300, bar_index+1)) * 9999 : 0
ts1 = std * thresholdExtraHigh + mosc
ts2 = std * thresholdHigh + mosc
ts3 = std * thresholdMedium + mosc
ts4 = std * thresholdNormal + mosc
//------------------------------------------------------------------------------
// Plots
barcolor(bcolor_enabled ? bcolor : na, editable=false)
// hidden heatmap lines to fill
pt = plot(zshow_backgrounds ? tst : na, color=na, display=display.none, editable=false)
p0 = plot(zshow_backgrounds ? ts0 : na, color=na, display=display.none, editable=false)
p1 = plot(zshow_backgrounds ? ts1 : na, color=na, display=display.none, editable=false)
p2 = plot(zshow_backgrounds ? ts2 : na, color=na, display=display.none, editable=false)
p3 = plot(zshow_backgrounds ? ts3 : na, color=na, display=display.none, editable=false)
p4 = plot(zshow_backgrounds ? ts4 : na, color=na, display=display.none, editable=false)
// heatmap fills
tpf = 85
//fill(pt, p1, chm1, transp=tpf, title='Extra High heatmap zone')
fill(p1, p2, chm2, transp=tpf, title='High heatmap zone')
fill(p2, p3, chm3, transp=tpf, title='Medium heatmap zone')
fill(p3, p4, chm4, transp=tpf, title='Normal heatmap zone')
fill(p4, p0, chm5, transp=tpf, title='Low heatmap zone')
// volume
plot(v, color=bcolor, style=plot.style_columns, title='Volume', transp=0, editable=false)
// moving average
plot(osc ? na : mean, color=#000000, linewidth=2, title='Moving Average', style=plot.style_line, transp=0, display=display.none)
// heatmap lines
tpp = 50
plot(zshow_lines ? ts1 : na, color=chm1, title='Extra High heatmap line', transp=tpp)
plot(zshow_lines ? ts2 : na, color=chm2, title='High heatmap line', transp=tpp)
plot(zshow_lines ? ts3 : na, color=chm3, title='Medium heatmap line', transp=tpp)
plot(zshow_lines ? ts4 : na, color=chm4, title='Normal heatmap line', transp=tpp)
2023-01-05
1122
글번호 165109
지표