예스스탁
예스스탁 답변
2024-05-02 16:08:05
안녕하세요
예스스탁입니다.
input : prd(20);
input : maxi(10);
input : mini(3);
input : bUp(Green);
input : bdn(Red);
input : pCol(Cyan);
var : b(0);
var : pvtHi(0),pvtLo(0),breakoutdn(False),breakoutup(False);
var : ph(Nan),pl(Nan),phL(Nan),plL(Nan),bo(Nan),boL(Nan);
var : TL1(0),TL2(0),TX(0);
b = index;
pvtHi = SwingHigh(1,H,prd,prd,prd*2+1);
pvtLo = SwingLow(1,L,prd,prd,prd*2+1);
breakoutdn = False;
breakoutup = false;
if pvtHi > 0 Then
{
ph = high[prd];
phL = b[prd];
}
if pvtLo > 0 Then
{
pl = low[prd];
plL = b[prd];
}
if CrossUp(close,ph) Then
{
tl1 = TL_New(sDate[b-phl],sTime[b-phl],ph,sDate,sTime,ph);
TL_SetColor(TL1,pcol);
TL_SetStyle(TL1,2);
bo = low;
boL = b;
ph = Nan;
}
if CrossDown(close,pl) Then
{
tl1 = TL_New(sDate[b-pll],sTime[b-pll],pl,sDate,sTime,pl);
TL_SetColor(TL1,pcol);
TL_SetStyle(TL1,2);
bo = high;
boL = b;
pl = Nan;
}
if CrossDown(close,bo) and b-boL<=maxi and b-boL>=mini Then
{
tl2 = TL_New(sDate[b-bol],sTime[b-Bol],bo,sDate,sTime,bo);
TL_SetColor(TL1,bup);
TL_SetStyle(TL1,2);
breakoutdn = true;
bo = Nan;
}
if CrossUp(close,bo) and b-boL<=maxi and b-boL>=mini Then
{
tl2 = TL_New(sDate[b-bol],sTime[b-Bol],bo,sDate,sTime,bo);
TL_SetColor(TL1,bdn);
TL_SetStyle(TL1,2);
breakoutup = true;
bo = Nan;
}
if CrossUp(close,bo) or CrossDown(close,bo) Then
{
bo = Nan;
if b-boL < mini Then
TL_Delete(TL1);
}
if IsNan(bo) == False Then
{
if b-boL>maxi Then
{
bo = Nan;
TL_Delete(TL1);
}
}
if breakoutup == true Then
{
tx = Text_New(sDate,sTime,L,"▲");
Text_SetStyle(tx,2,0);
Text_SetColor(tx,bup);
Text_SetSize(tx,20);
}
if breakoutdn == true Then
{
tx = Text_New(sDate,sTime,H,"▼");
Text_SetStyle(tx,2,1);
Text_SetColor(tx,bdn);
Text_SetSize(tx,20);
}
즐거운 하루되세요
> seayun1 님이 쓴 글입니다.
> 제목 : 수식 전환 부탁드립니다
> 안녕하세요
항상 감사합니다
수식 전환 부탁드립니다
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © Zeiierman
//@version=5
indicator("2B Reversal Pattern (Expo)",overlay=true,max_lines_count=500)
// ~~ ToolTips {
t1 = "Set the pivot period."
t2 = "Set the maximum bars until the pattern should be completed. This means establishing a limit on the number of bars allowed for the completion of the pattern. A high value returns more signals."
t3 = "Set the minimum bars before the breakout. This means establishing a minimum number of bars that must be completed before the breakout. A low value returns more signals."
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Inputs {
prd = input.int(20, title="Period",minval=1, tooltip=t1)
max = input.int(10, title="Maximum Break Length",minval=1, tooltip=t2)
min = input.int(3, title="Minimum Break Length",minval=1, tooltip=t3)
bUp = input.color(#6ce5a0,"", inline="col"), bDn = input.color(#f23645,"", inline="col"), pCol = input.color(color.new(color.aqua,0),"",inline="col")
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Variables {
b = bar_index
var ph = float(na)
var pl = float(na)
var phL = int(na)
var plL = int(na)
var bo = float(na)
var boL= int(na)
breakoutup = false
breakoutdn = false
var array<line> lines = array.new<line>(0)
var active= line(na)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Pivots {
pvtHi = ta.pivothigh(high,prd,prd)
pvtLo = ta.pivotlow(low,prd,prd)
if pvtHi
ph := high[prd]
phL:= b[prd]
if pvtLo
pl := low[prd]
plL:= b[prd]
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Pattern Detection {
if ta.crossover(close,ph)
bo := low
boL:= b
lines.push(line.new(phL,ph,b,ph,color=pCol,style=line.style_dashed))
ph := float(na)
if ta.crossunder(close,pl)
bo := high
boL:= b
lines.push(line.new(plL,pl,b,pl,color=pCol,style=line.style_dashed))
pl := float(na)
if ta.crossunder(close,bo) and b-boL<=max and b-boL>=min
line.delete(active)
lines.push(line.new(boL,bo,b,bo,color=bDn,style=line.style_solid,width=2))
breakoutdn := true
bo := float(na)
if ta.crossover(close,bo) and b-boL<=max and b-boL>=min
line.delete(active)
lines.push(line.new(boL,bo,b,bo,color=bUp,style=line.style_solid,width=2))
breakoutup := true
bo := float(na)
if ta.cross(close,bo)
bo := float(na)
p2 = lines.pop()
line.delete(p2)
if not na(bo)
active := line.new(boL,bo,b,bo,color=pCol,style=line.style_solid,width=2)
line.delete(active[1])
if b-boL>max
bo := float(na)
p2 = lines.pop()
line.delete(p2)
line.delete(active)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Plots {
plotshape(breakoutup?low:na, title="Breakout Up", color=bUp, style=shape.triangleup,location=location.belowbar,size=size.small)
plotshape(breakoutdn?high:na, title="Breakout Down", color=bDn, style=shape.triangledown,location=location.abovebar,size=size.small)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Alerts {
alertcondition(breakoutup, 'Breakout Up', 'Breakout Up')
alertcondition(breakoutdn, 'Breakout Down', 'Breakout Down')
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}