커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

추가 부탁드립니다.

아래식에 청산을 추가해 주십시요. 현물 1분봉. <매수 익일, 시초가가 "오늘 상한 간주 5일(일봉)이평선" 이상인 경우> -"오늘 상한 간주 5일(일봉) 이평선" 대비 -0.6%이하로 하락시 청산 -전일 종가대비 +10% 상승시 청산 -피봇2차 저항선을 상향시 청산 -14:45시에 청산 *오늘 상한 간주 5일(일봉) 이평선 : 오늘 상한가에 도달했다고 간주한 상태에서 5일이평선 <매수 익일, 시초가가 5일(일봉)이평선 100이상이고 "오늘 상한 간주 5일(일봉)이평선" 이하인 경우> -매수가 대비 1% 수익시 청산 -09:10시에 청산 <매수 익일, 시초가가 5일(일봉)이평 이격도 100미만인 경우> -5일(일봉)이평 이격도 100이상시 청산 -09:45시에 청산 ---------------------------------------------------------- input : P(5); var : cnt(0),sum(0),sum1(0),mav(0),mav1(0),dis(0),dis1(0),daycnt(0),PredayVol(0); Var : Pivot(0),R1(0),R2(0),S1(0),S2(0); Pivot = (DayHigh(1)+DayLow(1)+DayClose(1))/3; sum = 0; sum1 = 0; for cnt = 0 to P-1{ sum = sum+DayClose(cnt); sum1 = sum1+DayClose(cnt+1); } mav = sum/P; mav1 = sum1/P; dis = c/mav*100; dis1 = DayClose(1)/mav1*100; for cnt = 1 to 1000 { if stime == stime[cnt] and sdate != sdate[cnt] then{ PredayVol = DayVolume[cnt]; cnt = 1001; } } if date != date[1] Then{ Daycnt = daycnt+1; var1 = dayopen/mav*100; } if countif(dis < 100,dayindex+1) < 1 and C < dayopen and dayopen <= DayClose(1)*1.035 and dayhigh <= dayopen*1.04 and dis1 >= 103 and ExitDate(1) != sdate and DayVolume < PredayVol*1 and var1 > 100 Then{ if stime >= 133000 and stime < 133300 and dis >= 101 and dis < 103.5 Then buy("b1",AtMarket); if stime >= 140000 and stime < 140300 and dis >= 101 and dis < 104.0 Then buy("b2",AtMarket); if stime >= 143000 and stime < 143300 and dis >= 101 and dis < 104.5 Then buy("b3",AtMarket); if stime >= 144500 and stime < 144800 and c < Pivot and dis >= 101 and dis < 105.5 Then buy("b4",AtMarket); }
프로필 이미지
쌀사비팔
2013-11-19
191
글번호 69592
시스템
답변완료

문의 드립니다.

day 챠트에서 X=12일 평균선 진일조건: 종가 > X 시간변수로 9:00 이후 매수 종가 < X 시간변수로 9:00 이후 매도 청산조건: 종가 < X 시간변수로 9:00 이후 청산 종가 > X 시간변수로 9:00 이후 청산
프로필 이미지
토마토쥬스
2013-11-18
138
글번호 69591
시스템
답변완료

도와주세요 내머리로는 안돼네요

앞봉보다 가격높으면+(플러스)갖고 그가격을유지하는봉이계속나오면 계속+(플러스)를갖다가, 가격이낮아지면-(마이너스)갖고그낮아진가격은계속-(마이너스)를갖다가 가격이높아지면다시+........ 이와같은수식을만들고싶어요 부탁드립니다
프로필 이미지
회원
2013-11-18
163
글번호 69590
지표
답변완료

문의드립니다.

