커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
6137
글번호 230811
지표
답변완료

문의합니다

var : Buyentry(false); BW_SEVEN = value; if BW_SEVEN >= 7 and BW_SEVEN[1] < 7 Then { T1 = 2; T2 = T1[1]; T3 = T2[1]; } if BW_SEVEN < 7 and BW_SEVEN[1] == 7 Then { T1 = 1; T2 = T1[1]; T3 = T2[1]; } if BW_SEVEN <= -7 and BW_SEVEN[1] > -7 Then { T1 = -2; T2 = T1[1]; T3 = T2[1]; } if BW_SEVEN > -7 and BW_SEVEN[1] == -7 Then { T1 = -1; T2 = T1[1]; T3 = T2[1]; } var1 = ma(c,5); var2 = ma(C,20); Condition1 = T1 != T1[1] and T1 == 2 and T2 == 1 and T3 == 2 and CrossUp(var1,var2); if T != T1[1] and T1 == 2 and T2 == -1 Then Buyentry = true; if MarketPosition <= 0 and C > O and Condition1[1] == true Then buy(); if MarketPosition == 1 then { BuyEntry = false; } 1. 시스템 정말 많은 도움이 됐습니다 그런데 한가지 잘못질문한것이 있는듯해서요 바이너리가 2번째에만 매매를 하고 싶습니다 매번이 아니라.... 다시말해 바이너리가 7을 찍고 -7을 찍지 않고 다시올라가서 7을 찍으면 그때부터 매수(5이평선이 20이평선을 골드크로스)를 하고 다시 7이하로 내려오면 이후에는 매매하지 않고 -7을 찍고 다시 7을 찍고 다시한번 7을 내려가고 -7을 찍지 않고 다시 7을 올라오면 그때 매수(5이평선이 20이평선을 골드크로스)를 하고 제가 말주변이 없어 이렇게 표현을 하네요.... 그림으로 첨부했습니다 if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 1 )) and A 수식 then buy("A 매수"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 2)) and B 수식 Then buy("B 매수"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 3)) and C 수식 Then sell("C 매도"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 4)) and D 수식 Then sell("D 매도"); 청산식 #청산완료 if TotalTrades > TotalTrades[1] then { var1 = 0; var2 = 0; if IsEntryName("A 매수",1) == true Then { if PositionProfit(1) > 0 then var1 == 2; else var1 == 4; } if IsEntryName("C 매도",1) == true then { if PositionProfit(1) > 0 Then var1 == 4; Else var1 == 2; } if IsEntryName("B 매수",1) == true then { if PositionProfit(1) > 0 Then { var1 == 1; var1 == 3; } Else { var1 == 1; var1 == 3; } } if IsEntryName("D 매도",1) == true then { if PositionProfit(1) > 0 Then { var1 == 1; var1 == 3; } Else { var1 == 1; var1 == 3; } } } 2.위의 식은 A 매수해서 이익이나면 B 매수로 손실이나면 D 매도로 진입하고 C 매도해서 이익이나면 D 매도료 손실이나면 B 매수로 진입하고 C 매수해서 이익과 손실이나도 A 매수나 C 매도나 빠른신호로 진입하고 D 매도해서 이익과 손실이나도 A 매수나 C 매도나 빠른신호로 진입하라라고 만든 함수인데 원하는데로 신호가 안나오네요 수정 부탁드립니다 감사합니다 늘 승리하세요
프로필 이미지
돌아온스머프
2018-07-06
225
글번호 120336
시스템
답변완료

행복; 수식 작성 바랍니다

한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다 종목검색식 관련입니다 주기; 30분봉 < 조건 > - 하루 종일 양봉의 개수는 13개 인데 - 당일 양봉 개수가 7개 이상이고 음봉 개수가 6개 이하 - 양봉 길이의 합이 음봉 길이의 합보다 긴 종목 - (양봉 길이) = (종가 - 시가) - 오늘부터 N 일전에 위의 조건이 맞는 종목을 검색 수식 작성 바랍니다 수고하십시요^^
프로필 이미지
행복한가방
2018-07-06
194
글번호 120335
종목검색
답변완료

