커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 변경부탁드립니다.

아래 서식으로 시스템매매 했을시 매수,매도 합산 수익금액이나 손실금액이 목표치에 도달했을 때 거래를 멈추게 되어있는데 매도 진입 후 수익금액이나 손실금액이 만족되었을 시에는 종료 타이틀이 정상적으로 금일종료(수익), 금일종료1(손실)로 나오는데 매수진입 후 수익금액이나 손실금액이 만족되었을 시에는 매수청산1로 나오는데 이것도 매도시와 마찬가지로 금일종료2(수익)나 금일종료3(손실)로 명칭이 나오게끔 수식 변경 부탁드립니다. 당일수익 = PriceScale*당일수익틱수; 당일손실 = PriceScale*당일목표손실; if (sdate != sdate[1] and stime >= b_time1) or (sdate == sdate[1] and stime >= b_time1 and stime[1] < b_time1) Then { Tcond = true; Xcond = false; N1 = NetProfit; } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] Then { if (IsExitName("금일종료",1) == true or IsExitName("금일종료1",1) == true or IsExitName("금일종료",1) == true or IsExitName("금일종료1",1) == true) then Xcond = true; if daypl >= 당일수익 or daypl <= -당일손실 Then Xcond = true; } value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); If b_time1<=sTime and sTime<= e_time1 Then { stoK = StochasticsK(stoK_p11,stoK_p12); stoD = StochasticsD(stoK_p11,stoK_p12,stoK_p13); If countif(ma(C,ma_Period11)[1] < ma(C,ma_Period11),1) == 1 and (ma(C,ma_Period12)[1] <= ma(C,ma_Period13)[1] and ma(C,ma_Period12) > ma(C,ma_Period13)) and countif(ma(C,ma_Period14)[1] < ma(C,ma_Period14),1) == 1 and countif(ma(C,ma_Period15)[1] < ma(C,ma_Period15),1) == 1 and countif(ma(C,ma_Period16)[1] < ma(C,ma_Period16),1) == 1 and countif(ma(C,ma_Period17)[1] < ma(C,ma_Period17),1) == 1 Then { T1 = 1; } If countif(ma(C,ma_Period11)[1] > ma(C,ma_Period11),1) == 1 and (ma(C,ma_Period12)[1] >= ma(C,ma_Period13)[1] and ma(C,ma_Period12) < ma(C,ma_Period13)) and countif(ma(C,ma_Period14)[1] > ma(C,ma_Period14),1) == 1 and countif(ma(C,ma_Period15)[1] > ma(C,ma_Period15),1) == 1 and countif(ma(C,ma_Period16)[1] > ma(C,ma_Period16),1) == 1 and countif(ma(C,ma_Period17)[1] > ma(C,ma_Period17),1) == 1 Then { T1 = -1; } If countif(ma(C,ma_Period21)[1] < ma(C,ma_Period21),1) == 1 and (ma(C,ma_Period22)[1] <= ma(C,ma_Period23)[1] and ma(C,ma_Period22) > ma(C,ma_Period23)) and countif(ma(C,ma_Period24)[1] < ma(C,ma_Period24),1) == 1 and countif(ma(C,ma_Period25)[1] < ma(C,ma_Period25),1) == 1 and countif(ma(C,ma_Period26)[1] < ma(C,ma_Period26),1) == 1 and countif(ma(C,ma_Period27)[1] < ma(C,ma_Period27),1) == 1 Then { T2 = 2; } If countif(ma(C,ma_Period21)[1] > ma(C,ma_Period21),1) == 1 and (ma(C,ma_Period22)[1] >= ma(C,ma_Period23)[1] and ma(C,ma_Period22) < ma(C,ma_Period23)) and countif(ma(C,ma_Period24)[1] > ma(C,ma_Period24),1) == 1 and countif(ma(C,ma_Period25)[1] > ma(C,ma_Period25),1) == 1 and countif(ma(C,ma_Period26)[1] > ma(C,ma_Period26),1) == 1 and countif(ma(C,ma_Period27)[1] > ma(C,ma_Period27),1) == 1 Then { T2 = -2; } } if Xcond == false and MarketPosition == 0 and T1 == -1 and T2 == -2 and Crossup(stok,상단) and MarketPosition >= 0 then sell("매도",AtMarket); if MarketPosition == -1 Then { ExitShort("금일종료",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일종료1",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if T1==1 and T2==2 then ExitShort("매도청산",AtMarket); if Crossdown(stok,하단) and C <= EntryPrice Then ExitShort("매도청산1",AtMarket); } if Xcond == false and MarketPosition == 0 and T1 == 1 and T2 == 2 and Crossdown(stok,하단) and MarketPosition <= 0 then buy("매수",AtMarket); if MarketPosition == 1 Then { ExitShort("금일종료2",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일종료3",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if T1==-1 and T2==-2 then Exitlong("매수청산",AtMarket); if Crossup(stok,상단) and C >= EntryPrice Then Exitlong("매수청산1",AtMarket); } SetStopProfittarget(PriceScale*익절틱수,PointStop);
프로필 이미지
미완
2019-01-10
184
글번호 125108
시스템
답변완료

수식되로 매매가 진행되지 않네요.. 뭐가 문제인지 확인부탁드림니다.

제가 지금 사용하고 있는 수식은 다음과 같습니다. 매수진입후 84틱 수익시 바로 청산을 하는 수식인데 위 그림과 같이 84틱이 넘었는데 봉종가에 청산되는 현상이 발생하였고... 검증 돌려보니 84틱 수익도달시 청산되는 case가 하나도 없네요..결국 제가 의도한대로 되지 않았다는 뜻인데요.... 아래 수식에서 뭐가 문제가 있는지 알려주시고 혹시 잘못되었으면 제가 의도한대로 수식좀 수정 부탁드려요... 제 의도 매수진입시 (1) 60틱이상 수익시 봉완성후 청산 (2) 90틱이상 손실시 봉완성후 청산 (3) 84틱 수익도달시 즉시 청산 (4) 40틱이상 수익도달후 1틱수익까지 떨어졌을때 즉시 청산(본전청산) (5) 200틱 이상 손실시 즉시 청산 매도진입시 (1) 90틱이상 수익시 봉완성후 청산 (2) 80틱이상 손실시 봉완성후 청산 (3) 110틱 수익도달시 즉시 청산 (4) 30틱이상 수익도달후 1틱수익까지 떨어졌을때 즉시 청산(본전청산) (5) 190틱 이상 손실시 즉시 청산 공통) 당일 5시 40분에 매수 매도 모두 청산 ============================================================================== if MarketPosition == 1 then SetStopProfittarget(PriceScale*60, PointStop); SetStopLoss(PriceScale*90, PointStop); if MarketPosition == -1 then SetStopProfittarget(PriceScale*90, PointStop); SetStopLoss(PriceScale*80, PointStop); if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*84 Then ExitLong("최고점즉시청산1",AtLimit,EntryPrice+PriceScale*84); Else { if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*40 Then ExitLong("약손실청산1",AtStop,EntryPrice+PriceScale*1); Else ExitLong("가슴아픈손절1",AtStop,EntryPrice-PriceScale*200); } } if MarketPosition == -1 Then { If Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*110 Then ExitShort("최고점즉시청산2",AtStop,EntryPrice-PriceScale*110); Else { if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*30 Then ExitShort("약손실청산2",AtStop,EntryPrice-PriceScale*1); Else ExitShort("가슴찢어지는손절",AtStop,EntryPrice+PriceScale*190); } } } if stime == 54000 Then{ exitlong("당일청산1"); ExitShort("당일청산2"); } ==============================================================================
프로필 이미지
이형지
2019-01-10
194
글번호 125097
시스템
답변완료

