커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 부탁드립니다

var1 = ma(C,20); if MarketPosition == 0 and CrossUp(c,var1) Then Buy("b",OnClose,DEf,1); if MarketPosition == 1 Then { ExitLong("Bp",AtLimit,EntryPrice+PriceScale*30); Sell("bs",AtStop,EntryPrice-PriceScale*30,MaxContracts*2); } if MarketPosition == -1 Then { ExitShort("Sp",AtLimit,EntryPrice-PriceScale*30); Buy("sb",AtStop,EntryPrice+PriceScale*30,MaxContracts*2); } 안녕하세요 이평선 넘어가면 30틱 이익나면 끝내고 30틱 손실나면 계속 늘리는 식인데 진입후 바로 이익 손실이나면 다음 봉에서 실행되는 데 해결 방법 없을까요?
프로필 이미지
와시1000
2023-01-02
946
글번호 165018
시스템

동백초보 님에 의해서 삭제되었습니다.

프로필 이미지
동백초보
2023-01-02
9
글번호 165004
시스템
답변완료

수정부탁드립니다

수정ㅂ부탁드립니다. 표시가안되네요 input: ATRLength9(100), ATRMult9(0.5); vars: ATR9(0), avg9(0), dn9(0), up9(0), trend9(1), flag9(0), flagh9(0), qqq9(0),trTx(0); ATR9 = ATR(ATRLength9) * ATRMult9; avg9 = (highest(H,1)+lowest(L,1))/2; up9 = avg9 + ATR9; dn9 = avg9 - ATR9; if close > up9[1] then trend9 = 1; else if close < dn9[1] then trend9 = -1; if trend9 < 0 and trend9[1] > 0 then flag9 = 1; else flag9 = 0; if trend9 > 0 and trend9[1] < 0 then flagh9 = 1; else flagh9 = 0; if trend9 > 0 and dn9 < dn9[1] then dn9 = dn9[1]; if trend9 < 0 and up9 > up9[1] then up9 = up9[1]; if flag9 == 1 then up9 = avg9 + ATR9; if flagh9 == 1 then dn9 = avg9 - ATR9; if trend9 == 1 then qqq9 = up9; { Text_Delete(trtx); trTx = Text_New(sDate,sTime,var1-PriceScale*2," ▲"); Text_SetColor(trTx,Red); Text_SetStyle(trTx,2,0); Text_SetSize(trTx,20); } if trend9 == -1 then qqq9 = dn9; { Text_Delete(trtx); trTx = Text_New(sDate,sTime,var1+PriceScale*2," ▼"); Text_SetColor(trTx,Blue); Text_SetStyle(trTx,2,1); Text_SetSize(trTx,20); }
프로필 이미지
외국인
2023-01-02
1024
글번호 164999
지표
답변완료

수정부탁드립니다

input: ATRLength9(100), ATRMult9(10); vars: ATR9(0), avg9(0), dn9(0), up9(0), trend9(1), flag9(0), flagh9(0), qqq9(0),trTx(0); ATR9 = ATR(ATRLength9) * ATRMult9; avg9 = (highest(H,1)+lowest(L,1))/2; up9 = avg9 + ATR9; dn9 = avg9 - ATR9; if close > up9[1] then trend9 = 1; else if close < dn9[1] then trend9 = -1; if trend9 < 0 and trend9[1] > 0 then flag9 = 1; else flag9 = 0; if trend9 > 0 and trend9[1] < 0 then flagh9 = 1; else flagh9 = 0; if trend9 > 0 and dn9 < dn9[1] then dn9 = dn9[1]; if trend9 < 0 and up9 > up9[1] then up9 = up9[1]; if flag9 == 1 then up9 = avg9 + ATR9; if flagh9 == 1 then dn9 = avg9 - ATR9; if trend9 == 1 then qqq9 = up9; { Text_Delete(trtx); trTx = Text_New(sDate,sTime,var1-PriceScale*2," ▲"); Text_SetColor(trTx,Red); Text_SetStyle(trTx,2,0); Text_SetSize(trTx,20); } if trend9 == -1 then qqq9 = dn9; { Text_Delete(trtx); trTx = Text_New(sDate,sTime,var1+PriceScale*2," ▼"); Text_SetColor(trTx,Blue); Text_SetStyle(trTx,2,1); Text_SetSize(trTx,20); }
프로필 이미지
외국인
2023-01-02
1238
글번호 164998
지표
답변완료

수식 부탁드립니다.

특정날짜를 지정해서 매매를 안하게끔 조건식 가능한지요? 예를들어 작년수능일 22/11/17 , 년마지막날 22/12/30 , 새해첫날 23/01/02 세 날짜 강제로 주문 안나오게 가능하면 부탁드립니다. 감사합니다.
프로필 이미지
캣피쉬
2023-01-02
930
글번호 164996
시스템
답변완료

