커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

당일목표수익 청산 재문의

안녕하세요. 아래 내용으로 코드를 적용해보니 원활하게 적용되지가 않습니다. CME거래소 기준, *문제1) cme 거래소 기준 일자가 바뀌고 매수,매도 조건이 성립되어도 진입되지 않음. *문제2) 수익이 200point (800틱)이 이루어졌으나, 다시 다시 재진입하는 현상이 나타남. *문제3) 혹시나 하는 마음에 시스템 트레이딩설정창에서, 당일수익틱수 input을 (10) 변경하면, 청산조건이 성립하지 않아도. 즉시청산시킴. 시스템이, 단타로 수익을 쌓아가는 구조입니다. 청산시 마다 +수익1, +수익, -수익 이렇게 더해지면서 최종 목표 수익포인트에 도달시 거래소 기준 해당일자에 진입을 하지 않게 하고 싶습니다. 예) 1월5일 기준 (분봉거래) 수익 = 수익값 담을 빈배열 첫번쨰 숏진입 수익 5 point (봉 완성시) 두번째 롱진입 수익 50 point (봉 완성시) 세번째 롱진입 손실 -50 point (봉 완성시) 네번째 숏진입 수익 100 point (봉 완성시) 누적 수익합계 105로 1월5일 거래 종료 후 1월 6일 00:00:00 재시작 --- 이전 답변 --- 안녕하세요 예스스탁입니다. Input : 당일수익틱수(400); Var : N1(0),dayPl(0),당일수익(0),Xcond(false); 당일수익 = PriceScale*당일수익틱수; if Bdate != Bdate[1] Then { Xcond = false; N1 = NetProfit; } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] then { if daypl >= 당일수익 Then Xcond = true; if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then Xcond = true; } if MarketPosition == 1 then { if C >= EntryPrice+((당일수익-daypl)/CurrentContracts) Then ExitLong("dbp"); } if MarketPosition == -1 then { if C <= EntryPrice-((당일수익-daypl)/CurrentContracts) then ExitShort("dsp"); } if Xcond == false then { if MarketPosition == 0 and (진입시간1, 진입시간2) Then { if 매수조건 Then { Buy(); } if 매도조건 Then { Sell(); } } if MarketPosition == 1 Then { if 매수청산 조건 Then { ExitLong(); if 매도진입조건 (스위칭) and (진입시간1, 진입시간2) Then { Sell(""); } } } if MarketPosition == -1 Then { if 매도청산 조건 Then { ExitShort(); if 매수 진입조건 (스위칭) and (진입시간1, 진입시간2) Then { Buy(""); } } } } 즐거운 하루되세요 > 카카보오12 님이 쓴 글입니다. > 제목 : 하루최대수익 달성시 당일거래 정지. > 안녕하십니까? 매번 좋은 알고리즘을 알려주셔서 감사드립니다. 1분봉으로 선물 거래를 하고 있습니다. 기존에 올라온 글(QnA)들로 처리하려고 하니 계속 진입되어 이렇게 글을 납깁니다. if MarketPosition == 0 and (진입시간1, 진입시간2) Then { if 매수조건 Then { Buy(); } if 매도조건 Then { Sell(); } } if MarketPosition == 1 Then { if 매수청산 조건 Then { ExitLong(); if 매도진입조건 (스위칭) and (진입시간1, 진입시간2) Then { Sell(""); } } } if MarketPosition == -1 Then { if 매도청산 조건 Then { ExitShort(); if 매수 진입조건 (스위칭) and (진입시간1, 진입시간2) Then { Buy(""); } } } 위 방식으로 선물을 거래하고 있습니다. 문제는 1분봉으로 진입하나, 하루 수익이 100point (나스닥 400틱) 달성 (봉 완성시) 당일거래 (CME거래소 시간 기준) 를 중지하고자 합니다. 유능하신분의 답장을 기다리겠습니다. 새해 복 많이 받으시고, 늘 건강하시길 바라겠습니다.
프로필 이미지
카카보오12
2022-01-07
1320
글번호 155219
시스템
답변완료

시스템 이상 검토의뢰

수고 하십니다 ! 안녕하세요 예스스탁입니다. var : T(0),S(0); var1 = ma(c,60); var2 = ma(C,120); if CrossUp(var1,Var2) Then { T = 1; S = c; if T[1] == -2 Then Sell(); } if CrossDown(var1,Var2) Then { T = -1; S = c; if T[1] == 2 Then Sell(); } if T == 1 and C >= S+PriceScale*20 Then T = 2; if T == -1 and C <= S-PriceScale*20 Then T = -2; 즐거운 하루되세요 > tnsflwls 님이 쓴 글입니다. > 제목 : 시스템 작성의뢰 > 수고 하십니다 ! 이동평균선 60선 이 120선을 crossup 할 때 가격 보다 20틱 이상 상승 한 다음 이동평균선 60선 이 120선을 crossdown 할 때는 매도를 , 이동평균선 60선 이 120선을 crossdown 할 때 가격보다 20틱 이상 하락 한 다음 이동평균선 60선 이 120선을 crossup 할 때는 매수를 체결하는 수식 작성을 부탁 드립니다 . *** 수고 하세요 *** ***** 위 수식을 부탁드렸으나 pricescale 의 틱 숫자 적용이 안되어서 다시 한번 수식 작성을 부탁 드립니다 ! *** 수고 하세요 ***
프로필 이미지
tnsflwls
2022-01-07
1248
글번호 155218
시스템
답변완료

