커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3725
글번호 230811
답변완료
틱봉저장하기
1.틱봉을 엑셀로 실시간저장하고자 하는데 수식과 저장방법은 어떻게 되나요?
2.또한 위 엑셀로 저장 된 틱봉을 이용하여 시믈레션을 할 수 있나요?
이에 관련 된 수식과 방법을 알려 주시면 감사 하겠습니다.
2020-05-29
2864
글번호 139339
달무드 님에 의해서 삭제되었습니다.
2020-05-29
0
글번호 139338
답변완료
시뮬레이션
안녕하세요?
전략실행에서 1분봉으로 전략을 실행해놓고 5분봉 신호를 받아서 해보고 싶은데,
혹시 가이드 된 문서가 있을까요? 매뉴얼을 보고 해보고 싶습니다.
그리고 백테스트를 위 전략처럼 시뮬레이션 차트에서도 해볼 수 있을까요?
항상 감사드립니다.
2020-05-29
2691
글번호 139337
답변완료
Psar상 ,하 돌파식좀 부탁드립니다
Psar과 5이평이 상항되면 매수
반대는 매도
2020-05-29
2450
글번호 139336
답변완료
차트 전체 봉갯수 수식
안녕하세요! 수고 많으십니다.
분봉에서
가장 최근래의 봉(LastBarOnChart==1일때)에서
이전 100분봉이나 이전의 150분봉에서 수식계산을 할 때
차트의 전체 봉갯수(화면의 전체 봉갯수가 아님)을 알 수 있는
수식을 알고 싶읍니다.
부탁드립니다. 수고하세요!
2020-05-29
2573
글번호 139335
답변완료
청산 Slippage 줄이기 위한 방법문의
시뮬레이션상은, 청산완료 라고 되는데, 실거래는 매도가 다끝나지 않는 경우가 발생하네요.
이유야, 매수시 체결수량의 차이등 여러가지 겠
Q. 3번째 분할매도시, 계좌에 있는 종목 보유 주식을
'수량에 상관없이' 모두 청산하는 조건으로 수정하려면
어떻게 할까요?
-----인용
{ BXcond = true; ii = 0; Bxcnt = 0; }
if BXcond == true then
{
if ii%n == 0 then
{
Bxcnt = Bxcnt+1;
if Bxcnt == 1 Then // 1봉째 분할매도
ExitLong("bx1",OnClose,def,"",Floor(MaxContracts/3),1);
if Bxcnt == 2 Then // 조건만족 2봉째 분할매도
ExitLong("bx2",OnClose,def,"",Floor(MaxContracts/3),1);
if Bxcnt == 3 Then // 조건만족 3봉째 분할매도
ExitLong("bx3");
} ii = ii+1; } }
2020-05-29
2642
글번호 139334
답변완료
청산시 계약 수 관련 문의드립니다
안녕하세요,
시스템 자동 진입 후 청산 관련 문의드리려구요.
1. A 조건시 "AA" 라는 명칭으로 '5개' 매수하도록 수식을 작성
2. B 조건시 "AA" 로 진입한 '5개' 청산하도록 수식 작성
3. A 조건 충족하였으나 실제로 매수한 수량은 2개임
B조건 발생시 5개 청산하도록 되어있으나 실제 매수한 수량은 2개인 경우 어떻게 처리될까요?
1) 2개만 청산되고 끝
2) 5개가 아니므로 에러 치고, 청산 없음
감사합니다.
2020-05-28
2603
글번호 139333
답변완료
67696 질문의 매도진입 버전요망합니다.
var : T(0),BuyEntry(false),ii(0);
var1 = ma(C,5);
var2 = ma(C,10);
if var1 > var1[1] Then
T = 1;
if var1 < var1[1] Then
T = -1;
#상향반전
if T == 1 and T != T[1] Then
{
BuyEntry = true;
ii = index;
}
#상향반전후 10봉 이내
if BuyEntry == true and index < ii+10 Then
{
if NextBarOpen <= var2 Then
buy("b1",AtStop,var2);
Else
buy("b2",Atlimit,var2);
}
이수식의 매도진입 버전을 하려고 아래 수식으로 해봤는데 원하는
매매가 안되는데요... 매도진입버전 수정체크부탁드려요~~~
* 원하는 수식
매도 진입
(1) 5봉이평 우하향 (10봉이내에만 진입)
(2) 5봉이평 우햐향 조건에서 2일 이평 터치시 매도진입
매도 청산
(1) tr도달시 tr하락할때 청산 또는 터치익절(익절실현) 터치 손절(손절실현)
* 5봉이평이 유지되는 상태에서 1회 진입 청산시 재진입하지 않기
input : tr수익(250),tr하락(200);
input : 터치익절(375),즉시손절(100);
var : T(0),SellEntry(0),ii(0);
var1 = ma(C,5);
var2 = ma(C,2);
if var1 > var1[1] Then
T = 1;
if var1 < var1[1] Then
T = -1;
#상향반전 요기만 "T== -1"로 바꾸면 되나요?
if T == -1 and T != T[1] Then
{
SellEntry = true;
ii = index;
}
#상향반전후 10봉 이내
if SellEntry == true and index < ii+10 Then
{
if NextBarOpen > var2 Then
sell("b1",AtStop,var2);
Else
sell("b2",Atlimit,var2);
}
if MarketPosition == -1 then
{
Sellentry = false;
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*tr수익 Then
ExitShort("str",AtStop, Lowest(L,BarsSinceEntry)+PriceScale*tr하락);
}
SetStopProfittarget( PriceScale*터치익절 , PointStop);
SetStopLoss( PriceScale*즉시손절 , PointStop);
2020-05-29
2537
글번호 139332
답변완료
청산후 재진입가 조정
질문은 크게 두가지 입니다
1. 재 진입시 진입가격 정정
매수/매도 포지션 보유 중 청산조건에 부합하여 청산한 뒤에 재진입할 경우 진입가를 정정하고 싶습니다
기초 진입은 L1~L3, S1~S3 하되 청산조건에 부합하여 청산하면 NL1 ~ NL3, NS1~ NS3 로 진입가를 정정하고 싶습니다
그리고 NL1 ~ NL3 진입가 수식은
NL1 = 매수포지션 보유중에 청산조건에 부합하여 마지막으로 청산된 가격에서 + LTR
NL2 = NL1 + LTR * 0.5
NL3 = NL1 + LTR
NS1 ~ NS3 진입가 수식은
NS1 = 매도포지션 보유중에 청산조건에 부합하여 마지막으로 청산된 가격에서 - STR
NS2 = NS1 - STR * 0.5
NS3 = NS1 - STR
2. 재 진입 이후 청산조건
- 재 진입을 하고 나서 청산조건을 새로 작성해야되는지 궁금합니다!
# ENTRY
L1 = DAYOPEN + LTR ;
L2 = L1 + (LTR * 0.5);
L3 = L1 + LTR;
S1 = DAYOPEN - STR;
S2 = S1 - (STR * 0.5);
S3 = S1 - STR;
IF MarketPosition == 0 AND BDATE != EXITDATE(1) Then {
IF H < L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1);
IF L > S1 AND NextBarSdate == SDATE THEN SELL("S1",ATSTOP,S1);
}
# 매수 피라미딩
IF MarketPosition == 1 AND STIME <153000 THEN {
if highest(h,BarsSinceEntry) < L2 Then
buy("L2",ATSTOP,L2);
if highest(h,BarsSinceEntry) < L1 + LTR Then
buy("L3",ATSTOP, L3);
}
# 매수청산
IF MarketPosition == 1 then {
if NextBarSdate == SDATE Then
ExitLong("LS",AtStop,LatestEntryPrice - LTR);
NL1 = LatestEntryPrice(1);
NL2 = NL1 + LTR * 0.5;
NL3 = NL1 + LTR;
IF NextBarSdate != SDATE Then
ExitLong("EL",ATMARKET);
}
# 매도 피라미딩
IF MarketPosition == -1 AND STIME < 153000 THEN {
IF Lowest(L,BarsSinceEntry) > S2 Then
SELL("S2",AtStop,S2);
IF Lowest(L,BarsSinceEntry) > S1 - STR Then
SELL("S3",AtStop,S3);
}
# 매도청산
IF MarketPosition == -1 then {
IF NextBarSdate == SDATE Then EXITSHORT("SS",AtStop,LatestEntryPrice + STR);
NS1 = LatestEntryPrice(1);
NS2 = NS1 - STR * 0.5;
NS3 = NS1 - Str;
SetStopEndofday();
}
ELSE SetStopEndofday(0); #해제
# 재진입
IF MARKETPOSITION == 0 AND BDATE == EXITDATE(1) THEN {
IF LatestExitName(1) == "LS" AND H < NL1 AND NextBarSdate == sDate THEN BUY("NL1",ATSTOP,NL1);
IF LatestExitName(1) == "SS" AND L > NS1 AND NextBarSdate == sDate THEN SELL("SN1", ATSTOP,NS1);
}
# 재진입 피라미딩
IF BDATE == EXITDATE(1) THEN {
IF LatestEntryName == "NL1" AND Highest(H,BarsSinceEntry) < NL2 THEN BUY("NL2",ATSTOP,NL2);
IF LatestEntryName == "NL2" AND Highest(H,BarsSinceEntry) < NL3 THEN BUY("NL3",ATSTOP,NL3);
IF LatestEntryName == "NS1" AND Lowest(L,BarsSinceEntry) > NS2 THEN SELL("NS2",ATSTOP,NS2);
IF LatestEntryName == "NS2" AND Lowest(L,BarsSinceEntry) > NS3 THEN SELL("NS3",ATSTOP,NS2);
}
2020-05-28
2546
글번호 139331