지표

항상감사합니다. 새해 복많이 받으세요 지표 시가(종가)(지정가격)에서 진동폭을 대입했을때 시가가 중간이 되어 위로 아래로 지표라인 부탁드립니다. *] 시가 292.95 대입진동폭3.5 /나눔[0=시가/0.63/1.25/2.5/3.75/5/6.25/7.50/8.75/9.37/(100=3.5)] 292.95기준[3.5진동폭][3.5/2->1.75/2->0.88/2->0.44->0.22][3.28,3.06,2.62,1.74] 1]시가[2.95] 2.95+[3.5의0.63] [3.5의1.25] [3.5의3.75] [3.5의절반] [3.5의6.25] [3.5의7.50] [3.5의8.75] [3.5의9.37] [3.5] 2.95-[3.5의9.37] [3.5의8.75] [3.5의7.50] [3.5의6.25] [3.5의절반] [3.5의3.75] [3.5의1.25] [3.5의0.63] [3.5] 2]종가 종가[2.95] 2.95+[3.5의0.63] [3.5의1.25] [3.5의3.75] [3.5의절반] [3.5의6.25] [3.5의7.50] [3.5의8.75] [3.5의9.37] [3.5] 2.95-[3.5의9.37] [3.5의8.75] [3.5의7.50] [3.5의6.25] [3.5의절반] [3.5의3.75] [3.5의1.25] [3.5의0.63] [3.5] 3]지정가 지정가[2.95] 2.95+[3.5의0.63] [3.5의1.25] [3.5의3.75] [3.5의절반] [3.5의6.25] [3.5의7.50] [3.5의8.75] [3.5의9.37] [3.5] 2.95-[3.5의9.37] [3.5의8.75] [3.5의7.50] [3.5의6.25] [3.5의절반] [3.5의3.75] [3.5의1.25] [3.5의0.63] [3.5]
프로필 이미지
호정0688
2023-01-02
987
글번호 164995
지표
답변완료

수식 문의

.일전에 도움 주신 수식을 다음과 같이 수정하고 싶습니다. 아래의 수식은 진입 시그널이 발생한 캔들의 기준, N봉의 고/저가에 +_n틱을 더해 레인지를 설정하고 해당 레인지 안에 들어오는 추가 진입 시그널을 걸러내고 손실보는 방향으로 벗어나면 손절대신 햇지로 반대시그널를 추가하는 로직입니다. 위와 같이, 진입 시그널과 / 헷지 시그널을 구분하여 볼 때, 수정 요청 : ㄱ. 해당 레인지 안에서 반대포지션의 '진입시그널'은 허용합니다. (ex : 매수시그널로 만들어진 레인지 안에서 추가 매수 시그널은 걸러내되 매도 진입 시그널은 발생시킴) ㄴ. 매수진입 후 - 햇지매도 시그널이 발생한 상태라면 매도진입 시그널은 걸러내지 않고 발생시킵니다. 그 반대도 마찬가지. (이렇게 되면 레인지 안에서 등락하여 매수-헷지-매도-헷지가 반복되더라도 해당 레인지 안에서의 총 진입 횟수는 4회를 넘지 않을 것입니다) ㄷ. 청산로직 추가 : 현재 포지션이 '진입시그널'일 때 - 설정된 레인지값 * 1 이상 수익나면 모두 청산합니다. 현재 포지션이 '헷지 시그널' 일 때 - 설정된 레인지 값 * 1.5 이상 수익 나면 모두 청산합니다. 끝. 지표나 차트의 조건값이 아닌 포지션 변화에 따라 시그널을 구분해서 조건을 다르게 하는게 꽤 어렵네요. 부탁 좀 드리겠습니다. 새해 복많이 받으시고, 되시는 일 항상 잘 되시기 바랍니다. 감사합니다. ======= 아래 =========== Input : Vector(9), Period(14), 매수선(40), 매도선(60); input : 저가봉(5),고가봉(5),저가폭(10),고가폭(10); Input : shortPeriod(12), longPeriod(26); Var : rsi_(0), rsi_signal(0) ; var : ll(0),hh(0),eh(0),el(0),BuyEntry(False),SellEntry(False); Var : MACDv(0), MACDsig(0), macdosc(0); rsi_ = RSI(Period); rsi_signal = MA(RSI(Period), Vector); MACDv = Data2(MACD(shortPeriod, longPeriod)); //MACDsig = Data2(ema(MACDv,Period)); MACDsig = Data2(ema(Data2(MACD(shortPeriod, longPeriod)),Period)); //macdosc = Data2(MACDv-ema(MACDv,Period)); macdosc = Data2(Data2(MACD(shortPeriod, longPeriod))-ema(Data2(MACD(shortPeriod, longPeriod)),Period)); ll = lowest(l,저가봉); hh = highest(h,고가봉); if MarketPosition != 0 Then { if MarketPosition != MarketPosition[1] or CurrentContracts > CurrentContracts[1] Then { eh = hh; el = ll; } } BuyEntry = true; SellEntry = true; if MarketPosition == 0 Then { if MarketPosition(1) == 1 and (C > ll[BarsSinceEntry(1)]-PriceScale*저가폭 and C < HH[BarsSinceEntry(1)]+PriceScale*고가폭) Then BuyEntry = False; if MarketPosition(1) == -1 and (C > ll[BarsSinceEntry(1)]-PriceScale*저가폭 and C < HH[BarsSinceEntry(1)]+PriceScale*고가폭) Then SellEntry = False; } else { if MarketPosition == 1 and C > el-PriceScale*저가폭 and C < eh+PriceScale*고가폭 Then BuyEntry = false; if MarketPosition == -1 and C > el-PriceScale*저가폭 and C < eh+PriceScale*고가폭 Then SellEntry = false; } if macdosc > 0 && rsi_signal < 매수선 && rsi_ > rsi_signal && rsi_[1] < rsi_signal[1] Then { if BuyEntry == true Then Buy("B"); } if macdosc > 0 && rsi_signal < 매수선 && rsi_[1] < 30 && rsi_ > 30 Then { Buy("1"); } else if macdosc < 0 && rsi_signal > 매도선 && rsi_[1] > 70 && rsi_ < 70 Then { Sell("2"); } if macdosc < 0 && rsi_signal > 매도선 && rsi_ < rsi_signal && rsi_[1] > rsi_signal[1] Then { if SellEntry == true Then Sell("S"); } if MarketPosition == 1 Then Sell("bx",AtStop,ll[BarsSinceEntry]-PriceScale*저가폭); if MarketPosition == -1 Then BUY("sx",AtStop,hh[BarsSinceEntry]+PriceScale*고가폭);
프로필 이미지
부똘이
2023-01-02
971
글번호 164988
시스템
답변완료