행복; 지표식 작성 바랍니다

한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다 지표식 관련입니다 새해 복 많이 받으시고 항상 건강하시기 바랍니다^^ <질문> - 주기; 7분봉 - 오늘로부터 영업일 기준 8일 전(달력으로는 2021년 12월 27일) dayindex == 0 부터 - 거래량을 누적하는 지표를 그리고자 합니다 즉, if 날자 >= (오늘로부터 영업일 기준 8일 전) then{ 누적거래량 = 누적거래량 + volume; plot1(누적거래량); } 으로 하고 싶습니다 수식 작성 바랍니다 감사합니다^^
프로필 이미지
행복한가방
2022-01-07
1071
글번호 155217
지표
답변완료

시스템

안녕하세요 가령 data2(c)가격이 data2상의 볼린저밴드 하단을 음봉으로하향 돌파후 n봉경과후 다시 하단을 양봉으로 상향돌파하면 data1매수 data2(c)가격이 data2상의 볼린저밴드 상단을 양봉으로상향 돌파후 n봉경과후 다시 상단을 음봉으로 하향돌파하면 data1매도 감사합니다
프로필 이미지
달마7
2022-01-07
1093
글번호 155216
시스템
답변완료

수식 문의 드립니다.

안녕하세요, 아래 지표를 플롯하면 차트내에 발생했던 좌우 5봉안의 고점,저점 추세선들이 모두 오른쪽 확장되어 그려지게 되는데요. 현재 가격이 차트에 그려진 모든 수평추세선 중 어느 하나라도 넘어서게되면 즉시 매수하고, 어느 하나라도 crossdown되면 즉시 매도하는 수식을 만들고 싶습니다. 항상 감사드립니다. input : left(5), right(5); var : swing_low(0),swing_high(0),Dir(0); swing_low = SwingLow(1, L, left, right, left+right+1); swing_high = SwingHigh(1, H, left, right,left+right+1); if (swing_low != -1 ) Then { var11 = sdate[right]; var12 = STime[right]; var13 = Low[right]; var21 = var11[1]; var22 = var12[1]; var23 = var13[1]; var31 = var21[1]; var32 = var22[1]; var33 = var23[1]; if var23 > 0 Then { Value11 = TL_New(var11,var12,var13,sDate,sTime,var13); TL_SetExtRight(value11,true); TL_SetColor(value11,BLACk); TL_SetSize(value11,2); } } if ( swing_high != -1 ) Then{ var51 = sdate[right]; var52 = STime[right]; var53 = high[right]; var61 = var51[1]; var62 = var52[1]; var63 = var53[1]; var71 = var61[1]; var72 = var62[1]; var73 = var63[1]; if var63 > 0 Then { value31 = TL_New(var51,var52,var53,sDate,sTime,Var53); TL_SetExtRight(value31,true); TL_SetColor(value31,BLACk); TL_SetSize(value31,2); } }
프로필 이미지
김예스
2022-01-07
1017
글번호 155215
시스템

검색식 문의

1. A= AccumN(v-v[1], period) 100일 동안 A값이 0선을 한 번이상 돌파한 종목중에서 당일 볼린져밴드 상단선을 돌파하는 종목을 검색하는 식 2. A= AccumN(v-v[1], period) 100일 동안 A값이 0선을 한 번이상 돌파한 종목중에서 볼린져밴드 상단선 이상인 종목을 검색하는 식 3. A= AccumN(v-v[1], period) 100일 동안 A값이 0선을 한 번이상 돌파한 종목중에서 전일 동시간대 거래량 2배인 종목을 검색하는 식 세 가지 종목검색이 궁금합니다. 부탁드립니다.
프로필 이미지
에드코타
2022-01-06
686
글번호 155214
종목검색
답변완료

변환부탁드립니다.

