커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

잔고함수로..

1. 잔고 함수에 대한 메뉴얼을 읽어보니.. " 사용자는 반드시 적절한 시점에 잔고조회 등을 통해 가원장의 상태를 원장의 상태와 동기화 될 수 있도록 조치하여야 합니다." 질문: 이 귀절이, 로직 상에서 잔고 개의 갯수나 평균값 등을 받아와서 코딩을 함으로써 원장과 가원장과 동기화한다는 말인지 아니면 별도로 가원장과 원장을 동기화하는 방법이 있는지요..? 2. 모든 로직은 시뮬레이션으로 테스트 가능한데, 잔고함수는 실제 거래 상에서만 테스트가 가능한지요, 실제 거래는 없이 잔고 함수를 테스트 할 방법은 없는지요? 3. 저는 계좌 하나로, 콜과 풋 차트에서 어느 하나를 잡으면 나머지 어느 것도 진입을 못하도록 하려고 합니다. 즉, 진입하면 정산해서 포지션을 다 정리해야만 콜이든 풋이든 다시 잡도록 조건을 만들려고 하는데 아래와 같이 하면 되는지 봐주시겠습니까? var:Account(""),Code(""),Quantity(0); Account=GetAccount(0);//계좌 하나만 사용 Code= GetPositionSymbol(0,Account);//두 종목이상을 계좌에 두지 않을 것이므로 Quantity= GetPositionQuantity(Code,AccountP);// if Quantity > 0 then 진입금지, if Quantity== 0 then 진입. // 수고하십시요..꾸벅.
프로필 이미지
상수리나무
2017-09-06
233
글번호 112561
시스템
답변완료

시스템식 부탁합니다.

매번 비슷한 질문 보시느라 힘드시겠습니다. 초보라 이것저것 해보고 싶네요. 1. 진입 -지난 5(변수A)거래일간 가격이 10%(변수B) 이상 올랐으면 매수 청산 -1 포지션 수익률이 10%가 되면 청산 -2 포지션 수익률이 -5%(변수C)가 되면 청산 -1,-2 조건 중에 하나라도 충족할 경우 청산 2. 진입만 1의 반대 진입 -지난 5(변수A)거래일간 가격이 10%(변수B) 이상 내렸으면 매도 청산 -1포지션 수익률이 10%가 되면 청산 -2포지션 수익률이 -5%(변수C)가 되면 청산 3. 진입 -(1)지난 5(변수A)거래일간 가격이 10%(변수B) 이상 올랐으면 매수 -(2)A 진입한 이후 거래 기간 가운데(그러니까 1은 포함하지 않는 것, 1,2 기간은 중복되지 않음)지난 3(변수 c)거래일간 가격이 5%(변수d)이상 올랐으면 추가진입 -(3)(2)진입한 이후 거래 기간 가운데 지난 5(변수d)% 이상 올랐으면 추가 진입 청산 10거래일간 최고가에서 -20%한 값을 현 최저가가 하향돌파했을 때 포지션 모두 청산 4. 지표 {20개봉가운데 최고가 - (ATR*3)}의 5개 봉가운데 최고 수치. 20개봉최고가-(ATR*3)하면 ATR따라 수치가 내려가는데요. 이걸 5개봉 동안에는 가장 높은 수치로 유지 시켜놓고 싶습니다. 제가 쓴 것({20개봉가운데 최고가 - (ATR*3)}의 5개 봉가운데 최고 수치)처럼 하면 되려나요 ?
프로필 이미지
잡다백수
2017-09-06
161
글번호 112560
시스템
답변완료

부탁드립니다

수고하십니다 *아래수식에서 PINK색으로바뀔때 가격봉챠트 저가 약간아래에 빨간점표시. LGREEN으로바뀔때 가격봉챠트 고가 약간위에 파랑점표시.수식부탁드립니다 Input : shortPeriod(12), longPeriod(26), Period(9); Var : value(0),Direction(0) ; value = MACD(shortPeriod, longPeriod); if value > value[1] Then Direction = 1; if value < value[1] Then Direction = -1; if Direction == 1 and Direction[1] != 1 Then plot1(L,"검색",BLACK); if Direction == -1 and Direction[1] != -1 Then plot1(H,"검색",BLACK);
프로필 이미지
파생돌이
2017-09-06
153
글번호 112559
지표
답변완료

문의 드립니다.

아래와 같이 했을 때 출력되는 텍스트 크기를 좀 키우고 싶은데 방법 좀 알려 주시기 바랍니다. 화면에서 출력된 텍스트에 마우스클릭해서 글자크기를 키우면 지나가면 또 원래 글씨크기로 돌아갑니다. 다른 값들은 크기를 그대로 두고 Text_New로 해서 출력된 텍스트 값만 원천적으로 텍스트 크기를 크게 하는 방법은 없습니까? Text_Delete(Text4); Text4 = Text_New(sdate,stime, Value3, "xx" );
프로필 이미지
이심전심
2017-09-06
168
글번호 112555
지표
답변완료

