커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3357
글번호 230811
답변완료
종목검색식 요청드립니다.
120일이내 아래 신호가 발생된 모든 종목을 검색하는 검색식 요청드립니다.
항상감사드립니다.^^ (120일 기간은 제가 20일 또는 10일로 변경할 수 있게 부탁드립니다.)
A2=stochasticsslow(10,6);
A3=EAVG(A,6);
A4=stochasticsslow(5,3);
A5=EAVG(A,3);
B=ADX(11);
E= (highest(high,9)+lowest(low,9)+highest(high,26)+lowest(low,26))/4;
F= (highest(high,52)+lowest(low,52))/2;
((CROSSUP(C,E(25)) AND C>F(25)) OR
(CROSSUP(C,F(25)) AND C>E(25))) AND
(CROSSUP(A,A1) or CROSSUP(A2,A3) or CROSSUP(A4,A5))
AND B>B(1)
2024-03-14
794
글번호 177479
답변완료
지표와 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
891
글번호 177478
답변완료
문의드립니다
최근 60봉 내 최고점 A
최근 60봉 내 최저점 B
매수
종가 > A *0.8
종가 > B *1.5
매수청산
종가 < A *0.7
감사합니다
2024-03-14
701
글번호 177477
2wnwn 님에 의해서 삭제되었습니다.
2024-03-14
15
글번호 177475
답변완료
문의드립니다
Input:Period(200),n(0);
Var1 = MA(C,20);
Var2 = MA(C,60);
Var3 = (Var1-Var2);
{
Condition1 = Var3 == highest(Var3,Period)and C > 5000 ;
If
Condition1[n] == true Then
Find(1);
}
이런식으로 종목검색식을 만들어보았습니다 물론 지표도만들었구요 그런데 종목검색과 지표가 다르게 나옵니다 검색되어진종목을 챠트로보면 전혀맞지않는 지표가 보입니다
왜그런거죠?
2024-03-14
755
글번호 177467
답변완료
안녕하세요 수식문의 부탁드립니다^^
안녕하세요 항상 친절한 답변에 감사드립니다
궁금한점이 있어서 문의드립니다
아래수식에서 줄위에 수식이 이전값보다 높을때 검색이라고 생각하고 수식을 작성하였는데요 직점 검색해보니 이전값보다 낮을때도 검색이 되더라구요
어떻게애햐 이전값보다 높게 나온는 종목만 검색할수 있을까요?
그리고 제일 아래 있는식을 전에 답변받았는데요 사용해보니 검색하면 남는 종목은 있는데 사라지는종목도 있어라구요 혹시 왜 그런건가요??
u = mav >= z;
if u == true Then
w = c;
w >= w[1]
=========================================================
input : preiod(20),preiod2(60),Period3(120);
var : a(0),b(0),x(0),y(0),z(0),q(0),mav(0),u(False),w(0);
a = ma(c,preiod);
b = highest(a,preiod2);
x = ma(c,preiod);
y = lowest(x,preiod2);
z = (b+y)/2;
q = (b+z)/2;
mav = ma(c,Period3);
u = mav >= z;
if u == true Then
w = c;
if w >= w[1] and mav >= z and c >= q Then
find(1);
=============================================================
안녕하세요
예스스탁입니다.
1
문의하신 내용이 분봉주기에서 검색하는 내용이면
아래와 같이 종목검색식 자체를 수정하시면 가능합니다.
예를 들어 종목검색은 아래구조로 작성이 됩니다.
var1 = ma(C,5);
Var2 = ma(C,20);
if CrossUp(var1,Var2) Then //조건
Find(1);
현재봉에서 조건이 충족한것을 찾게 되는데
당일 한번이라도 조건이 충족된 종목을 찾게
아래와 같은 내용으로 변경하시면
당일 1회라도 조건이 만족한 종목을 모두 검색할 수 있습니다.
if sDate != sDate[1] Then
Condition1 = False;
var1 = ma(C,5);
Var2 = ma(C,20);
if CrossUp(var1,Var2) Then //조건
Condition1 = true;
if Condition1 == true Then
Find(1);
2024-03-14
688
글번호 177466
답변완료
수식변환
수고하십니다.
트레이딩부 지표인 "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
1422
글번호 177465
답변완료
안녕하세요
rsi, macd등 분봉에서 보면 전일부터 당일까지 갭포함한 데이터를 반영하여
연결되어 나타나는데
이걸 당일이 되면 초기화해서 당일 수치만으로 각 지표들이 표시되게 하고 싶습니다
두개 중에 하나만 예를 들어 써주시면 참고하겠습니다 ^^
2024-03-14
1008
글번호 177464
답변완료
지표식을 검색식으로 변환 부탁 드립니다.ㅜㅡㅠ
안녕하세요.
아래와 같은 지표식을 작성 하였는데요.
이것을 "종목검색식"으로 바꾸는 것에 자꾸 오차가 생겨서
첨언을 받고자 질문을 드립니다! ㅜㅠ
※↓ 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
1027
글번호 177463