예스랭귀지 질문요

저는 프로그래머이구요. 이번에 시스템트레이딩 개발 하려고 합니다. 질문요. 예스랭귀지 질문요. 하이투자증권것을 사용함. 1. 국내 선물매매도 매매 가능한가요? 2. 9시에 장 시작후, 실시간으로 변수 var1에 var1 = 최고가 - 현재가 이렇게 값을 가져올수 있나요? 이렇게 하면 되나요? var1 = High- CurrentContracts; var1이라는 변수에 고점 빼기 현재가격의 값이 들어가나요?
프로필 이미지
나도아프다
2019-01-10
183
글번호 125096
시스템
답변완료

문의드립니다~

240일선과 960일선의 골든크로스가 나오고나서 "롱매수"라는 진입신호가 한번만 나오도록 240일선과 960일선의 데드크로스 이후에 "숏매도"라는 진입신호가 한번만 나오도록 그리고 하루에 숏매수,숏매도라는 신호가 한번씩만 나오도록 감사합니다~
프로필 이미지
겐지
2019-01-09
171
글번호 125095
시스템
답변완료

수식 이관하려고 하는데 가능할까요?

키움에서 yes global로 옮겨가려고 하는데요~ 키움에서 사용하던 수식이 약 10개정도가 있는데 혹시 이관 가능할까요??
프로필 이미지
아웃오브초조
2019-01-09
181
글번호 125094
지표
답변완료