문의 드립니다.

보통 거의 모든 지표들이 종가 마감(오후 3시 45분)된 지표값으로 다음날 아침 9시에 그대로 시작하더라고요..예를 들어 MACD 오후 3시 45분 종가 값이 MACD 0.25, MACD Signal 0.18 로 마감했으면 다음날 아침 9시에 MACD 0.25, MACD Signal 0.18 로 출발해서 진행됩니다. 그런데 혹시 아침 9시 기준으로 지표값을 0으로 초기화시켜서 시작하도록 할 수 있나요? MACD 지표를 예를 들어서 수식을 작성해 주실 수 있을까요?
프로필 이미지
두부맛솜사탕
2017-09-06
143
글번호 112553
지표
답변완료

진입시간 제한

아래와 같은 수식을 이용해 진입 시간을 통제하는데요. if stime >= 100000 and stime < 235900 then{ 진입조건 } 10시부터 23시59분 까지는 문제가 없는데 새벽2시까지 설정하려면 어떻게 해야합니까? if stime >= 100000 and stime < 020000 then{ --> 이렇게 하니까 인식을 못합니다.
프로필 이미지
천왕봉
2017-09-06
144
글번호 112543
시스템
답변완료

시장 시작시간관련

항셍(홍콩) 지수선물관련 지표가 당일 10:15로 적용이 안되고 전날 18;30(한국시간)에서 시작하는데 해결좀 부탁합니다(시간을 홍콩시간으로바꿔도동일) Inputs: t1(101500); HiHi = DayHigh; LoLo = DayLow; //if sdate == currentdate and stime>t1 Then { Plot5(HiHi); Plot6(LoLo); }
프로필 이미지
챠트미소
2017-09-06
153
글번호 112542
지표
답변완료

시스템 오류검증

항상 감사드립니다. 질의_1. 아래의 시스템_1식은 신호발생후 기준선이나 선행스팬2를 터치할때 진입되도록 만든식인데 장시작후 처음에 다르게 나오고 있습니다. 또한 기준선이나 선행스팬2가 급격히 수직으로 움직일때 고가/저가 가 crossup/crossdown 되지 않고 수평으로 통과하다보니 신호가 발생하지 않습니다 수정부탁드립니다 질의_2. 시스템1과 시스템_2 는 동일한 시스템으로 만들엇는데 결과치는 다르게 나오고 잇습니다 두시스템의 차이점을 알고 싶습니다 1_시스템 1 /**************************************************************************/ Var : 기준선(0), 전환선(0), 선행스팬1(0), 선행스팬2(0),선행스팬3(0); 전환선 = (Highest(H, 9) + Lowest(L, 9)) / 2; 기준선 = (Highest(H, 26) + Lowest(L, 26)) / 2; 선행스팬1 = (전환선[25] + 기준선[25]) / 2 ; 선행스팬2 = (Highest(H, 52)[25] + Lowest(L, 52)[25]) / 2; 선행스팬3 = (highest(H,48)+lowest(L,48))/2; /************************************************************************/ Input : Period1(200),Period2(100); var : CCIv(0),CCIs(0); CCIv = CCI(Period1); CCIs = ema(CCIv,Period2); /***************************************/ Input : short(30),long(65),sig(9); Var : MACDv(0),MACDS(0); MACDv = MACD(short, long); MACDs = ema(MACDv,sig); /*****************************************/ Input: DIP(46); var : DP1(0),DM1(0),ZZ(0); DP1 = ema(iff(H-H[1]>0 && H-H[1]>L[1]-L,H-H[1],0),DIP)/ ema(max(max(H-L,abs(C[1]-H)),abs(C[1]-L)),DIP)*100; DM1 = ema(iff(L[1]-L>0 && H-H[1]<L[1]-L,L[1]-L,0),DIP)/ ema(max(max(H-L,abs(C[1]-H)),abs(C[1]-L)),DIP)*100; ZZ=ema(accum(ema(ema(DP1-DM1, 2), 2)),20); if ZZ > ZZ[1] Then var6 = 1; Else var6 = 0; #BASELINE: 0.5 # /*************************************************/ var: t(0),t1(0),t2(0),t3(0),t4(0),t5(0); if crossup(전환선,선행스팬3) Then T2 = 1 ; if CrossDown(전환선,선행스팬3) Then T2 = -1 ; if T2==1 and CCIv>0 Then T3 = 1 ; if T2==-1 and CCIv<0 Then T3 = -1 ; /*************************************/ ### 동일방향 재진입금지/전일 마지막신호와 무관하게 진입 ### var : entrycnt(0); if stime == 090000 or (stime > 090000 and stime[1] < 090000) Then Entrycnt = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then Entrycnt = Entrycnt+1; if (stime >= 090000 and stime < 150000) Then{ if T2 == 1 and C > 선행스팬2 and macdv>macds and 기준선>선행스팬2 Then T4 = 1; if T4 == 1 and (crossup(H,선행스팬2) or CrossDown(L,선행스팬2)) Then T5 = 1; if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != 1) or (MarketPosition == -1)) and t5==1 and var6==1 then buy("B_1"); if T2 == -1 and C < 선행스팬2 and macdv<macds and 기준선<선행스팬2 Then T4 = -1; if T4 == -1 and (crossup(H,기준선) or CrossDown(L,기준선)) Then T5 = -1; if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != -1) or (MarketPosition == 1)) and t5==-1 and var6==0 then sell("S_1"); } ########################## ##### 청산 ##### ########################## if MarketPosition == -1 Then{ if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*50 Then ExitShort("sx2",AtStop,EntryPrice-(EntryPrice-Lowest(L,BarsSinceEntry))*0.75); } ######################################## ##### 손절20틱/매일 15:00 강제청산 ##### ######################################## SetStopLoss(PriceScale*20,PointStop); if stime == 150000 or (stime > 150000 and stime[1] < 150000) Then{ exitlong("당일매수청산"); ExitShort("당일매도청산"); } /*#####################################################*/ 2_시스템2 /*************************************************/ var: t(0),t1(0),t2(0),t3(0),t4(0); if 전환선==선행스팬3 Then # 전환선이 선행스팬3과 같으면 0 T = 0 ; if T==0 and CCIv>0 Then # t=0 인상태에서 cciv>0 이면 t1=1 T1 = 1 ; if T==0 and CCIv<0 Then # t=0 인상태에서 cciv<0 이면 t1=-1 T1= -1 ; /**************************************/ if crossup(전환선,선행스팬3) Then #전환선이 선행스팬3을 상향돌파하면 1 T = 1 ; if CrossDown(전환선,선행스팬3) Then #전환선이 선행스팬3을 하향돌파하면 -1 T = -1 ; if T==1 and CCIv>0 Then T1 = 2 ; if T==-1 and CCIv<0 Then T1 = -2 ; /*************************************/ ### 동일방향 재진입금지/전일 마지막신호와 무관하게 진입 ### var : entrycnt(0); if stime == 090000 or (stime > 090000 and stime[1] < 090000) Then Entrycnt = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then ### 동일방향 재진입금지 설정식 ### Entrycnt = Entrycnt+1; if (stime >= 090000 and stime < 150000) Then{ /***************************************************************************/ if T1 == 2 and C > 선행스팬2 and macdv>macds and 기준선>선행스팬2 Then T = 2; #t가 2인 상태에서 선행스팬2를 터치하면 3 if T == 2 and (crossup(H,선행스팬2) or CrossDown(L,선행스팬2)) Then T = 3; if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != 1) or (MarketPosition == -1)) and #동일방향 재진입금지# t==3 and var6==1 then buy("B_1"); if T1 == -2 and C < 선행스팬2 and macdv<macds and 기준선<선행스팬2 Then T = -2; #t가 -2인 상태에서 선행스팬2를 터치하면 -3 if T == -2 and (crossup(H,기준선) or CrossDown(L,기준선)) Then T = -3; if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != -1) or (MarketPosition == 1)) and #동일방향 재진입금지# t==-3 and var6==0 then sell("S_1"); } ########################## ##### 청산 ##### ########################## if MarketPosition == -1 Then{ if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*50 Then ExitShort("sx2",AtStop,EntryPrice-(EntryPrice-Lowest(L,BarsSinceEntry))*0.75); } ######################################## ##### 손절40틱/매일 12:00 강제청산 ##### ######################################## SetStopLoss(PriceScale*20,PointStop); if stime == 150000 or (stime > 150000 and stime[1] < 150000) Then{ exitlong("당일매수청산"); ExitShort("당일매도청산"); }
프로필 이미지
조민철
2017-09-06
160
글번호 112537
시스템
답변완료

진입제한시간문의드립니다.

크루즈오일선물인데요 한국시간 06시에 장이 끝나고 07시에 장이 다시 열리는데요 한국시간 07~09시까지 한국장 열리긴전에 2시간동안 매매를 못하게 제한거는 식을 부탁합니다. 한국시간 07시면 Y/S실행차트에서 기본적으로 나오는 시장시간은 어떻게 되는건지도 궁금합니다. 증권사 hts는 한국시간 07시가 거래소22시로 체결표기 되는데 예스트레이더에서는 다른거 같기도하고..., 감사합니다.
프로필 이미지
몽고메리
2017-09-06
167
글번호 112536
시스템