커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5517
글번호 230811
답변완료
15분봉에서
안녕 하세요...
처음 인사 드립니다.
저는 15분봉에서 시가 돌파시 종목을 검색할 수 있는 검색식을 만들어 보고 싶어서
문의 드립니다.
2019-07-26
225
글번호 130670
답변완료
테이타표작성
수고 많으십니다.
챠트를 보다보니 데이타표가 필요하게 되더군요
선물
옵션의 월봉 주봉 일봉의 전월,전주, 전일,캔들의 고가 저가 중심 의 가격을
차월 과 차차월 순으로 함께
20일 40일 60일 간격으로 한꺼번에 볼수 있는 데이타표의 예제가 있을 까요?
1)기본 현선물,선물차월,선물차차월(월,주,일)
2)옵션 각등가,옵션차월,옵션차차월(월,주,일)
2019-07-26
234
글번호 130664
답변완료
피라미딩순 청산
피라미딩 설정후 아래 수식을 일반적으로 사용하고 있습니다.
아래 설정대로면 총 3번의 진입이 발생합니다.
첫번째 진입은 수식의 전략대로 진입하며,
두번째 진입과 세번째는 변동폭에 따라 진입합니다.
요청내용) 진입순서별로 구분하여 손절할 수 있는 수식을 요청합니다.
1st 진입의 손절
2nd 진입의 손절
3th 진입의 손절
항상 고맙습니다.
************************************************************************************
1) buy만 거래하는 수식
input : 변동폭(0.50),수량(3);
if MarketPosition == 1 and MaxContracts < 수량 Then
buy("bb",AtStop,LatestEntryPrice(0)+변동폭);
2)sell만 거래하는 수식
input : 변동폭(0.50),수량(3) ;
if MarketPosition == -1 and MaxContracts < 수량 Then
sell("ss",AtStop,LatestEntryPrice(0)-변동폭);
2020-01-20
233
글번호 130663
답변완료
추가라인작업
기존라인표입니다
추가 -이격2(0.63)을 더 넣으려는 수식을 작성하려니 어렵읍니다
검토해보시고 ,라인 하나 더 넣는 수식표 부탁드립니다
이격3(0.63)은 (2.5-1.25)에서 나온 (0.625)입니다
수식하실때 이격3(이격1-이격2)더 정확 할것 같읍니다.
Input : 기준1(290), 이격1(2.5), 이격2(1.25), AA1(5);
var3 = 기준1;
var1=0;
if var1 <= AA1 Then {
plotbaseline1(Var3,"1");
plotbaseline2(Var3-이격2,"2");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline3(Var3-(이격1*1),"3");
plotbaseline4(Var3-(이격1*1)-이격2,"4");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline5(Var3-(이격1*2),"5");
plotbaseline6(Var3-(이격1*2)-이격2,"6");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline7(Var3-(이격1*3),"7");
plotbaseline8(Var3-(이격1*3)-이격2,"8");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline9(Var3-(이격1*4),"9");
plotbaseline10(Var3-(이격1*4)-이격2,"10");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline11(Var3-(이격1*5),"11");
plotbaseline12(Var3-(이격1*5)-이격2,"12");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline13(Var3-(이격1*6),"13");
plotbaseline14(Var3-(이격1*6)-이격2,"14");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline15(Var3-(이격1*7),"15");
plotbaseline16(Var3-(이격1*7)-이격2,"16");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline17(Var3-(이격1*8),"17");
plotbaseline18(Var3-(이격1*8)-이격2,"18");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline19(Var3-(이격1*9),"19");
plotbaseline20(Var3-(이격1*9)-이격2,"20");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline21(Var3-(이격1*10),"21");
plotbaseline22(Var3-(이격1*10)-이격2,"22");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline23(Var3-(이격1*11),"23");
plotbaseline24(Var3-(이격1*11)-이격2,"24");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline25(Var3-(이격1*12),"25");
plotbaseline26(Var3-(이격1*12)-이격2,"26");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline27(Var3-(이격1*13),"27");
plotbaseline28(Var3-(이격1*13)-이격2,"28");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline29(Var3-(이격1*14),"29");
plotbaseline30(Var3-(이격1*14)-이격2,"30");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline31(Var3-(이격1*15),"31");
plotbaseline32(Var3-(이격1*15)-이격2,"32");
var1 = var1 +1 ;
}
2019-07-26
243
글번호 130662
좌오비우오비 님에 의해서 삭제되었습니다.
2019-07-26
2
글번호 130660
답변완료
시스템
안녕하세요
아래시스템식 해석 부탁드립니다 감사합니다
input : Period(50),Multiplier(3);
var : dAtr(0),UpperLevel(0),LowerLevel(0),Direction(0);
dAtr=ATR(Period);
UpperLevel=(High+Low)/2+Multiplier*dAtr;
LowerLevel=(High+Low)/2-Multiplier*dAtr;
Direction = Direction[1];
if close > UpperLevel[1] then Direction = 1;
if close < LowerLevel[1] then Direction = -1;
if Direction > 0 then
{
LowerLevel = Max(LowerLevel,LowerLevel[1]);
#plot1(LowerLevel,"SuperTrend",rgb(65,105,225));
}
else
{
UpperLevel = Min(UpperLevel,UpperLevel[1]);
#plot1(UpperLevel,"SuperTrend",rgb(255,99,71));
}
# 매수/매도청산
if Direction > 0 then
{
Buy("매수");
}
2019-07-26
217
글번호 130659
답변완료
시스템 수식 질문입니다
매도신호가 발생하면 매도신호가 발생한 음봉 시가에 매도하고, 매수신호가 발생하면 매수신호가 발생한 양봉 시가에 매수하는시스템 수식을 알고 싶습니다
2019-07-26
182
글번호 130658
답변완료
부탁 드립니다.
WAVG를 어떻게 변환하는지요?
미리 감사 드립니다.
2019-07-26
196
글번호 130655
답변완료
기준라인 수식과 피라미딩
별첨파일은 아래수식을 시뮬레이션한 결과들 입니다.
피라미딩시 20개까지 진입하는 수식이고
Array : EP[30](0); 이고
피라미딩설정창에서 다른진입신호만허용입니다.
질문1) 첨부파일 첫번째
2019년 1월 28일 첫번째 진입의 손절(미니선물 50틱 ,1.00)이 적용되지 않고 end of day로 청산되었습니다.
2017년 3월 24일 첫번째 진입 손절은 정상처리됨.
질문2) 첨부파일 두번째
EP[1], EP[5], EP[30]순으로 방배열을 조정해 보았음
3가지 경우 모두 2019.4.19 MAX16개 진입이 발생했습니다.(년간 진입횟수와 수익은 서로 다름)
방배열 숫자가 작으면 피라미딩MAX도 작아지는 것 아닌지요
질문3)
피라미딩설정창에서 다른진입신호만허용과 모든진입신호허용이 있는데
buy만 진입하는 수식에서 위 구분은 어떤 차이를 발생시키나요.
항상 고맙습니다.
***********************************************************************************
input : 기준(283),상승(0.10);
input : 손절1(50),익절1(300),TR1(150);
input : 손절2(50),익절2(300),TR2(150);
input : 손절3(50),익절3(300),TR3(150);
input : 손절4(50),익절4(300),TR4(150);
input : 손절5(50),익절5(300),TR5(150);
input : 손절6(50),익절6(300),TR6(150);
input : 손절7(50),익절7(300),TR7(150);
input : 손절8(50),익절8(300),TR8(150);
input : 손절9(50),익절9(300),TR9(150);
input : 손절10(50),익절10(300),TR10(150);
input : 손절11(50),익절11(300),TR11(150);
input : 손절12(50),익절12(300),TR12(150);
input : 손절13(50),익절13(300),TR13(150);
input : 손절14(50),익절14(300),TR14(150);
input : 손절15(50),익절15(300),TR15(150);
input : 손절16(50),익절16(300),TR16(150);
input : 손절17(50),익절17(300),TR17(150);
input : 손절18(50),익절18(300),TR18(150);
input : 손절19(50),익절19(300),TR19(150);
input : 손절20(50),익절20(300),TR20(150);
Array : EP[30](0);
if MarketPosition == 0 and NextBarOpen < 기준+상승 and ExitDate(1) != sdate Then
buy("b1",AtStop,기준+상승);
if MarketPosition == 1 Then
{
var1 = (기준+상승) + 상승*MaxEntries;
EP[MaxEntries] = LatestEntryPrice(0);
if MaxEntries == 1 and NextBarOpen < var1 Then
buy("b2",AtStop,var1);
if MaxEntries == 2 and NextBarOpen < var1 Then
buy("b3",AtStop,var1);
if MaxEntries == 3 and NextBarOpen < var1 Then
buy("b4",AtStop,var1);
if MaxEntries == 4 and NextBarOpen < var1 Then
buy("b5",AtStop,var1);
if MaxEntries == 5 and NextBarOpen < var1 Then
buy("b6",AtStop,var1);
if MaxEntries == 6 and NextBarOpen < var1 Then
buy("b7",AtStop,var1);
if MaxEntries == 7 and NextBarOpen < var1 Then
buy("b8",AtStop,var1);
if MaxEntries == 8 and NextBarOpen < var1 Then
buy("b9",AtStop,var1);
if MaxEntries == 9 and NextBarOpen < var1 Then
buy("b10",AtStop,var1);
if MaxEntries == 10 and NextBarOpen < var1 Then
buy("b11",AtStop,var1);
if MaxEntries == 11 and NextBarOpen < var1 Then
buy("b12",AtStop,var1);
if MaxEntries == 12 and NextBarOpen < var1 Then
buy("b13",AtStop,var1);
if MaxEntries == 13 and NextBarOpen < var1 Then
buy("b14",AtStop,var1);
if MaxEntries == 14 and NextBarOpen < var1 Then
buy("b15",AtStop,var1);
if MaxEntries == 15 and NextBarOpen < var1 Then
buy("b16",AtStop,var1);
if MaxEntries == 16 and NextBarOpen < var1 Then
buy("b17",AtStop,var1);
if MaxEntries == 17 and NextBarOpen < var1 Then
buy("b18",AtStop,var1);
if MaxEntries == 18 and NextBarOpen < var1 Then
buy("b19",AtStop,var1);
if MaxEntries == 19 and NextBarOpen < var1 Then
buy("b20",AtStop,var1);
if MaxEntries >= 1 and EP[1] > 0 Then
{
ExitLong("bl1",AtStop,EP[1]-PriceScale*손절1,"b1");
ExitLong("bp1",Atlimit,EP[1]+PriceScale*익절1,"b1");
ExitLong("btr1",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR1,"b1");
}
if MaxEntries >= 2 and EP[2] > 0 Then
{
ExitLong("bl2",AtStop,EP[2]-PriceScale*손절2,"b2");
ExitLong("bp2",Atlimit,EP[2]+PriceScale*익절2,"b2");
ExitLong("btr2",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR2,"b2");
}
if MaxEntries >= 3 and EP[3] > 0 Then
{
ExitLong("bl3",AtStop,EP[3]-PriceScale*손절3,"b3");
ExitLong("bp3",Atlimit,EP[3]+PriceScale*익절3,"b3");
ExitLong("btr3",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR3,"b3");
}
if MaxEntries >= 4 and EP[4] > 0 Then
{
ExitLong("bl4",AtStop,EP[4]-PriceScale*손절4,"b4");
ExitLong("bp4",Atlimit,EP[4]+PriceScale*익절4,"b4");
ExitLong("btr4",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR4,"b4");
}
if MaxEntries >= 5 and EP[5] > 0 Then
{
ExitLong("bl5",AtStop,EP[5]-PriceScale*손절5,"b5");
ExitLong("bp5",Atlimit,EP[5]+PriceScale*익절5,"b5");
ExitLong("btr5",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR5,"b5");
}
if MaxEntries >= 6 and EP[6] > 0 Then
{
ExitLong("bl6",AtStop,EP[6]-PriceScale*손절6,"b6");
ExitLong("bp6",Atlimit,EP[6]+PriceScale*익절6,"b6");
ExitLong("btr6",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR6,"b6");
}
if MaxEntries >= 7 and EP[7] > 0 Then
{
ExitLong("bl7",AtStop,EP[7]-PriceScale*손절7,"b7");
ExitLong("bp7",Atlimit,EP[7]+PriceScale*익절7,"b7");
ExitLong("btr7",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR7,"b7");
}
if MaxEntries >= 8 and EP[8] > 0 Then
{
ExitLong("bl8",AtStop,EP[8]-PriceScale*손절8,"b8");
ExitLong("bp8",Atlimit,EP[8]+PriceScale*익절8,"b8");
ExitLong("btr8",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR8,"b8");
}
if MaxEntries >= 9 and EP[9] > 0 Then
{
ExitLong("bl9",AtStop,EP[9]-PriceScale*손절9,"b9");
ExitLong("bp9",Atlimit,EP[9]+PriceScale*익절9,"b9");
ExitLong("btr9",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR9,"b9");
}
if MaxEntries >= 10 and EP[10] > 0 Then
{
ExitLong("bl10",AtStop,EP[10]-PriceScale*손절10,"b10");
ExitLong("bp10",Atlimit,EP[10]+PriceScale*익절10,"b10");
ExitLong("btr10",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR10,"b10");
}
if MaxEntries >= 11 and EP[11] > 0 Then
{
ExitLong("bl11",AtStop,EP[11]-PriceScale*손절11,"b11");
ExitLong("bp11",Atlimit,EP[11]+PriceScale*익절11,"b11");
ExitLong("btr11",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR11,"b11");
}
if MaxEntries >= 12 and EP[12] > 0 Then
{
ExitLong("bl12",AtStop,EP[12]-PriceScale*손절12,"b12");
ExitLong("bp12",Atlimit,EP[12]+PriceScale*익절12,"b12");
ExitLong("btr12",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR12,"b12");
}
if MaxEntries >= 13 and EP[13] > 0 Then
{
ExitLong("bl13",AtStop,EP[13]-PriceScale*손절13,"b13");
ExitLong("bp13",Atlimit,EP[13]+PriceScale*익절13,"b13");
ExitLong("btr13",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR13,"b13");
}
if MaxEntries >= 14 and EP[14] > 0 Then
{
ExitLong("bl14",AtStop,EP[14]-PriceScale*손절14,"b14");
ExitLong("bp14",Atlimit,EP[14]+PriceScale*익절14,"b14");
ExitLong("btr14",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR14,"b14");
}
if MaxEntries >= 15 and EP[15] > 0 Then
{
ExitLong("bl15",AtStop,EP[15]-PriceScale*손절15,"b15");
ExitLong("bp15",Atlimit,EP[15]+PriceScale*익절15,"b15");
ExitLong("btr15",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR15,"b15");
}
if MaxEntries >= 16 and EP[16] > 0 Then
{
ExitLong("bl16",AtStop,EP[16]-PriceScale*손절16,"b16");
ExitLong("bp16",Atlimit,EP[16]+PriceScale*익절16,"b16");
ExitLong("btr16",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR16,"b16");
}
if MaxEntries >= 17 and EP[17] > 0 Then
{
ExitLong("bl17",AtStop,EP[17]-PriceScale*손절17,"b17");
ExitLong("bp17",Atlimit,EP[17]+PriceScale*익절17,"b17");
ExitLong("btr17",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR17,"b17");
}
if MaxEntries >= 18 and EP[18] > 0 Then
{
ExitLong("bl18",AtStop,EP[18]-PriceScale*손절18,"b18");
ExitLong("bp18",Atlimit,EP[18]+PriceScale*익절18,"b18");
ExitLong("btr18",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR18,"b18");
}
if MaxEntries >= 19 and EP[19] > 0 Then
{
ExitLong("bl19",AtStop,EP[19]-PriceScale*손절19,"b19");
ExitLong("bp19",Atlimit,EP[19]+PriceScale*익절19,"b19");
ExitLong("btr19",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR19,"b19");
}
if MaxEntries >= 20 and EP[20] > 0 Then
{
ExitLong("bl20",AtStop,EP[20]-PriceScale*손절20,"b20");
ExitLong("bp20",Atlimit,EP[20]+PriceScale*익절20,"b20");
ExitLong("btr20",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR20,"b20");
}
}
2020-01-20
316
글번호 130654