수식 수정 의뢰드려요

안녕하세요! 수식 수정 좀 부탁드려요! input : Per1(23.6),Per2(38.2),Per3(50.0),Per4(61.8),Per5(76.4),Per6(100),Per7(123.6),Per8(138.2),Per9(150),Per10(161.8); var : cnt(0),HH(0),LL(0),RR(0); HH = dayhigh(1); LL = daylow(1); RR = HH-LL; plot1(HH,"고점"); plot2(LL,"저점"); plot3(HH-RR*(Per1/100),"23.6%"); plot4(HH-RR*(Per2/100),"38.2%"); plot5(HH-RR*(Per3/100),"50.0%"); plot6(HH-RR*(Per4/100),"61.8%"); plot7(HH-RR*(Per5/100),"76.4%"); plot8(HH-RR*(Per6/100),"100%"); plot9(HH-RR*(Per7/100),"123.6%"); plot10(HH-RR*(Per8/100),"138.2%"); plot11(HH-RR*(Per9/100),"150%"); plot12(HH-RR*(Per10/100),"161.8%"); 위 식은 당일 고점과 저점 기준으로 피보나치를 만든건데 123.6 / 150/ 161.8 은 선으로 안나타나네요! 수식 수정 좀 부탁드립니다! 그리고 만약 당일 고점-저점 대신 저점-고점은 어떻게 해야 하나요? ---------------------------------------------------------------------------------- 2. 현재 예스에는 tema선이 세개로 표시되어 있는데 이것은 9개 선으로 추가하여 표시하고자 합니다. 부탁드려요! 감사합니다!
프로필 이미지
qha71
2018-07-06
211
글번호 120334
지표
답변완료

수식문의

안녕하세요 하기 수식에서 더 추가하고 싶어서 문의 드립니다. 1. 하기수식에서 볼린져 이평선 상단 10틱이상에서 가격이 존재하고 볼린져 oscillator가 음으로 바뀌면 매도진입하는 수식 부탁드립니다. 청산은 볼린져 밴드 하단에 닿으면 청산하는 청산식도 부탁드립니다. 볼린져 이평선 하단 10틱 이하에서 가격이 존재하고 볼린져 oscillator가 양으로 바뀌면 매수진입하는 수식 부탁드립니다. 청산은 볼린져 밴드 상단에 닿으면 청산하는 청산식도 부탁드립니다. input : Period(20),dv(2); input : ADXP(14); var : ADXv(0,data1),DP(0,data1),DM(0,data1); var : BBmd1(0,data1),BBdn1(0,data1),bbup1(0,data1); var : BandB1(0,data1),HH1(0,data1),LL1(0,data1); var : BBmd2(0,data2),BBdn2(0,data2),bbup2(0,data2); var : T(0,data1); BBmd1 = data1(ma(C,Period)); BBdn1 = data1(BollBandDown(Period,Dv)); BBUp1 = data1(BollBandUp(Period,Dv)); BandB1 = data1(((C-BBDn1)/(BBUp1-BBdn1))*100); BBmd2 = data2(ma(C,Period)); BBdn2 = data2(BollBandDown(Period,Dv)); BBUp2 = data2(BollBandUp(Period,Dv)); ADXv = data1(ADX(ADXP)); DP = data1(DiPlus(ADXP)); DM = data1(DiMinus(ADXP)); if crossup(BandB1,90) Then HH1 = BandB1; if BandB1 > 90 and BandB1 > HH1 Then HH1 = BandB1; if CrossDown(BandB1,10) Then LL1 = BandB1; if BandB1 < 10 and BandB1 < LL1 Then LL1 = BandB1; if CrossDown(BandB1,90) Then { T = 0; if HH1 > 100 Then T = -1; if BBup2 < BBup1 then T = -2; } if CrossUp(BandB1,10) Then { T = 0; if HH1 < 0 Then T = 1; if BBdn2 > BBdn1 then T = 2; } if T == -1 and BBup2 < BBup1 then T = -2; if T == 1 and BBdn2 > BBdn1 then T = 2; if T == -2 and T != T[1] and DP < ADXv Then { T = 0; sell("s4"); } if T == 2 and T != T[1] and DM < ADXv Then { T = 0; buy("b4"); }
프로필 이미지
softtoug
2018-07-06
190
글번호 120327
시스템
답변완료

