커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

부탁드립니다.

input : g(11),r(25),s(2),P(10); var : SMIV(0),SMIS(0); SMIv = ema(ema(c-(highest(H,g) + lowest(L,g))*0.5, r),s) * 100 / (0.5 * ema(ema(highest(H,g)-lowest(L,g),r),s)) ; SMIS = ema(SMIV,p); if stime >= 200000 or stime < 030000 then{ if crossup(SMIV,SMIS) Then buy(); if CrossDown(SMIV,SMIS) Then sell(); } SetStopLoss(PriceScale*30,PointStop); if MarketPosition == 1 Then{ if highest(h,BarsSinceEntry) >= EntryPrice+PriceScale*20 Then ExitLong("bx",AtStop,EntryPrice+PriceScale*1); } if MarketPosition == -1 Then{ if Lowest(l,BarsSinceEntry) <= EntryPrice-PriceScale*20 Then ExitShort("sx",AtStop,EntryPrice-PriceScale*1); } 상기 시스템에서 손절을 30틱으로 해서 작성해주신 수식입니다. 혹, 시스템신호 발생이 완성봉기준이라면 손절가를 완성봉의 시가를 기준으로 -10틱을 설정하고싶읍니다. (매수매도 공히) - 상기 시간은 우리나라 시간으로 설정된거죠? - 상기 트레일링은 진입가 기준으로 2틱 익절로 알고있는데.. 수익 최고가 대비 25틱 이 내려오면 익절되게끔 부탁드립니다. 미리 감사드립니다.
프로필 이미지
vmfha
2015-05-13
133
글번호 85990
시스템
답변완료

문의드립니다.