도와주세요~

실매수 누적거래량으로 봉차트에 추세선을 그리고자 합니다. 첫 캔들 종가 값을 기준으로 가격추세선 Plot1을 시작(예; 이것을 추세선값 A라고 가정) 실매수 누적거래량(변수B) 산정 ---- 변수B = 변수B + (Upvol-DownVol) 누적거래량(변수B)보다 현(Upvol-DownVol)거래량의 결과값에 대한 상승과 하락의 100분율을 구함.(변수C) 입력변수1 = 0.15 (현 거래량이 전 거래량보다 + 일 때) 입력변수2 = -0.15 (현 거래량이 전 거래량보다 - 일 때) **추세선이 실제거래량과 차이를 보정하기 위함 결론적으로 Plot1 = 전누적거래량비 현 거래량결과값이 +값을 가지면 추세선값A x 100분율을 구한 변수C x 입력변수1 전누적거래량비 현 거래량결과값이 -값을 가지면 추세선값A x 100분율을 구한 변수C x 입력변수2 전누적거래량비 현 거래량결과값이 0값을 가지면 추세선값A = 전추세선값 도와주심에 진심으로 감사드리며 새해 복 많이 받으세요.
프로필 이미지
포보스
2023-01-02
944
글번호 164987
지표
답변완료

지표

항상감사합니다. 1]챠트에 시간표시 부탁드립니다 5분봉챠트라면 5분시가에서 종가까지 시간이 현재봉위치오른쪽에 표시 부탁드립니다. 시,분,초 2]위아래 저점에서 고점까지가격은 표시됩니다. 1.25부터~8.75까지 가격표시도 될까요 저점)0+1.25 2.5 3.75 5.00 6.25 7.50 8.75 고점)100 input:length(10),글자크기(8); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0), Text1(0),처리구분(""); Array:고점[10,2](0),저점[10,2](0); //가격,위치 처리구분 = ""; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If 저점[1,1] > L Then 처리구분 = "저점처리"; If 고점[1,1] < H Then 처리구분 = "고점처리"; } Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; sBar = Index - 저점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1], sDate[eBar],sTime[eBar],고점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2)+NewLine+NumToStr((고점[1,1]-저점[1,1]),2)); Text_SetStyle(Text1, 2, 1); Text_SetSize(text1,글자크기); } } If 처리구분 == "저점처리" Then { lastLoVal = L; If 저점[1,2] < 고점[1,2] then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then { 저점[1,1] = L; 저점[1,2] = Index; sBar = Index - 고점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1], sDate[eBar],sTime[eBar],저점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2)+NewLine+NumToStr((고점[1,1]-저점[1,1]),2)); Text_SetStyle(Text1, 2, 0); Text_SetSize(text1,글자크기); } } TL_SetSize(TL1,3); TL_SetColor(TL1,Yellow);
프로필 이미지
호정0688
2023-01-01
983
글번호 164986
지표