1.주식 매수주문 발생시 주식과 현금의 비율이 7 : 3을 넘지 않도록 설정. 매수주문 발생시 현재 계좌의 주식 보유비율이 70% 이상이면 매수금지 단, 특정 변수 값이 1초과이면 매수가능 2.ㄱ.주식매입자금을 특정변수 값의 수치가 1 이면 50만원 , 2일경우 100만원 ,3일경우 150만원 이런식으로 1의 배수로 설정. 주식매입자금을 외부변수로 저장하여 1회투자시 얼마씩 투자할 것인가 설정. ㄴ.주식매도시 A. 2 - 현재변수값 , 2를 남기고 나머지를 처분 B. 현재변수값 - 4 , 현재변수값에서 4를 처분 모든 매매식에 공통 적용 ㄷ.2를 전봉의 고가에 매도시 수수료포함 이익금이 얼마나 되는지 저장=>계좌평가금이 얼마나 늘어나는지 저장 2 - 현재변수값 2를 남기고 나머지를 전봉의 고가에 매도시 수수료 포함 이익금이 얼마나 되는지 저장=>계좌평가금이 얼마나 늘어나는지를 변수에 저장하는 식 3.매수주문 발생 후 매수 할 당시의 계좌평가금에서 손절할 경우 감소한 계좌평가금 손실액 저장. 예로 ㄱ.매수시 현재 계좌 평가금 100만원 손절시 수수료포함 현재 계좌평가금 90만원 손실액 -10만원 ㄴ.다시 손절 매수시 계좌 평가금 평가금 90만원 손절시 수수료 포함 현재 계좌평가금 80만원경우 손실액-10만원 현재 종목 누적 손실액 -20만원 저장 누적손실액 이상의 이익매도 발생시 누적손실액은 계속 0으로 저장 누적이익금은 존재하지 않음. 주의점으로는 여러종목 분산투자시 계좌평가금으로 인한 오류가능성 현 1종목의 연속 누적손절매손실액에 한함. 4.손절 매 주문 발생시 마다 손절매횟수를 체크 하고 싶습니다. 손절매가 연속 발생시 누적 횟수 카운트 , 이익매도 발생시 누적 횟수 카운트 0
프로필 이미지
아싸가오리
2013-11-18
196
글번호 69581
시스템
답변완료

진입가 기준 로그선 표시문의

1,input : p1(2), p2(163); var :단기지수이평(0), 장기지수이평(0); 단기지수이평 = ema(c, p1); 장기지수이평 = ema(c, p2); #진입 if crossdown(단기지수이평,장기지수이평) Then Sell("Sell"); 여기서 신호 발생시 화살표 표시가 아니라 로그선으로 나오고 싶습니다 첨부파일 참조 2, 신호 발생시 진입한 가격에서 -몇틱 -몇틱 +몇틱 +몇틱 +몇틱 로그선으로 나오고 싶습니다
프로필 이미지
사막에핀꽃
2013-11-18
241
글번호 69572
시스템
답변완료

부탁드립니다.

수고 많습니다. 1. 틱차트에서 일봉의 5 이평,주봉의 5이평을 구현하는 식. 2. 틱차트에서 일봉의 5이평이 상승중일때,하락중일때를 구현하는 식. 감사합니다.
프로필 이미지
먼지의추억
2013-11-18
160
글번호 69570
지표

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

프로필 이미지
회원
2013-11-18
7
글번호 69569
사용자 함수
답변완료

문의드립니다

[기존수식] if C > O and ((C >= BBdn and BBdn >= O) or (C <= BBdn)) Then var1 = 1; if (MarketPosition == 0 and var1 == 1 and C > O and ((C >= BBdn and BBdn >= O) or (C <= BBdn))) And (money >= 10000 or (money >= Money[1]*(1+Per/100))) Then{ var1 = 2; Buy("매수"); } 수식을 적용햇는데 반영이 안되네요 뭐가 잘못됫는지 해서요 해당봉의 거래대금이 10000 미만인데도 매수신호가 들어가고 있습니다. money=1 이 거래대금 1000만원이므로 지표상 거래대금이 10000 일 경우 10000 * 1천만 = 1000억이 되야하지 않나요? 이게 수식상에 들어가야 되는거 아닌가요? 뭔가 오류가 잇습니다. 수정바랍니다
프로필 이미지
칼봉산
2013-11-18
150
글번호 69568
지표
답변완료

부탁 드립니다.

