커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7161
글번호 230811
답변완료
수식 변경 요청드립니다.
안녕하세요.
아래 수식은 진입 시 3 계약이 동시에 진입하여 3차례에 걸쳐서 나누어 분할 익절되고 손절 시 15틱 일괄 청산 되도록 되어 있습니다. 이것을 역으로, 진입 시 3계약 동시 진입하여 N 틱수 이익 시 3계약 모두 일괄 청산되고, 손실 시 손절틱수1(10), 손절틱수2(15), 손절틱수3(20) 이 되도록 변경하여 주시면 감사 하겠습니다.
input : 거래시간 (1), 시작시간 (220000), 끝시간 (045000),익절틱수1(10),익절틱수2(15),익절틱수3(20),손절틱수 (15);
Input : 전환선기간 (5), 기준선기간1(26), 기준선기간2(1), 선행스팬2기간(52), short(12), long(26), sig(9),BBP(120), 당일누적손실틱수 (100);
Var : MACDv(0), MACDsig(0),macdosc(0), Condition3(false);
var : 전환선 (0), 기준선1(0), 기준선2(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0), Xcond(false),N1(0),daypl(0),당일누적손실 (0);
var1 = MACD(short, long);
var2 = ema(MACDv,sig);
var3 = ma(C,BBP);
전환선 = (Highest(High, 전환선기간 ) + Lowest(Low, 전환선기간 )) / 2;
기준선1 = (Highest(High, 기준선기간1 ) + Lowest(Low, 기준선기간1 )) / 2;
기준선2 = (Highest(High, 기준선기간2 ) + Lowest(Low, 기준선기간2 )) / 2;
선행스팬1 = (전환선 [25] + 기준선2 [25]) / 2 ;
선행스팬2 = (Highest(High, 선행스팬2기간 )[25] + Lowest(Low, 선행스팬2기간 )[25]) / 2;
if 거래시간 == 1 then
condition3 = (stime>=시작시간 or stime<=끝시간);
Else if 거래시간 == 2 then
condition3 = (stime>=시작시간 and stime<=끝시간);
Else
condition3 = true;
if 거래시간 == 1 or 거래시간 == 2 then
{
if (sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간) Then
{
Xcond = false;
N1 = NetProfit;
}
}
else
{
if Bdate != Bdate[1] Then
{
Xcond = false;
N1 = NetProfit;
}
}
당일누적손실 = PriceScale*당일누적손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbl",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
# 매수/매도청산
if MarketPosition == 0 and
TotalTrades == TotalTrades[3] and
Xcond == false and
Condition3 == true and var3 > var3[1] and var1 > var2 and 전환선 > 기준선1 and crossup(C,전환선 ) and C > O Then
{
Buy("b",OnClose,def,3);
ExitLong("bp1.",atlimit,C+PriceScale*익절틱수1,"",1,1);
ExitLong("bp2.",atlimit,C+PriceScale*익절틱수2,"",1,1);
ExitLong("bp3.",atlimit,C+PriceScale*익절틱수3);
}
# 매도/매수청산
if MarketPosition == 0 and TotalTrades == TotalTrades[3] and
Xcond == false and
Condition3 == true and var3 < var3[1] and var1 < var2 and 전환선 < 기준선1 and CrossDown(C,전환선 ) and C < O Then
{
Sell("s",OnClose,def,3);
ExitShort("sp1.",atlimit,C-PriceScale*익절틱수1,"",1,1);
ExitShort("sp2.",atlimit,C-PriceScale*익절틱수2,"",1,1);
ExitShort("sp3.",atlimit,C-PriceScale*익절틱수3);
}
if MarketPosition == 1 Then{
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*익절틱수1 then
ExitLong("bp1",atlimit,EntryPrice+PriceScale*익절틱수1,"",1,1);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*익절틱수2 then
ExitLong("bp2",atlimit,EntryPrice+PriceScale*익절틱수2,"",1,1);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*익절틱수3 then
ExitLong("bp3",atlimit,EntryPrice+PriceScale*익절틱수3);
}
if MarketPosition == -1 Then{
if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*익절틱수1 Then
ExitShort("sp1",atlimit,EntryPrice-PriceScale*익절틱수1,"",1,1);
if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*익절틱수2 Then
ExitShort("sp2",atlimit,EntryPrice-PriceScale*익절틱수2,"",1,1);
if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*익절틱수3 Then
ExitShort("sp3",atlimit,EntryPrice-PriceScale*익절틱수3);
}
SetStopLoss(PriceScale*손절틱수,PointStop);
if stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간 ) Then{
if MarketPosition == 1 Then
ExitLong("bx");
if MarketPosition == -1 Then
ExitShort("sx");
}
if MarketPosition == 1 then
{
ExitLong("dbl",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then
{
ExitShort("dsl",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts));
}
2020-04-05
760
글번호 137560
답변완료
분봉차트에서 기준선 돌파
분봉차트에서 기준선 돌파하는 종목을 검색하는 수식을
알고 싶습니다.
2020-04-05
1016
글번호 137559
답변완료
문의드립니다
안녕하세요
아래 수식에서 상한가 다음날에만 매수진입
1차 or 2차 or 3차까지 매수가 되어서 청산이 되면 더이상 진입되지않게 수식 변경 부탁드립니다
예를들면 상한가 다음날에 1차 매수후 청산이 되면 더이상 진입금지
input : 금액(10000000);
var : vol(0);
if MarketPosition == 0 and L > DayHigh*0.82 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.82));
buy("b1",atlimit,DayHigh*0.82,vol);
}
if MarketPosition == 1 then
{
if MaxEntries == 1 and L > DayHigh*0.78 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.78));
buy("b2",atlimit,DayHigh*0.78,vol);
}
if MaxEntries == 2 and L > DayHigh*0.75 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.75));
buy("b3",atlimit,DayHigh*0.75,vol);
}
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp1" Then
Condition1 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp2" Then
Condition2= true;
if Condition1 == false Then
ExitLong("bp1",atlimit,AvgEntryPrice*1.025,"",floor(MaxContracts*0.8),1);
if Condition2 == false Then
ExitLong("bp2",atlimit,AvgEntryPrice*1.035);
if MaxEntries == 3 then
ExitLong("bl",AtStop,AvgEntryPrice*0.92);
}
SetStopEndofday(151000);
2020-04-05
810
글번호 137558
답변완료
수식부탁드려요^^
Valuewhen(1, crossup(c,envelopeup(period,percent)),(c+o+o+o)/4)//period=5,percent=1
위의 수식을 예스로 부탁드립니다
2020-04-05
832
글번호 137557
답변완료
국내 주식 청산 수식 기능 추가입니다.
청산 수식 추가 요청건입니다.
분할매수로 매수 하였구요 (max 200)
누적 매수 갯수가 100개까지는 아래 청산 수식을 적용하고요(평균 매수값의 10%수익시 일관청산)
누적 매수 갯수가 100개 넘으면 다음의 청산 수식을 적용하고 싶습니다.
1.매수 평균값을 110% 이상을 유지를 기본 디폴트값
2.이동평균선(40일선)을 하향 돌파시 일괄 매수 청산
--> 만약 110%유지하고 있다가 이동평균선(40)일선을 하향돌파시 110%이하 발생시 청산 X
input : n(200),하락퍼센트(0.85);
input : 매매수(200),매수갯수(1);
input : 전일대비하락률(0.998),청산률(10);
var1 = highest(H,n);
if C <= var1*하락퍼센트 and C <= C[1]*전일대비하락률 and stime >= 90000 and stime <= 140000 Then
{
if MarketPosition == 0 or (MarketPosition == 1 and MaxContracts < 매매수) then
buy("b",OnClose,def,매수갯수);
}
if MarketPosition == 1 then
{
exitlong("일괄10%청산",atlimit,AvgEntryPrice*(1+청산률/100));
}
2020-04-05
785
글번호 137556
답변완료
분봉차트에서 고점 돌파
안녕하세요.. 항상 감사합니다.
5분봉 차트에서 3일전의 최고점을 돌파하는 수식이 어떻게 되나요..?
그럴경우 종목검색시 검색이 필요한 봉을 최소 몇개로 설정해야 검색이 되나요?
그리고 5분봉차트에서 3일전 최고점에서 시작해서 현재까지 차트에 수평선으로
표시할수 있을까요?
2020-04-05
849
글번호 137555
답변완료
지표 질문입니다
당일 고가가 20캔들 천정일 때 현재 캔들 포함 좌측 두번째 양봉 저가를 표시하는 수식
당일 고가가 20캔들 천정일 때 현재 캔들 포함 좌측 세번째 음봉 고가를 표시하는 수식
당일 저가가 20캔들 바닥일 때 현재 캔들 포함 좌측 두번째 양봉 고가를 표시하는 수식
당일 저가가 20캔들 바닥일 때 현재 캔들 포함 좌측 세번째 음봉 저가를 표시하는 수식
감사합니다
2020-04-04
804
글번호 137554
답변완료
분봉 일봉 동시검색
30분봉에서 10ma가 20ma 골든크로스가 나고
동시에 일봉에서 5ma가 30ma 골든크로스날때의 종목검색식
부탁드립니다
2020-04-04
923
글번호 137553
답변완료
KODEX200 을 매매하려고 합니다.
KODEX200 을 매매하려고 합니다.
당일 매수 당일 청산을 목표로 하는데요
분봉은 5분봉으로 설정할것이구요
매수 진입 조건
1. 9시부터 9시 30분까지 누적집계 외인 순매수 일때
2. 9시부터 9시 30분까지 누적집계 기관 순매수 일때
3. 9시부터 9시 30분까지 누적집계 개인 순매도 일때
해당 조건을 만족할때 9시 30분에 매수 진입 ( 100만원 )
매수 청산
1. 수익이 2% 발생시 즉시 청산 (이익확정)
2. 손실이 2% 발생시 즉시 청산 (손실확정)
3. 오후 1시 넘으면 수익시 즉시 청산 손실중일시 매수가도달시 청산 (본전청산)
4. 오후 3시 넘으로 바로 청산 ( 손실중이라도)
2020-04-04
929
글번호 137552