커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1378
글번호 230811
뎅이요 님에 의해서 삭제되었습니다.
2024-09-10
0
글번호 183335
답변완료
부탁드립니다
1.과거 10개봉이내 거래량이 가장 많으면서 종가가 양봉이면 빨강색으로, 과거 10개봉이내 거래량이 가장 많으면서 종가가 음봉이면 파란색으로 구현해 주세요
2. 매 시간 거래량이 양봉으로 가장 많이 갱신되면 해당 봉에 빨강색으로, 매 시간 거래량이 음봉으로 가장 많이 갱신되면 해당 봉에 파란색으로 구현해 주세요
3. 매일 장이 시작한 후 거래량이 가장 많이 갱신될 때마다 해당 봉이 양봉이면 빨강색으로, 음봉이면 파란색으로 구현해 주세요
고맙습니다.
2024-09-11
529
글번호 183333
와우리 님에 의해서 삭제되었습니다.
2024-09-11
29
글번호 183319
살빼고싶다 님에 의해서 삭제되었습니다.
2024-09-10
35
글번호 183317
답변완료
수정 부탁드립니다.
input : pPriceVal(NumericSimple), pPeriod(NumericSimple);
var : v0(0), v1(0), v2(0), v3(0), v4(0), v5(0), v6(0), ii(0), vResult(0);
v0 = 0;
v1 = 0;
v2 = 0;
v3 = 0;
v4 = 0;
v5 = 0;
v6 = pPeriod;
vResult = 0;
For ii = 0 To (v6 - 1) step 1
Begin
v1 = pPriceVal[ii] - pPriceVal[ii + 1];
If v1 < 0 Then
Begin
v0 = - v1;
v1 = 0;
End
Else If v1 >= 0 Then
Begin
v0 = 0;
End;
v2 = v2 + v1;
v3 = v3 + v0;
End;
v4 = v2 / v6;
v5 = v3 / v6;
If (v4 + v5) != 0 Then
vResult = 100 * v4 / (v4 + v5);
Else
vResult = 0;
RSIOrig = vResult;
2024-09-10
582
글번호 183316
답변완료
함수요청
안녕하세요?
아래 전략에 대해 스크립트 작성 부탁드립니다.
국내선물 일봉상 현주가가(일봉상 종가 위치),
동행스팬의 양구름대 위에 있으면서 선행스팬이 양에서 음으로 교차완성하면 익봉시가에 매도진입
동행스팬의 음구름대 아래에 있으면서 선행스팬이 음에서 양으로 교차완성하면 익봉시가에 매수진입
진입 후 9번째 봉에 청산
여기서 편의상 구분을 짓기 위해 선행스팬의 개념은 통상적인 의미이며
동행스팬 현주가가 위치한 날짜의 선행스팬입니다.
동행스팬 1은 26일 전의 주가의 (기준선+전환선)/2이고
동행스팬 2는 26일 전의 주가의 (당시 최근 52일간의 캔들 최고가 + 당시 최근 52일 간의 캔들 최저가)/2입니다.
2024-09-10
516
글번호 183315
답변완료
문의드립니다
input : tenkan_len(9),tenkan_mult(2),kijun_len(26),kijun_mult(4),spanB_len(52),spanB_mult(6),offset(26);
Input : 수량1(1),수량2(2),당일수익틱수1(100),당일손실틱수1(200);
Input : 당일수익틱수2(200),당일손실틱수2(300);
Var : N1(0),dayPl(0),당일수익1(0),당일손실1(0),당일수익2(0),당일손실2(0),vol(0);
var : Xcond(false);
var : ATR1(0),up1(0),dn1(0),upper1(0),lower1(0),os1(0),spt1(0),max1(0),min1(0),tenkan(0);
var : ATR2(0),up2(0),dn2(0),upper2(0),lower2(0),os2(0),spt2(0),max2(0),min2(0),kijun(0);
var : senkouA(0);
var : ATR3(0),up3(0),dn3(0),upper3(0),lower3(0),os3(0),spt3(0),max3(0),min3(0),senkouB(0);
var : tenkan_css(0),kijun_css(0),cloud_a(0),cloud_b(0),chikou_css(0),tx(0);
ATR1 = ATR(tenkan_len)*tenkan_mult;
up1 = (h+L)/2 + ATR1;
dn1 = (h+L)/2 - ATR1;
upper1 = iff(C[1] < upper1[1],min(up1,upper1[1]),up1);
lower1 = iff(C[1] > lower1[1],max(dn1,lower1[1]),dn1);
os1 = iff(c > upper1 , 1 ,IFf(c < lower1, 0 , os1[1]));
spt1 = iff(os1 == 1 , lower1 , upper1);
max1 = iff(CrossUp(c,spt1) or CrossDown(c,spt1) , max(c,max1[1]) , IFf(os1 == 1 , max(c,max1[1]) , spt1));
min1 = iff(CrossUp(c,spt1) or CrossDown(c,spt1) , min(c,min1[1]) , iff(os1 == 0 , min(c,min1[1]) , spt1));
tenkan = avg(max1,min1);
ATR2 = ATR(kijun_len)*kijun_mult;
up2 = (h+L)/2 + ATR2;
dn2 = (h+L)/2 - ATR2;
upper2 = iff(C[1] < upper2[1],min(up2,upper2[1]),up2);
lower2 = iff(C[1] > lower2[1],max(dn2,lower2[1]),dn2);
os2 = iff(c > upper2 , 1 ,IFf(c < lower2, 0 , os2[1]));
spt2 = iff(os2 == 1 , lower2 , upper2);
max2 = iff(CrossUp(c,spt2) or CrossDown(c,spt2) , max(c,max2[1]) , IFf(os2 == 1 , max(c,max2[1]) , spt2));
min2 = iff(CrossUp(c,spt2) or CrossDown(c,spt2) , min(c,min2[1]) , iff(os2 == 0 , min(c,min2[1]) , spt2));
kijun = avg(max2,min2);
senkouA = avg(kijun,tenkan);
ATR3 = ATR(spanB_len)*spanB_mult;
up3 = (h+L)/2 + ATR3;
dn3 = (h+L)/2 - ATR3;
upper3 = iff(C[1] < upper3[1],min(up3,upper3[1]),up3);
lower3 = iff(C[1] > lower3[1],max(dn3,lower3[1]),dn3);
os3 = iff(c > upper3 , 1 ,IFf(c < lower3, 0 , os3[1]));
spt3 = iff(os3 == 1 , lower3 , upper3);
max3 = iff(CrossUp(c,spt3) or CrossDown(c,spt3) , max(c,max3[1]) , IFf(os3 == 1 , max(c,max3[1]) , spt3));
min3 = iff(CrossUp(c,spt3) or CrossDown(c,spt3) , min(c,min3[1]) , iff(os3 == 0 , min(c,min3[1]) , spt3));
senkouB = avg(max3,min3);
tenkan_css = Red;
kijun_css = Blue;
cloud_a = teal;
cloud_b = red;
chikou_css = Green;
당일수익1 = PriceScale*당일수익틱수1;
당일손실1 = PriceScale*당일손실틱수1;
당일수익2 = PriceScale*당일수익틱수2;
당일손실2 = PriceScale*당일손실틱수2;
if Bdate != Bdate[1] Then
{
Xcond = false;
N1 = NetProfit;
vol = 수량1;
}
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일수익1 or daypl >= 당일수익2 Then
Xcond = true;
if IsExitName("dbp1",1) == true or IsExitName("dsp1",1) == true or
IsExitName("dbp2",1) == true or IsExitName("dsp2",1) == true Then
Xcond = true;
if vol == 수량1 and daypl <= -당일손실1 Then
{
vol = 수량2;
}
if vol == 수량2 and daypl <= -당일손실2 Then
{
Xcond = true;
}
if vol == 수량1 and (IsExitName("dbl1",1) == true or IsExitName("dsl1",1) == true) then
{
vol = 수량2;
}
if vol == 수량2 and (IsExitName("dbl2",1) == true or IsExitName("dsl2",1) == true) then
{
Xcond = true;
}
}
if Xcond == false Then
{
if CrossUp(tenkan,kijun) Then
{
Buy("b",OnClose,Def,vol);
}
if CrossDown(tenkan,kijun) Then
{
sell("s",OnClose,Def,vol);
}
}
if MarketPosition == 1 then
{
if vol == 수량1 Then
{
ExitLong("dbp1",atlimit,EntryPrice+((당일수익1-daypl)/CurrentContracts));
ExitLong("dbl1",AtStop,EntryPrice-((당일손실1+daypl)/CurrentContracts));
}
if vol == 수량2 Then
{
ExitLong("dbp2",atlimit,EntryPrice+((당일수익2-daypl)/CurrentContracts));
ExitLong("dbl2",AtStop,EntryPrice-((당일손실2+daypl)/CurrentContracts));
}
}
if MarketPosition == -1 then
{
if vol == 수량1 Then
{
ExitShort("dsp1",atlimit,EntryPrice-((당일수익1-daypl)/CurrentContracts));
ExitShort("dsl1",AtStop,EntryPrice+((당일손실1+daypl)/CurrentContracts));
}
if vol == 수량2 Then
{
ExitShort("dsp2",atlimit,EntryPrice-((당일수익2-daypl)/CurrentContracts));
ExitShort("dsl2",AtStop,EntryPrice+((당일손실2+daypl)/CurrentContracts));
}
}
수고 많으십니다
도움주신 수식 감사드립니다
위 수식이 제가 설명이 부족해 의도한데로 돼지않아
송구하지만 한번 더 도움 부탁드립니다
처음 수식은 1계약 진입하여 100틱 익절이나 손실이면
당일 매매 종료 였으나
100틱이 익절이면 당일 매매를 종료하고
만약 100틱이 소실이 난다면 그 시간부터
다시 2차를 적용하여 2계약으로
손실 200틱 이면 당일 2차매매 종료
익절 300틱 이면 당일 2차매매 종료
이렇게 부탁드립니다
현재 수식은 손절이 1차 2차 합처서 100틱면
당일 종료로 나와서 수정 요청드립니다
감사드립니다
2024-09-10
685
글번호 183314
답변완료
종목검색부탁드립니다.
안녕하세요, 노고에 감사드립니다 다름이 아니오라
PL=
L(5) < L(9) &&
L(5) < L(8) &&
L(5) < L(7) &&
L(5) < L(6) &&
L(5) < L(4) &&
L(5) < L(3) &&
L(5) < L(2) &&
L(5) < L(1) &&
L(5) < L(0);
A=valuewhen(1, PL, L(5));
A1=A(1)<A, -5;
A2=MA(c, 224)<C;
shift(A1&&A2, -5)
이 함수를 예스스탁 수식으로 변환하여 종목검색을 했는데,
당일에 이 함수가 뜨는 종목이 검색되는게 아니라
10봉전에 발생된 신호가 뜨는 종목이 나오더라구요; 왜 10봉전에 뜨는게 나오는지모르겟는데ㅠㅠ;;제가 뭘 몰라서..
10봉전이 아닌 당일에 저 수식 종목이 뜨게금 종목검색식을 예스트레이더 함수로
구현할수있는지 문의드립니다.
2024-09-10
598
글번호 183313
답변완료
검색식 부탁 드려요
* 아래의 지표는 키움지표 수식입니다. 문의 드립니다.
아래의 지표중 "(수식2) 과매수" 부분중,
처음나오는 "첫봉"만 검색하고자 합니다. 종목 검색식 부탁드립니다.
(연속해서 나오는것 말고, 오직 첫봉, 즉 과매수가 시작하는 첫봉만 검색)
---------아래-------
(수식1) 매수
i_wvf = ((high - lowest(C, 22)) / lowest(C, 22)) * 100;
i_sDev = 2.0 * stdev(i_wvf, 20);
i_midLine = avg(i_wvf, 20);
i_upperBand = i_midLine + i_sDev;
i_rangeHigh = (highest(i_wvf, 50)) * ph;
i_wvf;
(수식2) 과매수
i_wvf = ((high - lowest(C, 22)) / lowest(C, 22)) * 100;
i_sDev = 2.0 * stdev(i_wvf, 20);
i_midLine = avg(i_wvf, 20);
i_upperBand = i_midLine + i_sDev;
i_rangeHigh = (highest(i_wvf, 50)) * ph;
if(i_wvf >= i_upperBand or i_wvf >= i_rangeHigh, i_wvf, 0);
(수식3) 과매수이탈
i_wvf = ((H - lowest(C, 22)) / lowest(C, 22)) * 100;
i_sDev = 2.0 * stdev(i_wvf, 20);
i_midLine = avg(i_wvf, 20);
i_upperBand = i_midLine + i_sDev;
i_rangeHigh = (highest(i_wvf, 50)) * ph;
ob = (i_wvf >= i_upperBand) or (i_wvf >= i_rangeHigh);
if(ob,1,0); //os : OverBuy
// 과매수 4회이상 연속후 이탈)
if( ((ob(1)>0 and ob(2)>0 and ob(3)>0 and ob(4)>0) and ob == 0), i_wvf, 0);
-지표조건설정
PH : 0.85
2024-09-10
539
글번호 183309