먼저 항상 감사드립니다. 100틱 차트에서 다른 200틱이나 300틱의 파라볼릭을 보고 싶습니다. 아래 두가지 지표에 수정 부탁드립니다. (다른 틱수는 변수로 놓아 변경할수 있게 부탁드려요.) 1.일반 파라 볼릭(종가) 2.갭보정 파라볼릭 1.일반 파라 볼릭(종가)------------------------- Input : af(0.02), maxAF(0.2); var1 = CSar(af,maxAF); if var1 > C Then Plot1(var1, "CSAR",Blue); Else Plot1(var1, "CSAR",Red); ------------------------------------------------ 2.갭보정 파라볼릭------------------------------- Input: AF(0.004), AFMAX(0.04); Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),GCSAR(0); var : gap(0),sumgap(0),GO(0),GH(0),GL(0),GC(0); if date!=date[1] then { // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉) gap = Open-Close[1]; // 일간갭 sumGap = sumGap+gap; // 일간갭 누적 } GO = O - sumGap;// 갭보정 시가 GH = H - sumGap;// 갭보정 고가 GL = L - sumGap;// 갭보정 저가 GC = C - sumGap; // 갭보정 종가 if EP != 0 Then { if Direction == 1 then { EP = HighValue; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if GH > HighValue then { HighValue = GH; AF_Value = AF_Value + AF; if AF_Value >= AFMAX then AF_Value = AFMAX; } if GC < SAR_Value then { Direction = -1; SAR_Value = EP; AF_Value = 0; EP = 0; LowValue = Gl; } } else { EP = LowValue; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if GL < LowValue then { LowValue = GL; AF_Value = AF_Value + Af; if AF_Value >= AFMAX then AF_Value = AFMAX; } if GC > SAR_Value then { Direction = 1; SAR_Value = EP; AF_Value = 0; EP = 0; HighValue = GH; } } GCSar = SAR_Value; } else { if SAR_Value != 0 && EP == 0 then { if Direction == 1 then { EP = HighValue; AF_Value = AF; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if GH > HighValue then { HighValue = GH; AF_Value = AF_Value + AF; if AF_Value >= AFMAX then AF_Value = AFMAX; } } else { EP = LowValue; AF_Value = Af; SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value); if GL < LowValue then { LowValue = GL; AF_Value = AF_Value + AF; if AF_Value >= AFMAX then AF_Value = AFMAX; } } GCSar = SAR_Value; } else { if Direction == 0 then { if GC > GC[1] then Direction = 1; else if GC < GC[1] then Direction = -1; } else { if Direction == 1 then { if GC < GC[1] then { Direction = -1; SAR_Value = HighValue; GCSar = SAR_Value; } } if Direction == -1 then { if GC > GC[1] then { Direction = 1; SAR_Value = LowValue; GCSar = SAR_Value; } } } LowValue = min(GL,LowValue); HighValue = max(GH,HighValue); } } if GC > GCSar[1] then plot1(GCSar,"갭보정파라볼릭",RED); Else plot1(GCSar,"갭보정파라볼릭",blue); --------------------------------------------------------------------
프로필 이미지
비류천
2015-05-13
222
글번호 85983
지표
답변완료

안녕하세요*

안녕하세요.반갑습니다 문의하고자 하는것은요 1.nput : shortPeriod(4.5), longPeriod(9), Period(4.5); Var : value(0) , macdosc(0) ; value = MACD(shortPeriod, longPeriod); macdosc = value-ema(value,Period); Plot1(value, "MACD"); Plot2(ema(value,Period), "MACDSignal"); PlotBaseLine1(0, "기준선1"); 2.Input : shortPeriod(9), longPeriod(18), Period(9); Var : value(0) , macdosc(0) ; value = MACD(shortPeriod, longPeriod); macdosc = value-ema(value,Period); Plot1(value, "MACD"); Plot2(ema(value,Period), "MACDSignal"); PlotBaseLine1(0, "기준선1"); 3.Input : shortPeriod(12), longPeriod(26), Period(9); Var : value(0) , macdosc(0) ; value = MACD(shortPeriod, longPeriod); macdosc = value-ema(value,Period); Plot1(value, "MACD"); Plot2(ema(value,Period), "MACDSignal"); PlotBaseLine1(0, "기준선1"); 위의1.2.3항식을 하나로 묶어서 사용하고자 합니다. 감사합니다
프로필 이미지
회원
2016-12-11
126
글번호 85982
지표
답변완료

문의 드립니다.

Inputs : Loss(40); If LatestExitName(1)!="BL" and MarketPosition==0 Then Buy("Buy", OnClose, DEF, 1); If LatestExitName(1)!="SL" and MarketPosition==0 Then Sell("Sell", OnClose, DEF, 1); if MarketPosition==1 Then ExitLong("BL",AtStop,LatestEntryPrice-PriceScale*Loss,"Buy"); if MarketPosition==-1 Then ExitShort("SL",AtStop,LatestEntryPrice+PriceScale*Loss,"Sell"); 위 구문은 가장 최근에 청산했던 포지션이 손절이었을때는 매수나 매도를 안하게 하는 구문인데, If LatestExitName(1)!="BL" 청산명이 BL 이 아닐때만 매수하라고 했는데 계속 매수나, 매도를 반복하는 이유는 무엇인가요?
프로필 이미지
무결점
2015-05-13
149
글번호 85981
시스템
답변완료

문의드립니다.

1. 분봉에서 전일과 전전일 전체틱수의 합 2. 1분봉에서 일자를 입력하면 해당일의 dayupvol을 가져옴. 예) 입력일1)20150511 입력일2)20150512 감사합니다~
프로필 이미지
산인
2015-05-13
115
글번호 85980
지표

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2015-05-13
18
글번호 85976
시스템
답변완료

수정부탁드립니다.

아래수식에서 상용로그10 으로 수정해주시길 부탁드립니다. 그리고 파일첨부에서 보시면 노란색의 고점 저점 에 선이 포함되게 수정부탁드립니다 늘 빠른 답변 감사드립니디. input:방향(1),시작년월일(20150504); Var:j(0),k(0),고(0),저(0),고Bar(0),저Bar(0); Array:r[7](0),fr[7](0); #==============================================================================# # 초기처리 (Initialize Routine) #==============================================================================# r[0] = 0.; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; #==============================================================================# # 메인처리 (Main Routine) #==============================================================================# 고Bar = 고Bar + 1; 저Bar = 저Bar + 1; #=========================================================# # 상승방향 #=========================================================# If 방향 >= 0 Then { #---------------------------------------------------------# # 최고/최저점 계산 #---------------------------------------------------------# if date >= 시작년월일 and 고 < H then { 고 = H; 고Bar = 0; } if date == 시작년월일 and (저 == 0 or 저 > L) then { 저 = L; 저Bar = 0; } #---------------------------------------------------------# # Fibonacci Retracements 계산 #---------------------------------------------------------# k = 고; for j = 0 to 6 { fr[j] = 저 + ((k - 저) * r[j]); } } #=========================================================# # 하락방향 #=========================================================# Else { #---------------------------------------------------------# # 최고/최저점 계산 #---------------------------------------------------------# if date == 시작년월일 and 고 < H then { 고 = H; 고Bar = 0; } if date >= 시작년월일 and (저 == 0 or 저 > L) then { 저 = L; 저Bar = 0; } #---------------------------------------------------------# # Fibonacci Retracements 계산 #---------------------------------------------------------# k = 저; for j = 0 to 6 { fr[j] = 고 - ((고 - k) * r[j]); } } #==============================================================================# # 지표출력 #==============================================================================# if sdate >= 시작년월일 then{ Plot1(fr[0], "0%",Iff(방향>=0,BLACK,LBLUE)); Plot2(fr[1], "24%",Iff(방향>=0,CYAN,CYAN)); Plot3(fr[2], "38%",Iff(방향>=0,LCYAN,LCYAN)); Plot4(fr[3], "50%",Iff(방향>=0,BLUE,BLUE)); Plot5(fr[4], "62%",Iff(방향>=0,RED,LMAGENTA)); Plot6(fr[5], "76%",Iff(방향>=0,MAGENTA,LYELLOW)); Plot7(fr[6],"100%",Iff(방향>=0,GRAY,BWHITE)); }
프로필 이미지
알리섬
2015-05-13
197
글번호 85970
지표
답변완료