안녕하세요. 오늘은 질문과 내용이 아주 깁니다. 생각나는대로 질문드려서 수식을 넣어봤는데 원하는 대로 작동을 안하네요. 전체적으로 점검 부탁드리고요, 틀린 코멘트 있는지 살펴주세요. 신규로 작성해주시는 수식엔 코멘트 부탁 드리고요. 진입조건은 세가지인데 다 똑같이 macd로 통일하고 1분봉으로 했습니다. 신호가 자주나오게 해서 수식이 제대로 작동하는지 확인하려고 합니다. 진입하고 손절가가 오면 손절과 동시에 스위칭을하고 계약 수에 따라 분할 청산. 그리고 마지막 남은 1계약은 익절로 마무리. 세번이상 스위칭을 하고 분할 청산도 나왔는데 익절이 나오지 않으면 지금까지의 손절값을 포함한 본절+1에 트레일링 스탑. 네번이상 스위칭을 하면 분할 청산이 나오지 않아도 지금까지의 손절값을 포함한 본절+1에 트레일링 스탑. 다섯번 스위칭을 하면 분할 청산이 나오지 않아도 지금까지의 손절값을 포함한 본절+1에 트레일링 스탑하거나 손절. 다섯번 스위칭 후 손절이 나온 경우 진입 조건이 나오면 진입할수도 안할수도 있도록 변수를 조정하게 함. 당일 1계약의 익절 거래가 1번일 때, 2번일 때, 3번일 때 등을 Profit(3)변수를 조정해서 사용함. 진입부터 제대로 잘 안됩니다. 첫 번째 진입 후 익절은 하면 두 번째 진입이 와야하는데 건너뛰고 세 번째 진입이 나옵니다. 13/11/5 역시 익절 후 macd 골드에 두 번째 진입이 나오지 않습니다. 13/11/7 알려주신 수식으로 트레일링 스탑이 나오지 않아서 #일부 청산 후 본절을 위한 수식 Condition1 = EntryDate(4) == sdate and (IsEntryName("sb4",4) == true or IsExitName("bs4",4) == true) and (IsEntryName("sb4",3) == true or IsExitName("bs4",3) == true) And (IsEntryName("sb4",2) == true or IsExitName("bs4",2) == true) And (IsEntryName("sb4",1) == true or IsExitName("bs4",1) == true); 이런식으로 or 조건을 넣어봤는데도 나오지 않네요. bx,sx,btr,str로 끝나는 청산이 하나도 안나옵니다. 지난번에 33407번에서 질문에 답변 주신 내용을 이해 못했습니다. #Condition1이 true이면 청산후 30분 경과후에 #조건 만족하면 매수나 매도 진입 if Condition1 == false or (Condition1 == true and TimeToMinutes(stime) >= TimeToMinutes(ExitTime(1))+60) Then{ if 매수조건 Then buy(); if 매도조건 Then sell(); } 청산후 30분 경과후에는 왜 나온건지, 30분인데 수식엔 60이 들어가는게 맞는건지. 청산조건의 var2는 뭔지. 도대체 모르겠습니다. ●두 가지 조건을 더 추가하고 싶습니다. 하나는 진입하고 스위칭이 없었을 때 30분 내에 분할청산이 나오지 않으면 본절. 스위칭이 있었으면 30분 내에 분할 청산이 나오지 않으면 진입가격 + 스위칭 손절가격에 청산 또는 스위칭 없이 10틱 손절. 익절까지 나와서 모든 포지션이 청산되면 마지막 청산값+원하는 가격에 주문을 넣을 수 있나요? 트레일링 스탑이 작동을 안해서 진행안되고 멈춰있는 상태입니다. 주문부터 원하는대로 안되는 상태지만요. 바쁘시더라도 작동안하는 수식없게 잘 살펴주세요. 부탁 드립니다. //**수식**// Input : shortPeriod(12), longPeriod(26), Period(9),Profit(3); Input : 일부청산(10); var : MACDV(0),MACDS(0),cnt(0),count(0),cnt1(0),count1(0),xcond(false); var : Pcnt(0); value1 = TRIX(shortPeriod); value2 = ema(value1, Period); if date != date[1] Then Pcnt = 0; MACDV = MACD(shortPeriod, longPeriod);#MACD MACDS = ema(MACDV, Period);#MACD시그널 #당일 최근5번 거래의 진입이 sb1,sb2,sb3,sb4,sb5,sb6,sb7,bs1,bs2,bs3,bs4,bs5,bs6,bs7 인 횟수 count = 0; for cnt = 0 to 4{ if sdate == EntryDate(cnt) And (IsExitName("sb1") == true Or IsExitName("sb2") == true Or IsExitName("sb3") == true Or IsExitName("sb4") == true Or IsExitName("sb5") == true Or IsExitName("sb6") == true Or IsExitName("sb7") == true Or IsExitName("bs1") == true Or IsExitName("bs2") == true Or IsExitName("bs3") == true Or IsExitName("bs4") == true Or IsExitName("bs5") == true Or IsExitName("bs6") == true Or IsExitName("bs7") == true) Then count = count+1; } #bx나 sx청산이 나오면 true아니면 false xcond = ExitDate(1) == sdate and (IsExitName("bx",1) ==true or IsExitName("sx",1) == true); #익절청산횟수 if ExitDate(1) == sdate and MarketPosition == 0 and MarketPosition[1] != 0 Then Pcnt = Pcnt+1; #당일 진입횟수 카운트 count1 = 0; for cnt1 = 0 to 20{ if sdate == EntryDate(cnt1) Then count1 = count1+1; } #일부 청산 후 본절을 위한 수식 Condition1 = EntryDate(4) == sdate and (IsEntryName("sb4",4) == true or IsExitName("bs4",4) == true) and (IsEntryName("sb4",3) == true or IsExitName("bs4",3) == true) And (IsEntryName("sb4",2) == true or IsExitName("bs4",2) == true) And (IsEntryName("sb4",1) == true or IsExitName("bs4",1) == true); #무포지션 If MarketPosition == 0 and #청산이 발생한 봉에서 동시에 진입을 하지 못하게하는내용 (ExitDate(1) != sdate or (ExitDate(1) == sdate and BarsSinceExit(1) != 0)) and #수익청산 횟수 제어 Pcnt < Profit and #5번연속 손절발생시 더이상 추가진입을 하지 못하게 함 Xcond == false Then{ #첫 진입 macd if count1 == 0 Then{ #골든크로스이면 매수 if CrossUP(MACDV, MACDS) Then Buy("b첫매수",OnClose,def,1); #데드크로스이면 매도 if CrossDown(MACDV, MACDS) and Xcond == false Then Sell("s첫매도",OnClose,def,1); } #두 번째 진입 if count1 == 1 Then{ if CrossUP(MACDV, MACDS) Then Buy("b두번째매수",OnClose,def,2); if CrossDown(MACDV, MACDS) Then Sell("s두번째매도",OnClose,def,2); } #세 번째 진입 if count1 == 2 Then{ if CrossUP(MACDV, MACDS) Then Buy("b세번째매수",OnClose,def,3); if CrossDown(MACDV, MACDS) Then Sell("s세번째매도",OnClose,def,3); } } #매수포지션 진입 후 if MarketPosition == 1 Then{ #포지션 최대계약수가 3이상일때 첫번째 청산 if (CurrentContracts == MaxContracts and MaxContracts >= 3) Then ExitLong("매수일부청산1",Atlimit,EntryPrice+PriceScale*(일부청산+5),"",MaxContracts-2,1); #포지션 최대계약수가 3이상일때 두번째 청산 if CurrentContracts < MaxContracts and MaxContracts >= 3 and CurrentContracts == 2 then ExitLong("매수일부청산2",Atlimit,EntryPrice+PriceScale*(일부청산+7),"",1,1); #포지션 최대계약수가 2일때 첫번째 청산 if (CurrentContracts == MaxContracts and MaxContracts == 2) Then ExitLong("매수청산a",Atlimit,EntryPrice+PriceScale*(일부청산+5),"",1,1); #마지막 청산 if CurrentContracts == 1 Then ExitLong("매수잔량익절",Atlimit,EntryPrice+PriceScale*(일부청산+15)); //나머지 전량청산 if MarketPosition == 1 and Condition1 == true and (IsEntryName("sb1",0) == true or IsEntryName("sb2",0) == true or IsEntryName("sb3",0) == true or IsEntryName("sb4",0) == true) And countif(CurrentContracts < CurrentContracts[1],BarsSinceEntry) >= 1 Then ExitLong("btr",AtStop,EntryPrice); #손절 후 스위칭이 연속 8번미만일때 if count < 8 Then{ #현재 남은 수량이 7계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 7 if CurrentContracts == 7 Then sell("bs7",AtStop,EntryPrice-PriceScale*10,7); #현재 남은 수량이 6계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 6 if CurrentContracts == 6 Then sell("bs6",AtStop,EntryPrice-PriceScale*10,6); #현재 남은 수량이 5계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 5 if CurrentContracts == 5 Then sell("bs5",AtStop,EntryPrice-PriceScale*10,5); #현재 남은 수량이 4계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 4 if CurrentContracts == 4 Then sell("bs4",AtStop,EntryPrice-PriceScale*10,4); #현재 남은 수량이 3계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 3 if CurrentContracts == 3 Then sell("bs3",AtStop,EntryPrice-PriceScale*10,3); #현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2 if CurrentContracts == 2 Then sell("bs2",AtStop,EntryPrice-PriceScale*10,2); #현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1 if CurrentContracts == 1 Then sell("bs1",AtStop,EntryPrice-PriceScale*10,1); } #스위칭3번연속일때 10틱 손실이면 청산 if count == 3 Then ExitLong("bx",AtStop,EntryPrice-PriceScale*10); } #매도포지션 진입 후 if MarketPosition == -1 Then{ #포지션 최대계약수가 3이상일때 첫번째 청산 if (CurrentContracts == MaxContracts and MaxContracts >= 3) Then ExitShort("매도일부청산1",Atlimit,EntryPrice-PriceScale*(일부청산+5),"",MaxContracts-2,1); #포지션 최대계약수가 3이상일때 두번째 청산 if CurrentContracts < MaxContracts and MaxContracts >= 3 and CurrentContracts == 2 then ExitShort("매도일부청산2",Atlimit,EntryPrice-PriceScale*(일부청산+7),"",1,1); #포지션 최대계약수가 2일때 첫번째 청산 if (CurrentContracts == MaxContracts and MaxContracts == 2) Then ExitShort("매도청산a",Atlimit,EntryPrice-PriceScale*(일부청산+5),"",1,1); #마지막 청산 if CurrentContracts == 1 Then ExitShort("매도잔량익절",Atlimit,EntryPrice-PriceScale*(일부청산+15)); //나머지 전량청산 #트레일링 스탑 if MarketPosition == -1 and Condition1 == true and (IsEntryName("bs1",0) == true or IsEntryName("bs2",0) == true or IsEntryName("bs3",0) == true or IsEntryName("bs4",0) == true) And countif(CurrentContracts < CurrentContracts[1],BarsSinceEntry) >= 1 Then ExitShort("str",AtStop,EntryPrice); #손절 후 연속스위칭8번미만일때 if count < 8 Then{ #현재 남은 수량이 7계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 7 if CurrentContracts == 7 Then Buy("sb7",AtStop,EntryPrice+PriceScale*10,7); #현재 남은 수량이 6계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 6 if CurrentContracts == 6 Then Buy("sb6",AtStop,EntryPrice+PriceScale*10,6); #현재 남은 수량이 5계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 5 if CurrentContracts == 5 Then Buy("sb5",AtStop,EntryPrice+PriceScale*10,5); #현재 남은 수량이 4계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 4 if CurrentContracts == 4 Then Buy("sb4",AtStop,EntryPrice+PriceScale*10,4); #현재 남은 수량이 3계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 3 if CurrentContracts == 3 Then Buy("sb3",AtStop,EntryPrice+PriceScale*10,3); #현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2 if CurrentContracts == 2 Then Buy("sb2",AtStop,EntryPrice+PriceScale*10,2); #현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1 if CurrentContracts == 1 Then Buy("sb1",AtStop,EntryPrice+PriceScale*10,1); } #스위칭3번연속일때 10틱 손실이면 청산 if count == 3 Then ExitShort("sx",AtStop,EntryPrice+PriceScale*10); }
프로필 이미지
고운무지개
2013-11-18
215
글번호 69567
시스템