문의드립니다.

1. 0봉전 10봉이내 구름대 상향돌파 2. 0봉전 10봉이내 단순이평 120일선 상향돌파 기존의 특정봉기준을 기간내로 변경하여 사용하고 싶습니다.
프로필 이미지
psh2255
2018-07-06
192
글번호 120326
종목검색
답변완료

수식문의

안녕하세요 하기 수식 검토 드립니다. 20 이평선 5개의 평균값이 0을 넘어서 상승을 한다면, 매수 진입. 20 이평선 5개의 평균값이 0을 내려가서 하락을 한다면 매도 진입. 하기 수식에서 변환점 0을 기준으로 매수 또는 매도 진입하고 싶습니다. 그런데 하기식은 너무 많은 진입을 하고 있어서 제가 생각한 것처럼 작동이 되지 않고 있습니다. input : P(20); var1 = ma(c,P); var2 = var1-var1[1]; if var2 >= PriceScale*10 Then var3 = 1;#plot1(var2,"등락",RED); Else if var2 < PriceScale*10 and var2 > 0 Then var3 = 2;#plot1(var2,"등락",magenta); else if var2 <= 0 and var2 > -PriceScale*10 Then var3 = -1;#plot1(var2,"등락",clay); Else if var2 <= -PriceScale*10 Then var3 = -2;#plot1(var2,"등락",blue); if crossup(var3,0) Then buy("b1"); if CrossDown(var3,0) Then sell("s1"); 감사합니다.
프로필 이미지
softtoug
2018-07-06
175
글번호 120324
시스템
답변완료

질문드립니다.

