커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1513
글번호 230811
러블리 님에 의해서 삭제되었습니다.
2023-08-28
40
글번호 171883
답변완료
문의 드립니다
1.
Input: Length(5), Pval(0.05);
Buy ("CBI_LE", AtStop, Highest(High, Length) + Pval);
ExitLong("CBI_SE", AtStop, Lowest(Low, Length) - Pval);
2.
Input: Length(5), Pval(0.05);
ExitShort ("CBI_LE", AtStop, Highest(High, Length) + Pval);
Sell("CBI_SE", AtStop, Lowest(Low, Length) - Pval);
----------------
1,2번 수식어에 2가지 조건일때 진입을 하고자 합니다.
1.
1번 수식어는 5 이동평균선이 80 이동평균선보다 위에 있고
이격도 80의 기준선이 100 이상 일때 진입입니다.
익절 100틱 손절 100틱
청산은 동일 합니다.
2.
2번 수식어는 5 이동평균선이 80 이동평균선보다 아래에 있고
이격도 80의 기준선이 100 이하 일때 진입입니다.
익절 100틱 손절 100틱
청산은 동일 합니다.
추가로 익절이나 손절 청산시 잔고가 소멸 되질않고 반대포지션의 수량이 계속진행형인데
잔고가 없게 할수 있는지 별도의 수식어도 부탁 드립니다.
미리 감사드립니다.
2023-08-28
756
글번호 171881
이민섭 님에 의해서 삭제되었습니다.
2023-08-28
10
글번호 171880
이민섭 님에 의해서 삭제되었습니다.
2023-08-28
12
글번호 171879
답변완료
부탁드립니다.
변형 부탁 드립니다.
price = input(hl2, "Price")
colorNormLength = input(3, "colorNormLength", input.integer)
dpoLength = input(13, "dpoLength", input.integer)
moboDisplace = input(0, "moboDisplace", input.integer)
moboLength = input(10, "moboLength", input.integer)
numDevDn = input(-0.8, "numDevDn", input.float)
numDevUp = input(0.8, "numDevUp", input.float)
coloredMobo = input(true, "coloredMobo")
coloredFill = input(true, "coloredFill")
breakArrows = input(true, "breakArrows")
moboShowMid = input(true, "moboShowMid")
//def DPO = price - Average(price[DPO_length / 2 + 1], DPO_length);
xsma = sma(price[dpoLength / 2 + 1], dpoLength)
//xsma = sma(price, dpoLength)
DPO = price - xsma
Midline = sma(DPO, moboLength)
sDev = stdev(DPO, moboLength)
LowerBand = Midline + numDevDn * sDev
UpperBand = Midline + numDevUp * sDev
plot(DPO, color=color.yellow,linewidth=2)
plot(Midline, color=Midline > Midline[1] ? color.lime : color.red,linewidth=2)
Upper = plot(UpperBand, color=color.black,linewidth=1)
Lower = plot(LowerBand, color=color.black,linewidth=1)
plot(0, color=color.white,linewidth=1)
Signal1 = DPO > UpperBand and DPO[1] < UpperBand[1]
Signal2 = DPO < LowerBand and DPO[1] > LowerBand[1]
wasUp = 1
wasDn = 1
wasUp := Signal1 ? 1 : (Signal2 ? 0 : nz(wasUp[1]))
wasDn := Signal2 ? 1 : (Signal1 ? 0 : nz(wasDn[1]))
//plotshape(Signal1 and wasDn[1] ? UpperBand : na, style=shape.arrowup, location=location.absolute, size=size.normal, color=color.red)
//plotshape(Signal2 and wasUp[1] ? LowerBand : na, style=shape.arrowdown, location=location.absolute, size=size.normal, color=color.green)
plotshape(Signal1 and wasDn[1] ? UpperBand : na, style=shape.labelup, location=location.absolute, size=size.normal, color=color.green, text="Buy",textcolor=color.white)
plotshape(Signal2 and wasUp[1] ? LowerBand : na, style=shape.labeldown, location=location.absolute, size=size.normal, color=color.red, text="Sell",textcolor=color.white)
fill(Upper, Lower, color=color.purple)
alertcondition(Signal1 and wasDn[1], "Break Out Arrow", "Break Out Arrow")
alertcondition(Signal2 and wasUp[1], "Break Down Arrow", "Break Down Arrow")
2023-08-28
976
글번호 171878
답변완료
수식 문의드립니다.
안녕하세요.
해외선물 틱 차트로 거래하려고 하는데요
틱 차트는 하나의 봉이 만들어지는 시간이 매번 다른 것으로 알고 있는데요
봉이 만들어지는 시간이 30초 이하일 경우에 진입을 하고(BUY, SELL)
봉이 만들어지는 시간이 50초 이상일 경우에 청산을 하는(Exitlong, Exitshort)
함수는 어떻게 작성할 수 있을까요?
항상 감사드립니다.
2023-08-27
1121
글번호 171877
답변완료
문의드립니다.
input: P(90), Q(25),R(50), N(100) ;
LL=Lowest(L,240);
질문1) 현재로부터 N봉 내에서 LL대비 P%이상 상승했다가 최고점 HH대비 Q%이상 하락조정이 처음으로 이루어지는 종목검색식을 부탁드립니다. 즉, 바닥대비 P%이상 상승했다가 조금씩 하락조정은 몇 번 있었지만 Q%이상 하락하는 것이 딱 1번 있는 종목을 구하는 검색식을 구하고 싶습니다. (★단 R%이상 하락한 종목은 제외)
질문2) 다른 조건은 위와 같고 Q%이상 하락하는 것이 딱 1번만 일어난 것이 아니라 2번째 일어나고 있는 종목을 구하는 검색식도 부탁드립니다. (★단1번이라도 R%이상이 일어난 종목은 제외)
* 추가로 수정,첨가할 부분이 많아서 가급적 주석도 좀 달아 주시면 더욱 감사하겠습니다.
항상 친절하게 답변해 주셔서 감사드립니다.
2023-08-27
829
글번호 171875
답변완료
연장선 좀 부탁 드립니다.
* 안녕하세요^^ 항상 많은 도움에 고맙습니다.
* 요청 사항1 ▶ 아래 수식에서 우측선 연장 부탁 드립니다.
즉 다음 신호 나올때 까지 우측선 부탁 드립니다.(bb는 삭제)
기존왼쪽선은 그대로 두고
다음 고가선 혹은 저가선이 발생할때 까지 우측선 연장
// 아래방식으로 Else 를 써 보았는데 수직선이 생기는데 잘못한게 뭐죠?
// Else
{
TL_SetEnd(HTL[0],sDate,sTime,bb);
Text_SetLocation(TX,sDate,sTime,bb);
}
// 이것을 사용 해봤는데 수직선이 생김니다.
// 어느부분이 잘못되었나요?
* 요청 사항2 ▶ 마지막 봉 기준 하락율좀 부탁 드립니다.(피보나치선)
즉 맨 마지막 봉 기준
마지막 봉대비 0.25 하락한 우측 추세선(굵기 0) 점선
마지막 봉대비 0.38 하락선 우측 추세선(굵기 0) 점선
마지막 봉대비 0.50 하락선 우측 추세선(굵기 0) 점선
마지막 봉대비 -0.25 하락선 우측 추세선(굵기 0) 점선
마지막 봉대비 -0.38 하락선 우측 추세선(굵기 0) 점선
마지막 봉대비 -0.50 하락선 우측 추세선(굵기 0) 점선
6개 추세선이 상기 우측 연장선 하고 같이 생기도록 부탁 드립니다.
▶새로운 추세선이 발생하면 종료 하고 새로운 추세선 가격 기준 6개선 발생 하면서
이전 추세선은 1개(변수) 까지만 6개선 점선 표시 (2개 이전은 삭제)
즉 추세선 2개(변수) 라면 3개이전은 삭제
* 혹시 6개선이 안생긴다면 Lowest(L,P)[1] 를 Lowest(L,P)[3] 바꾸어도 됨니다
<아래수식>
input : bb(10);
var : TX(0);
input : P(10),n(9),틱(5);
var : cnt(0),LL(0),HH(0);
Array : LTL[10](0),HTL[10](0);
if L < Lowest(L,P)[1] and (LL == 0 or (LL > 0 and abs(L-LL) >= PriceScale*틱)) Then
{
LL = L;
For cnt = 9 DownTo 1
{
LTL[cnt] = LTL[cnt-1];
}
LTL[0] = TL_new(sDate,sTime,LL,sDate[200],sTime[200],LL);
TL_SetColor(LTL[0],Blue);
TL_Delete(LTL[n]);
}
if H > highest(H,P)[1] and (HH == 0 or (HH > 0 and abs(H-HH) >= PriceScale*틱)) Then
{
HH = H;
For cnt = 9 DownTo 1
{
HTL[cnt] = HTL[cnt-1];
}
HTL[0] = TL_new(sDate,sTime,HH,sDate[200],sTime[200],HH);
TL_SetColor(HTL[0],Red);
TL_Delete(HTL[n]);
}
// 아래부분 이 잘못 된거 갔습니다. 수정좀 요청 드립니다.
Else
{
TL_SetEnd(HTL[0],sDate,sTime,bb);
Text_SetLocation(TX,sDate,sTime,bb);
}
* 고맙습니다 행복한 날 되십시요^^
좋은날 있을것 입니다.
2023-08-28
1373
글번호 171874
답변완료
안녕하세요 수식문의 부탁드립니다^^
안녕하세요 고생이 많으세요 종목검색수식문의를 부탁드리려고합니다.
아래수식 2가지를 사용중인데요 하나로 합쳐서 결과를 보고싶습니다
잘부탁드리겠습니다.^^
==============================================
input : 단기(20),중기(60),장기(120);
input : Multiple(1000);
var : p(0),k(0),q(0),x(0),y(0),z(0);
p = (highest(high,단기)+lowest(low,단기))/2;
k = (highest(high,중기)+lowest(low,중기))/2;
q = (p+k)/2;
x = (highest(high,장기)+lowest(low,장기))/2;
y = (highest(high,장기)+lowest(low,장기))/2;
z = (x+y)/2;
var1 = (q-z)/q*100;
if CrossUp(var1,0) and V[1] * (Multiple/100) <= V Then
find(1);
==============================================
input : 단기(20),중기(60),장기(120);
var : p(0),k(0),q(0),x(0),y(0),z(0),a(False),b(0);
p = (highest(high,단기)+lowest(low,단기))/2;
k = (highest(high,중기)+lowest(low,중기))/2;
q = (p+k)/2;
x = (highest(high,장기)+lowest(low,장기))/2;
y = (highest(high,장기)+lowest(low,장기))/2;
z = (x+y)/2;
a = Crossdown((q-z)/q*1000, 0);
if a == true Then
b = c;
if b > 0 and CrossUp(C,b) Then
Find(1);
2023-08-27
1365
글번호 171873