커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1710
글번호 230811
답변완료
tsi선이 signal선을 골든크로스하는 종목검색
반갑습니다.
예스트레이더에서 아래에 있는 키움수식으로 종목검색을 하고싶습니다.
Mtm1=C(1)-C;
Mtm2=abs(Mtm1);
rPeriod;
sPeriod;
Period;
tsi=MA(MA(Mtm1, rPeriod,지수),sPeriod,지수)/
MA(MA(Mtm2,rPeriod,지수),sPeriod,지수)*-100;
signal=eavg(tsi,Period);
crossup(tsi,signal)
지표변수
rPeriod 12, sPeriod 26 , Period 9
이상입니다.
상기 tsi선이 signsl선을 골든크로스 하는 종목을 찾도록 부탁드립니다.
감사합니다.
2024-09-01
907
글번호 183038
답변완료
PDI 가 MDI를 크로스업.....
1. PDI 가 MDI를 크로스업할 때는 바로 그 봉 아래에, 크로스다운할 때는
그 봉 위에 두께 3정도의
빨간 점, 파란 점 1개 씩만 표시하는 수식 부탁드립니다.
아래와 같은 수식을 쓰면 계속적으로 점이 표시되는 데, 교차하는 그 지점만 표시할수
있게 수정해주시기 바랍니다.
if CrossUp(PDI,MDI) Then Plot1(L-PriceScale*1,"검색",Magenta);
if CrossUp(MDI,PDI) Then Plot1(L-PriceScale*1,"검색",Blue);
2. 그리고 ADX선이 기준선25 아래에 있을때 그 두가지 선들의 사이를 노란색으로
채워서 나타내는 식을 부탁드립니다. 미리 감사드립니다.
2024-09-01
772
글번호 183037
다올 님에 의해서 삭제되었습니다.
2024-09-01
9
글번호 183036
답변완료
적용가능하도록 부탁드립니다.
**트레이팅뷰의 지표입니다. 적용가능하도록 부탁 드립니다.
indicator("Triple Confirmation Kernel Regression Oscillator Overlay [QuantraAI]", "KRO Overlay [QuantraAI]", true, format.price, timeframe = "", timeframe_gaps = false)
import QuantraAI/QuantraMAs/2 as DynamicMA
import QuantraSystems/DynamicFunctions/1 as DynamicFunc
var string KRS = "??? ??????? - Settings", var string KRU = "??? ??????? - UI"
source = input.source(close, "Source", group = KRS)
bandwidth = input.int (45, "Bandwidth", 1, group = KRS, tooltip = "Length of the Kernel Regression calculation")
width = input.float (2, "Width", step = 0.2, group = KRS, tooltip = "Smoothes the Signal")
sdLook = input.int (150, "Standard Deviation Lookback", group = KRS, tooltip = "Length of the SD bands lookback period")
sdMult = input.float (3, "Standard Deviation Extreme for OB/OS Border", step = 0.5, group = KRS, tooltip = "Defines the outer border of the SD bands. ₩nThe inner border begins at 50% of the SD Multiplier")
ColMode = input.string("Modern", "Color Palette Choice", inline = "QQ1", group = KRU, options = ["Classic", "Modern", "Robust", "Accented", "Monochrome"])
man = input.bool (false, "Custom Palette", inline = "QQ1", group = KRU)
manUpC = input.color (#00ff00, "Custom Up", inline = "man", group = KRU)
manDnC = input.color (#ff0000, "Custom Down", inline = "man", group = KRU)
sig = input.bool (false, "Show Trend Signals", group = KRU)
BCol = input.bool (true, "Enable Bar Coloring", group = KRU)
devS = input.bool (true, "Enable Deviation Band Shading", group = KRU)
OBOS = input.bool (true, "Enable Overbought/Oversold Shading", group = KRU)
TR = input.int (85, "Shading Transparency", 0, 100, group = KRU)
// Color assignment based on the
[UpC, DnC] = switch ColMode
"Classic" => [#00E676, #880E4F]
"Modern" => [#5ffae0, #c22ed0]
"Robust" => [#ffbb00, #770737]
"Accented" => [#9618f7, #ff0078]
"Monochrome" => [#dee2e6, #495057]
// Override with custom colors if manual
[UpCol, DnCol] = switch man
false => [UpC, DnC ]
true => [manUpC, manDnC]
// Achieves a non-deciaml tick size
rescale(src) => src * (1 / syminfo.mintick)
descale(src) => src / (1 / syminfo.mintick)
// Rescale the Input Source
source := rescale(source)
Wave = descale(DynamicFunc.waveCalculation (source, bandwidth, width ))
// Triple Confirmations
Ep = descale(DynamicFunc.kernelRegression(source, bandwidth, 'Epanechnikov' ))
Lo = descale(DynamicFunc.kernelRegression(source, bandwidth, 'Logistic' ))
Wa = descale(DynamicFunc.kernelRegression(source, bandwidth, 'Wave' ))
// Average
AV = math.avg(Ep, Lo, Wa) + close
Mid = DynamicMA.SMA(AV, sdLook)
arrUp = Wave > Wave[1] and not (Wave[1] > Wave[2])
arrDn = Wave < Wave[1] and not (Wave[1] < Wave[2])
// Standard Deviation Bands
[_, u1, l1] = DynamicFunc.stdv_bands(AV, sdLook, sdMult/2)
[_, u2, l2] = DynamicFunc.stdv_bands(AV, sdLook, sdMult)
// Define shared display settings
var all = sig ? display.all : display.none
// Main Plots
pu1 = plot (u1, "1.???? +", color.new(DnCol, 70) )
pl1 = plot (l1, "1.???? -", color.new(UpCol, 70) )
pu2 = plot (u2, "2.???? +", color.new(DnCol, 70) )
pl2 = plot (l2, "2.???? -", color.new(UpCol, 70) )
mid = plot (Mid, "Mid", color.gray, 2 )
HL2 = plot (hl2, "", color (na) )
wave = plot (Wave, "???????????? ????????", BCol ? color (na) : Wave > Wave[1] ? UpCol : DnCol, 3 ),
fill (pu1, pu2, u2, u1, devS ? color.new(DnCol, 60) : na, color.new(chart.bg_color, 55) ),
fill (pl1, pl2, l2, l1, devS ? color.new(UpCol, 60) : na, color.new(chart.bg_color, 55) ),
fill (wave, HL2, Wave, hl2, BCol ? color.new(Wave > Wave[1] ? UpCol : DnCol, 50) : na, color.new(chart.bg_color, 75) ),
plotshape(arrUp, "Trend", shape.arrowup, location.belowbar, UpCol, 0, "Up", UpCol, size = size.auto, display = all ),
plotshape(arrDn, "Trend", shape.arrowdown, location.abovebar, DnCol, 0, "Down", DnCol, size = size.auto, display = all ),
bgcolor (OBOS ? (AV > u2 ? color.new(DnCol, TR) : AV < l2 ? color.new(UpCol, TR) : na) : na),
barcolor (BCol ? Wave > Wave[1]? UpCol : DnCol: na)
2024-09-01
1080
글번호 183035
겐지 님에 의해서 삭제되었습니다.
2024-09-01
50
글번호 183034
답변완료
키움 종목검색
후팬반=(shift(close,-13+1));
후팬정=(shift(close,-26+1));
CrossUP(후팬정, 후팬반)&&
CrossUP(5,40)
2024-09-01
649
글번호 183033
박셰프 님에 의해서 삭제되었습니다.
2024-09-01
76
글번호 183032
답변완료
문의드립니다.
88832번을 적용시켜보면 작동이 안되는 거 같습니다.
한번 확인 부탁드려도 될까요?
노고에 늘 감사드립니다~
2024-09-01
785
글번호 183031
답변완료
수고하십니다
더운데 고생 많으십니다
아래식을 라인2에도달시 매수 라인3 에 도달시 청산식
1 시스템과
2 지표로
캔들에 라인2가 도달된 캔들지점에동그라미나삼각이나표시로
라인3인도달시청산표시 꼭 부탁드립니다
다가오는추석 잘보내시고 수고하세요
input:length(6),n(1);
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),md1(0),md2(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(0==1,C,H);
LL = IFF(0==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = 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] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 1 == 1 Then
TL_SetSize(TL1,n);
TL_SetColor(TL1,White);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = 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] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
TL_SetSize(TL1,n);
TL_SetColor(TL1,WHITE);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = 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 고[1,1] > 0 Then
{
if T == 1 and T != T[1] Then
md1 = 0;
Else
{
if 고[1,1] != 고[1,1][1] Then
md1 = 0;
Else
{
if (L-고[1,1])/고[1,1]*100 < md1 Then
md1 = (L-고[1,1])/고[1,1]*100;
}
}
plot1(Md1);
}
if 저[1,1] > 0 Then
{
if T == -1 and T != T[1] Then
md2 = 0;
Else
{
if 저[1,1] != 저[1,1][1] Then
md2 = 0;
Else
{
if (H-저[1,1])/저[1,1]*100 > md2 Then
md2 = (H-저[1,1])/저[1,1]*100;
}
}
plot2(Md2);
}
PlotBaseLine1(0);
PlotBaseLine2(-50);
PlotBaseLine3(50);
2024-09-01
780
글번호 183030