1 아래 시스템은 다음 봉 시가가 5%이상일 경우와 아닌 경우 분할 매매 시스템식입니다. if MarketPosition == 1 Then { #봉완성시 다음봉 시가가 진입가 대비 5% 이상 상승하면 true if NextBarOpen >= EntryPrice*(1+Per/100) Then OpenCond = true; #BP1 청산이 발생하면 Xcond1은 true if LatestExitName(0) == "BP1" Then Xcond1 = true; #BP2 청산이 발생하면 Xcond2은 true if LatestExitName(0) == "BP2" Then Xcond2 = true; #BP3 청산이 발생하면 Xcond3은 true if LatestExitName(0) == "BP3" Then Xcond3 = True; #OpenCond가 false일때 if OpenCond == false Then { if Xcond1 == false then ExitLong("BP1",atlimit,EntryPrice(0)*1.03,"",Floor(MaxContracts*0.3),1); if Xcond2 == false then ExitLong("BP2",atlimit,EntryPrice(0)*1.04,"",Floor(MaxContracts*0.4),1); if Xcond3 == false then ExitLong("BP3",atlimit,EntryPrice(0)*1.05); } #OpenCond가 true일&#46468; if OpenCond == true Then { #BP1로 청산이 안된 경우만 발생 if Xcond1 == false Then ExitLong("BP6",atlimit,EntryPrice*(1+(Per+3)/100),"",Floor(MaxContracts*0.3),1); #BP2로 청산이 안된 경우만 발생 if Xcond2 == false Then ExitLong("BP7",atlimit,EntryPrice*(1+(Per+4)/100),"",Floor(MaxContracts*0.4),1); #BP3로 청산이 안된 경우만 발생 if Xcond3 == false Then ExitLong("BP8",atlimit,EntryPrice*(1+(Per+5)/100)); #5%이하로 가격하락하면 전량처산 exitlong("BP5",AtStop,EntryPrice*(1+Per/100)); } } #매수포지션이 아니면 모두 false로 초기화 if MarketPosition != 1 Then{ OpenCond = false; Xcond1 = false; Xcond2 = false; Xcond3 = false; } 다음 봉 시가가 5%이상일때 트레일링 스탑을 적용하고 5%미만으로 상승폭이 떨어질때 전량청산으로 수정하려면 Opencond이 true인 부분만 아래와 같이 수정할 경우 사용가능한지 문의드립니다 #OpenCond가 true일&#46468; if OpenCond == true Then { SetStopTrailing(2,5,PercentStop,1); #5%이하로 가격하락하면 전량처산 exitlong("BP5",AtStop,EntryPrice*(1+Per/100)); } 2 SetStopTrailing은 분할로 사용이 불가하죠? 3 분봉상 큰폭으로 상승할때 수익극대화할수 있는 방법에 SetStopTrailing말고 다른 함수가 있는지도 문의드립니다.(분할로 매매가 가능한)
프로필 이미지
가이츠
2018-07-06
194
글번호 120313
시스템
답변완료

시간설정 수식부탁합니다.

해선 크루드오일을 주로 거래합니다. 매주 수요일 현지시각으로 11시에는 거래를 안하고 싶은데 이를 수식으로 부탁합니다. 즉, 수요일, 목요일 이틀동안 10시 50분에 모두 청산, 11시 20분까지는 거래 안함. 감사합니다.
프로필 이미지
Pooh
2018-07-06
199
글번호 120309
시스템
답변완료

수정요청 드립니다.

안녕하세요? 아래와 같은 시스템 작성하여주셨고, 먼저 깊은 감사의 마음 전달드립니다. 아래에 기존 작성해주신 시스템에서 수정할 부분이 있어 요청드립니다. ***수정요청 사항 1) 진입조건에서 "중간에 도지1개는 허용"을 " 중간에 도지 모두 허용" 으로 수정 2) 진입조건에서 몸통길이를 외부변수로 넣을수있게 하여서 잘 사용중입니다. 하지만 문제가 외부변수를 진입방법 한가지 밖에 없습니다. 현재는 매도진입과 매수진입 모두 동일한 한가지 변수로 밖에 진입이 안됩니다. 매수도 매도를 각각 분리하여 외부변수 넣을수 있게 부탁드리겠습니다. 그럼 부탁드립니다. 감사합니다. -------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------- 안녕하세요 예스스탁입니다. input : 음봉틱수(10),양봉틱수(0),손절틱수(10),익절틱수(10); var1 = abs(C-O); if C < O and var1 == PriceScale*음봉틱수 and C[1] > O[1] and var1[1] == PriceScale*양봉틱수 Then sell(); if C > O and var1 == PriceScale*양봉틱수 and C[1] < O[1] and var1[1] == PriceScale*음봉틱수 then Buy(); SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); 즐거운 하루되세요 > 대구어린울프 님이 쓴 글입니다. > 제목 : 시스템작성 부탁드립니다. > 안녕하세요? 간단한 수식작성 부탁드립니다. 더운데 건강챙기시고, 감사합니다.^^ # 손절,익절 : 외부변수 # 진입후 청산이후 재진입 반복 ( 익절이든 손절이든 하기전에 신규진입 금지) # 진입조건 (중간에 도지 1개는 허용) 1. 몸통길이 (외부변수)틱 양봉 다음 몸통길이 (외부변수)틱 음봉 나오면 매도 2. 몸통길이 (외부변수)틱 음봉 다음 몸통길이 (외부변수)틱 양봉 나오면 매수
프로필 이미지
대구어린울프
2018-07-06
184
글번호 120308
시스템