수식 부탁드립니다.

매번 성의있는 답변 정말 감사드립니다. 오늘 질문이 좀 많습니다. 1. 얼마 전 제가 부탁드려 아래와 같은 식을 짜주셨는데, 진입이나 손절시 반올림이 가능한지요? if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then var1 = O; if MarketPosition <= 0 and stime == 155000 Then buy("b1",AtStop,NextBarOpen*1.01); if MarketPosition >= 0 and stime == 155000 Then sell("s1",AtStop,NextBarOpen*0.99); if MarketPosition <= 0 and H < var1*1.01 Then buy("b",AtStop,var1*1.01); if MarketPosition >= 0 and L > var1*0.99 Then sell("s",AtStop,var1*0.99); SetStopLoss(1,PercentStop); 예를들어 매수진입가를 계산해서 80.8021 이 나왔는데, 거래하는 종목은 소수점 두째자리까지밖에 안습니다. 이럴 때 반올림해서 두째자리까지만 나타내면 80.80 이 됩니다. 하지만 80.8021 보다 큰 값중 가장 가까운 값인 80.81 로 진입을 하더군요. 매도진입가의 경우도 계산한 값이 69.2482 라고 할 때, 반올림한 값인 69.25 로 진입하고 싶은데, 실제로는 69.2482 보다 낮은 값중 가장 가까운 값인 69.24 로 진입을 하더군요. 손절의 경우도 마찬가지더군요. 2. 제가 부탁드려 짜주신 위의 식은 해외선물 용이라 16시 ~ 익일 16시까지를 하루로 잡은 것입니다. 이렇게 잡은 하루에서 1회 또는 2회나 3회 등 회수를 조절해서 조절한 만큼 손절이 발생하면 그날은 더 이상 진입 할 수 없게 식을 짤 수 있나요? 하지만 손절이 아니라 트레일링스탑 따위는 재진입해도 상관 없습니다. 그리고 여기서 말하는 그 날은 16시~16시 를 하루로 잡았을 때의 그 날을 말합니다. 예를들어 1회 손절 제한으로 할 경우 3일 15시 20분에 손절이 발생하면, 이는 2일 16시 ~ 3일 16시 사이에 발생한 손절이 됩니다. 따라서 3일 15시 20분 ~ 3일 16시 까지는 재진입하지 않습니다. 하지만 3일 16시 ~ 4일 16시에는 신호가 발생하면 진입이 가능합니다. 3-1. (아래의 질문은 처음에 부탁드렸을 때 짜주신것 처럼, 특정시(예를들어 16시)를 기준으로 진입신호가 발생하면 즉시 진입 할 수 있게 부탁드립니다.) 위에 짜주신 식은 매일 16시~16시에 진입하도록 되어 있습니다. 그리고 매일 16시의 시가를 기준으로 진입가를 계산하도록 되어 있습니다. 그런데 격일제 또는 원하는 날짜만 하는 것이 가능한지요? 예를들어 하루씩 걸러 월수금 화목 월수금 화목... 또는 이틀씩 걸러 월 목 화 금 수 월 목 화 금 수... 라던지 아니면 매주 월요일만 또는 수요일만 한다던가, 아니면 매주 화수금만 한다던지 말입니다. 이런식으로 날짜 조절이 가능한지 궁금합니다. 그리고 이 때, 만약 월수금 화목으로 한다고 할 때, 월요일 16시 ~ 화요일 16시 까지를 1일로 잡고, 이날 만약에 진입 신호가 발생하지 않는다면 그냥 넘기고, 다시 수요일 16시 ~ 목요일 16시의 진입신호를 기다린다던가 하는 식입니다. 3-2. 위의 3-1 과 연관된 질문인데, 월요일 또는 화요일이나 수요일 등의 16시 시가를 기준으로 일주일 내내 사용하는 게 가능한지 궁금합니다. 예를들어 월요일 16시 시가 곱하기 1.1 을 매수진입가로 한다고 했을 때, 월요일 16시의 시가가 100 이라면 진입가는 110 이 됩니다. 그런데 월요일 16시 ~ 화요일 16시 까지는 110 이라는 진입 신호가 발생하지 않고, 목요일에 발생하면 목요일에 진입하는 식입니다. 또는 화요일이나 수요일 16시를 기준으로 삼을 수도 있습니다. 그래서 월요일 16시 시가를 기준으로 월~금 까지 쓸수도 있고, 화요일 16시 시가를 기준으로 화~금, 또는 화~ 다음주 수를 기준으로 삼을 수도 있습니다. 이런식으로 특정 날짜와 시간을 기준으로 며칠안에 진입신호가 발생하면 진입하는식이 가능한지 궁금합니다. 4-1. 위에 짜주신 식은 10분봉을 사용하여 16시를 기준으로 했는데, 이를 단순 일봉이나 주봉을 사용하면 어떻게 짜야되는지요? 예를들어 매일 일봉의 시가를 기준으로, 또는 매주 주봉의 시가를 기준으로 삼아, 그 시가 곱하기 1.1 을 매수진입가로 삼는 식은 어떻게 짜나요? 4-2. 일봉을 기준으로 20일 평균 ATR 의 2배 만큼 만큼 변동이 생겼을 때 진입하는 식은 어떻게 짜나요? 또는 주봉의 경우 20주 평균 ATR 의 2배 만큼 변동이 생겼을 때 진입하는 식은 어떻게 짜나요? 5-1. 갭변동이 발생했을 때의 손절은 어떻게 하나요? 예를들어 매수진입가 대비 1% 하락했을 때 즉시 시장가로 손절 주문을 내게 식을 짰는데, 갑자기 5% 갭 하락 했다면, 이를 무시하고 그냥 시장가로 손절 주문이 나가는 건가요? 만약 1% 손절로 설정해 놨는데, 1% 이상 떨어져도 그냥 시장가로 청산 주문 나가는 식이 궁금합니다. 5-2. 아래의 식은 제가 얼마전 부탁드려서 짜주신 식입니다. (위에 보여드린 식 밑에 덧붙여 쓰고 있습니다.) var : HH(0),LL(0); if MarketPosition == 1 Then{ HH = highest(h,BarsSinceEntry); if HH >= EntryPrice*1.10 and HH < EntryPrice*1.20 Then ExitLong("bx1",AtStop,HH-(HH-EntryPrice)*0.5); if HH >= EntryPrice*1.20 and HH < EntryPrice*1.30 Then ExitLong("bx2",AtStop,HH-(HH-EntryPrice)*0.6); if HH >= EntryPrice*1.30 and HH < EntryPrice*2.00 Then ExitLong("bx3",AtStop,HH-(HH-EntryPrice)*0.7); if HH >= EntryPrice*2.00 Then ExitLong("bx4",AtStop,HH*0.9); } 이 식의 경우도 5-1 의 경우와 같이 갭 하락이 있을 수 있습니다. 예를들어 위 식의 경우 진입이후 최고가가 1.2 ~ 1.3 에 있을때, 이 수익 분이 60% 빠지면 즉시 시장가로 청산하게 되어 있는데, 만약에 50% 가 빠진 후에 순차적으로 60% 가 빠지지 않고, 갭하락으로 바로 70% 가 빠져버리는 경우가 있습니다. 이럴 때에도 역시 그냥 바로 시장가로 청산 주문이 나가는 식이 궁금합니다.
프로필 이미지
spek
2015-05-13
157
글번호 85965
시스템
답변완료

검색식을 주세요

단순20일 이평선이 TEMA10 선을 상향돌파하는 검색식을 알려주세요
프로필 이미지
회원
2015-05-13
126
글번호 85964
종목검색