1

1
프로필 이미지
qha71
2019-01-09
195
글번호 125093
지표
답변완료

안녕하세요

안녕 하세요. 수고 많으십니다. 아래 수식을 사용 하는데 경보음이 설정이 안되네요. 경보음이 들리게 도와 주시고요. 감사 합니다. 수고 하세요. var : pp(0),tx(0); if stime == 080000 or (stime > 080000 and stime[1] < 080000) Then var1 = O; if L > O[1] and crossup(C[1],var1[1]) Then buy(); if H < O[1] and CrossDown(C[1],var1[1]) Then sell(); if crossup( var1, var1) Then PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); if CrossDown( var1, var1) Then PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
프로필 이미지
탐라
2019-01-10
175
글번호 125092
시스템
답변완료

지표 수식 문의 드립니다.

안녕하세요. 분봉 차트에서 일봉 수식을 쓸려고 합니다. 과거 N일 동안 고저폭과 이동평균을 구할려고 하는데 data2 참조를 해도 다르게 나와서 문의 드립니다. [일봉 차트 수식] var : Ma_avg(0), Ma_std(0); if date != date[1] Then{ Var1 = 0; Var2 = 0; Ma_avg = 0; } Var1 = Max(DayHigh(1), DayHigh(2), DayHigh(3)); Var2 = Min(DayLow(1), DayLow(2), DayLow(3)); Ma_avg = Ma(Var1-Var2, 10); Plot1(Ma_avg, "이동평균"); [분봉 차트 수식] var : Ma_avg(0,data2), Ma_std(0,data2); Var : Var1(0,data2), Var2(0,data2); if date != date[1] Then{ Var1 = 0; Var2 = 0; Ma_avg = 0; } Var1 = data2(Max( Data2(HighD(1)), Data2(HighD(2)), Data2(HighD(3)) )); Var2 = data2(Min( Data2(LowD(1)), Data2(LowD(2)), Data2(LowD(3)) )); Ma_avg = data2(Ma(Var1-Var2, avg_k)); Plot1(Ma_avg, "이동평균");
프로필 이미지
달무드
2019-01-09
199
글번호 125091
지표
답변완료

장시작 첫번째 캔들 매수거래량, 매도거래량 이은선

장시작 첫번째 캔들 매수거래량, 매도거래량 이은선 수식을 부탁드립니다
프로필 이미지
팔보채
2019-01-09
212
글번호 125090
지표