study("Breakout Finder", "BF", overlay = true, max_bars_back = 500, max_lines_count = 400) prd = input(defval = 5, title="Period", minval = 2) bo_len = input(defval = 200, title="Max Breakout Length", minval = 30, maxval = 300) cwidthu = input(defval = 3., title = "Threshold Rate %", minval = 1., maxval = 10) / 100 mintest = input(defval = 2, title = "Minimum Number of Tests", minval = 1) bocolorup = input(defval = color.blue, title = "Breakout Colors", inline = "bocol") bocolordown = input(defval = color.red, title = "", inline = "bocol") lstyle = input(defval = line.style_solid, title = "Line Style", options = [line.style_solid, line.style_dashed, line.style_dotted]) //width lll = max(min(bar_index, 300), 1) float h_ = highest(lll) float l_ = lowest(lll) float chwidth = (h_ - l_) * cwidthu // check if PH/PL ph = pivothigh(prd, prd) pl = pivotlow(prd, prd) //keep Pivot Points and their locations in the arrays var phval = array.new_float(0) var phloc = array.new_int(0) var plval = array.new_float(0) var plloc = array.new_int(0) // keep PH/PL levels and locations if ph array.unshift(phval, ph) array.unshift(phloc, bar_index - prd) if array.size(phval) > 1 // cleanup old ones for x = array.size(phloc) - 1 to 1 if bar_index - array.get(phloc, x) > bo_len array.pop(phloc) array.pop(phval) if pl array.unshift(plval, pl) array.unshift(plloc, bar_index - prd) if array.size(plval) > 1 // cleanup old ones for x = array.size(plloc) - 1 to 1 if bar_index - array.get(plloc, x) > bo_len array.pop(plloc) array.pop(plval) // check bullish cup float bomax = na int bostart = bar_index num = 0 hgst = highest(prd)[1] if array.size(phval) >= mintest and close > open and close > hgst bomax := array.get(phval, 0) xx = 0 for x = 0 to array.size(phval) - 1 if array.get(phval, x) >= close break xx := x bomax := max(bomax, array.get(phval, x)) if xx >= mintest and open <= bomax for x = 0 to xx if array.get(phval, x) <= bomax and array.get(phval, x) >= bomax - chwidth num += 1 bostart := array.get(phloc, x) if num < mintest or hgst >= bomax bomax := na if not na(bomax) and num >= mintest line.new(x1 = bar_index, y1 = bomax, x2 = bostart, y2 = bomax, color = bocolorup, style = lstyle) line.new(x1 = bar_index, y1 = bomax - chwidth, x2 = bostart, y2 = bomax - chwidth, color = bocolorup, style = lstyle) line.new(x1 = bostart, y1 = bomax - chwidth, x2 = bostart, y2 = bomax, color = bocolorup, style = lstyle) line.new(x1 = bar_index, y1 = bomax - chwidth, x2 = bar_index, y2 = bomax, color = bocolorup, style = lstyle) plotshape(not na(bomax) and num >= mintest, location = location.belowbar, style = shape.triangleup, color = bocolorup, size = size.small) alertcondition(not na(bomax) and num >= mintest, title = "Breakout", message = "Breakout") // check bearish cup float bomin = na bostart := bar_index num1 = 0 lwst = lowest(prd)[1] if array.size(plval) >= mintest and close < open and close < lwst bomin := array.get(plval, 0) xx = 0 for x = 0 to array.size(plval) - 1 if array.get(plval, x) <= close break xx := x bomin := min(bomin, array.get(plval, x)) if xx >= mintest and open >= bomin for x = 0 to xx if array.get(plval, x) >= bomin and array.get(plval, x) <= bomin + chwidth num1 += 1 bostart := array.get(plloc, x) if num1 < mintest or lwst <= bomin bomin := na if not na(bomin) and num1 >= mintest line.new(x1 = bar_index, y1 = bomin, x2 = bostart, y2 = bomin, color = bocolordown, style = lstyle) line.new(x1 = bar_index, y1 = bomin + chwidth, x2 = bostart, y2 = bomin + chwidth, color = bocolordown, style = lstyle) line.new(x1 = bostart, y1 = bomin + chwidth, x2 = bostart, y2 = bomin, color = bocolordown, style = lstyle) line.new(x1 = bar_index, y1 = bomin + chwidth, x2 = bar_index, y2 = bomin, color = bocolordown, style = lstyle) plotshape(not na(bomin) and num1 >= mintest, location = location.abovebar, style = shape.triangledown, color = bocolordown, size = size.small) alertcondition(not na(bomin) and num1 >= mintest, title = "Breakdown", message = "Breakdown") alertcondition((not na(bomax) and num >= mintest) or (not na(bomin) and num1 >= mintest), title = "Breakout or Breakdown", message = "Breakout or Breakdown")
프로필 이미지
코샘매쓰
2022-01-06
1242
글번호 155213
지표
답변완료

시가 교차

다음과 같이 수식 부탁합니다. 1. 해외선물입니다. 2. 08시 부터 6봉째에서 5이평선이 시가선 위이면 매수, 아래이면 매도 3. 이후 5이평선이 시가선 상향교차시 매수, 하향 교차시 매도 4. 10봉이내 교차시 재진입금지 5. 100 P 수익후 50 P 저감시 청산 6. 당일 청산
프로필 이미지
호테
2022-01-06
1161
글번호 155212
시스템
답변완료

재 문의드립니다..

답변주신 수식을 분봉에서 시초가 매매를 하려고 하는데 안되는데 다른 문제가 있을까요? 주석도 부탁드립니다.. input : P(20); var : cnt(0); if NextBarSdate != sDate Then { var1 = NextBarOpen; For cnt = 0 to P-2 { var1 = var1+DayClose(cnt); } var2 = var1/P; if abs(NextBarOpen-var2) >= 3 Then Sell(); Else Buy(); }
프로필 이미지
고구미
2022-01-06
1185
글번호 155210
시스템