커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

지표식 부탁드립니다.

현재 캔들만 특정색으로 지정할 수 있는 수식 부탁드립니다. 현재 캔들만입니다.
프로필 이미지
무지개나날들
2017-03-21
108
글번호 108040
지표
답변완료

수식문의

안녕하세요 하기 수식 문의 부탁드립니다. 조건 1. ADX 가 20 이하이어야 합니다.. 2. 현재봉 포함 ADX 가 3봉 연속으로 0.5이상 증가되지 않아야 합니다. 상기 조건으로 봉이 볼린져밴드 하단을 닿고 떨어지는 순간 매수 진입. 봉이 볼린져 밴드 상단에 닿고 떨어지는 순간 매도 진입 부탁드립니다. 감사합니다.
프로필 이미지
softtoug
2017-03-21
105
글번호 108037
시스템
답변완료

다음 수정 부탁드립니다.

안녕하세요. 다음 식에서 20 이하에서는 매도진입 금지. 80 이상에서는 매수진입 금지를 추가 부탁드립니다. 감사합니다. input : short(12),long(26),sto1(14),sto2(3),sto3(3); var : HH(0),LL(0),FK(0),SK(0),SD(0),T(0); var1 = MACD(short,long); HH = Highest(var1, sto1); LL = Lowest(var1, sto2); FK = (var1 - LL) / (HH-LL) * 100; SK = ema(FK,sto1); SD = ema(SK,sto2); if c > dayopen then{ if SK > SK[1] and SK[1] < Sk[2] Then buy("b"); if SK < SK[1] and SK[1] > Sk[2] Then ExitLong("bx"); } if c < dayopen then{ if SK < SK[1] and SK[1] > Sk[2] Then sell("s"); if SK > SK[1] and SK[1] < Sk[2] Then ExitShort("sx"); }
프로필 이미지
sky78
2017-03-21
104
글번호 108036
시스템
답변완료

질문입니다.

선물에서 시스템을 작성해서 운영하고자 합니다. 피라미딩에 관련한 질문입니다. 일단 1계약으로 매수, 매도하는 시스템을 작성하였습니다. 신호는 AtMarket으로 작성하였습니다. 피라미딩은 매수(매도)로 진입하였을 때 진입가격대비 5틱 상승(하락)했을 때 추가로 1계약을 진입하도록 하였습니다. 신호는 AtStop으로 작성하였습니다. 예를들면 이렇습니다. if marketposition(0) <= 0 and crossup(c, ma(5)) then { buy('b", atmarket, def, 1);} if marketposition(0) >= 0 and crossdown(c, ma(10)) then { sell("s", atmarket, def, 1); } If MarketPosition(0) == 1 && CurrentContracts == 1 Then { Buy("+2", AtStop, LatestEntryPrice + (0.05 * 5)); } If MarketPosition(0) == -1 && CurrentContracts == 1 Then { Sell("-2", AtStop, LatestEntryPrice - (0.05 * 5));} 그런데 한가지 문제점이 생겼는데, 예를들어 매도로 진입한 후에 매도로 진입한 봉에서 가격이 상승하더니 매수 피라미딩신호가 발생하여 매수로 포지션이 바뀌어 버리는 현상이 발생합니다. 아마도 제 생각으로는 AtStop으로 피라미딩을 진입하게 만들어서 이런 현상이 발생한 듯 합니다. 원래 제 의도는 초기진입이 매수("b")라면 그 후에는 매도("s") 혹은 매수피라미딩("+2") 신호만 발생시키고 싶고, 초기진입이 매도("s")라면 그 후에는 매수("b") 혹은 매도피라미딩("-2") 신호만 발생시키고 싶습니다. 즉, 매수 진입 후 매도피라미딩 진입이나, 매도 진입 후 매수피라미딩 신호는 나오지 않게 하고 싶습니다. 왜 이런 현상이 발생하는지 그 이유와 이를 방지할 수 있는 방법을 간단한 예시로 부탁드리겠습니다. 감사합니다.
프로필 이미지
yanartas
2017-03-21
96
글번호 108025
시스템
답변완료

수식 부탁

MarketPosition == 1 일 때 매수조건식으로 10주식 계속 추가 매수 누적하다가 OpenPositionProfit()이 즉 수익률이 5%를 초과하면 일괄 또는 1/3 씩 분할 청산하는 식 부탁합니다.
프로필 이미지
대주발
2017-03-21
103
글번호 108024
시스템
답변완료

수식 부탁드립니다.

일일히 수고하심에 감사드립니다. 아래 조건은 키움의 수식입니다. 아래의 조건을 1번이라도 만족하는 종목을 검색하는 식으로서 각 조건을 만족하는 회수를 누적시켜고 누적회수별로 표시가 되도록 부탁합니다. 가능한 변수는 외부 변수로 부탁드립니다. Crossup(WilliamsR(Period),-80 ) - Period : 28 CrossUp(MACD(shortPeriod,longPeriod),eavg(MACD(shortPeriod,longPeriod),sigPeriod)) -shortPeriod : 12 - longPeriod :26 - sigPeriod : 9 Crossup(DIPlus(Period), DIMinus(Period) ) - Period : 14 Crossup(CCI(Period), -100)
프로필 이미지
자아준
2017-03-21
123
글번호 108023
종목검색
답변완료

3월17일자 수정건

안녕하세요 3월17일자 질문 수정부탁드립니다 시작가 기준=해외 크루드오일 입니다 수정건 시작시간-한국시간으로 조정 07시기준 기준선= 당일 일봉 시가 기준 기준선 발생후 기준선 상향후 +볼린저밴드 중심선상향돌파시=매수 기준선 하향후+볼린저밴드 중심선하향돌파시=매도 청산조건 매수 매도후 0.9%익절청산=청산후 재진입 없음 손절=반대신호 부탁드려요
프로필 이미지
아트정
2017-03-21
137
글번호 108022
시스템
답변완료

수식추가부탁드림니다=================

장시작시나 시간보정때 var1과 var2가 100에서시작하듯이 마찬가지로 plot64가나오면 var1과 var2모두 100에서시작하게해주세요 항상감사합니다(제가 if stime == 시간보정*100 or (stime > 시간보정*100 and stime[1] < 시간보정*100) or Bdate != Bdate[1] Then 에 추가해봤는데 안되네요) Input: 시간보정(0),보정후변화(0),호가더하기(0),지수더하기(0),보정치(0),폭보정(1.5),지수호가테마LENGTH1(10),순매수LENGTH2(10),급변(0.05) ,순매수테마보정한계(0.3),순매수테마급증보정(0.5),순매수테마급감보정(0.5) ,지수테마보정한계(0.3),지수테마급증보정(0.5),지수테마급감보정(0.5) ; var : AsksMA(0),BidsMA(0), Period(1),idx(0),EP(0),E11(0),E12(0),E13(0),E21(0),E22(0),E23(0); Var : value(0); Var : valuec(0); var : va61(0); var : va71(0); var : va80(0); var : va81(0); var : va90(0); var : va91(0); var : va92(0); var : va93(0); var : va94(0); var : va95(0); var : va96(0); VAR : TEMA1(0); VAR : TEMA2(0); VAR : TEMA3(0); VAR : vmin(0); VAR : vmax(0); BidsMa = ma(bids,Period); AsksMA = ma(asks,Period); value = ma(bids,period)-ma(asks,period)+29000; Plot2(BidsMA, "매수잔량이평"); Plot3(AsksMA, "매도잔량이평"); Plot4(value, "차"); //************************************************************** //************************************************************* va91=((c-c[1])/c[1]*100)*20000/20000; va93=((value-value[1])/value[1]*70)*125/2900; if stime == 시간보정*100 or (stime > 시간보정*100 and stime[1] < 시간보정*100) or Bdate != Bdate[1] Then{ PLOT62(100,"시간보정"); idx = 0; var1 = 100; var2 = var1; plot10(var1); plot11(var2); plot51(var2 +호가더하기/1000 ); } Else{ idx = idx+1; var1 = var1+(var1*(va91/100)); if abs(va96[10]-va96) <= 보정치 Then var2 = var1; // if var2[5] > var1[5] then var2 = var2 - ( var2[5] - var1[5] ); // if var2[5] < var1[5] then var2 = var2 + ( var1[5] - var2[5] ); else var2 = var2+(var2*(va93/95)); plot10(var1+지수더하기/1000 ); plot11(var2+호가더하기/1000 ); plot51(var2+호가더하기/1000 ); TEMA3 = (3 * Ema(var2+호가더하기/1000 ,순매수LENGTH2)) - (3 * Ema(Ema(var2+호가더하기/1000 ,순매수LENGTH2),순매수LENGTH2)) + (Ema(Ema(Ema(var2+호가더하기/1000 ,순매수LENGTH2),순매수LENGTH2),순매수LENGTH2)); if TEMA3 >TEMA3[1]+순매수테마보정한계 then TEMA3 = ((TEMA3 -TEMA3[1])*순매수테마급증보정)+TEMA3[1]; if TEMA3 <TEMA3[1]-순매수테마보정한계 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*순매수테마급감보정); if TEMA3 >TEMA3[1]+50 then TEMA3 = ((TEMA3 -TEMA3[1])*0.9)+TEMA3[1]; if TEMA3 <TEMA3[1]-50 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*0.9); plot52(TEMA3,"순매수테마"); } //if var2-var1 > 폭보정 Then var2=var1; //if var1-var2 > 폭보정 Then var2=var1; //if (va71[1]-va71) <= 폭보정 Then var2=var1; //if (va71-va71[1]) <= 폭보정 Then var2=var1; //if va71[1] < va71 and va71[1] + 폭보정 > va71 then var2=var1; //if va71[1] > va71 and va71[1] - 폭보정 > va71 then var2=var1; EP = 2/(지수호가테마LENGTH1+1); if idx == 0 Then{ E11 = var1; E21 = var2; } Else{ E11 = var1 * EP + E11 * (1-EP); E21 = var2 * EP + E21 * (1-EP); } if idx <= 1 Then{ E12 = E11; E22 = E21; } Else{ E12 = E11 * EP + E12 * (1-EP); E22 = E21 * EP + E22 * (1-EP); } if idx <= 2 Then{ E13 = E12; E23 = E22; } Else{ E13 = E12 * EP + E13 * (1-EP); E23 = E22 * EP + E23 * (1-EP); } TEMA1 = (3 * E11) - (3 * E12) + (E13); if TEMA1 >TEMA1[1]+지수테마보정한계 then TEMA1 = ((TEMA1 -TEMA1[1])*지수테마급증보정)+TEMA1[1]; if TEMA1 <TEMA1[1]-지수테마보정한계 then TEMA1 = TEMA1[1]-((TEMA1[1] -TEMA1)*지수테마급감보정); if TEMA2 >TEMA2[1]+지수테마보정한계 then TEMA2 = ((TEMA2 -TEMA2[1])*지수테마급증보정)+TEMA2[1]; if TEMA2 <TEMA2[1]-지수테마보정한계 then TEMA2 = TEMA2[1]-((TEMA2[1] -TEMA2)*지수테마급감보정); TEMA2 = (3 * E21) - (3 * E22) + (E23); PLOT30(TEMA1+지수더하기/1000 ,"지수테마",iff((TEMA1 +지수더하기/1000 )>(TEMA1 +지수더하기/1000)[1]+00,BLACK,iff((TEMA1 +지수더하기/1000 )<(TEMA1 +지수더하기/1000 )[1]-00,BLACK,BLACK))); PLOT31(TEMA2 +호가더하기/1000,"호가테마"); //PLOT31(TEMA2 +호가더하기/1000,"호가테마",iff(va71[3]-폭보정 > va71,RED,iff(va71[3]+폭보정 < va71,RED,GREEN))); vmin = min(TEMA1+지수더하기/1000 ,TEMA2+호가더하기/1000 ); vmax = max(TEMA1+지수더하기/1000 ,TEMA2+호가더하기/1000 ); if TEMA1+지수더하기/1000> TEMA2+호가더하기/1000 Then{ var80 = (TEMA1+지수더하기/1000- TEMA2 +호가더하기/1000 )*0.5+TEMA2+호가더하기/1000 ; } if TEMA1 < TEMA2+호가더하기/1000 Then{ var80 = (TEMA2+호가더하기/1000 -TEMA1+지수더하기/1000)*0.5+TEMA1+지수더하기/1000 ; } PLOT17(var80,"지호평균"); //테마합 일정 수량차이상의 급등락 표시 if TEMA3 > TEMA3[1]+ 급변 Then{plot21(vmin-0.05,"급등");} if TEMA3 < TEMA3[1]- 급변 Then{plot22(vmin-0.05,"급락");} va71 =( TEMA2+호가더하기/1000 - TEMA1+지수더하기/1000 )+100.3; if va71[1] < va71 Then{ PLOT25((vmin )-0.05,"매수예비"); //PlaySound("C:₩예스트레이더₩data₩Sound₩pp.wav"); } if va71[1] > va71 Then{ PLOT26((vmin )-0.05,"매도예비"); // PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav"); } PLOT60(va71,"55",iff(va71[3]-폭보정 > va71,GREEN,iff(va71[3]+폭보정 < va71,GREEN,BLACK))); if abs (va71[3] - va71) < 폭보정 then PLOT64(va71-0.1,"커플링"); PlaySound("C:₩예스트레이더₩data₩Sound₩버튼2.wav"); if (( TEMA2+호가더하기/1000 )>(TEMA1+지수더하기/1000)+급변) Then{ //if sTime > (시간보정*100) and (TEMA1+지수더하기/1000)+보정후변화 < ( TEMA2+호가더하기/1000 ) and //(TEMA1+지수더하기/1000)[1] > (TEMA1+지수더하기/1000) //if (TEMA1+지수더하기/1000)[1]+0.0 < (TEMA1+지수더하기/1000) and va71[1]-0.01 < va71 // if ( TEMA1+지수더하기/1000 )[1] < ( TEMA1+지수더하기/1000 ) and va71[1] < va71[1] //then { PLOT45((vmin )-0.01,"매수막대"); //PlaySound("C:₩예스트레이더₩data₩Sound₩버튼2.wav"); } if (( TEMA2+호가더하기/1000 )<(TEMA1+지수더하기/1000)-급변) Then{ //if sTime > (시간보정*100) and (TEMA1+지수더하기/1000)-보정후변화 > ( TEMA2+호가더하기/1000 ) and //(TEMA1+지수더하기/1000)[1] < (TEMA1+지수더하기/1000) //if (TEMA1+지수더하기/1000)[1]-0.0 > (TEMA1+지수더하기/1000) and va71[1]+0.01 > va71 // if ( TEMA1+지수더하기/1000)[1] > ( TEMA1+지수더하기/1000 ) and va71[1] > va71[1] // then { PLOT46((vmin )-0.01,"매도막대"); // PlaySound("C:₩예스트레이더₩data₩Sound₩버튼2.wav"); } if va71[1]+급변 < va71 Then { PLOT18((va71 )+0.01,"매도"); } if va71[1]-급변 > va71 Then { PLOT19((va71 )+0.01,"매수"); } va96 = (tema1 - tema2)*1000; PLOT61(va96,"66",iff(va96 > 0,RED,iff(va96 < 0,BLACK,BLACK))); PlotBaseLine1(100,"기준선100"); if stime == 시간보정*100 then { PLOT62(100,"시간보정"); }
프로필 이미지
leekss1
2017-03-21
124
글번호 108020
지표
답변완료

수식 추가 부탁합니다

안녕하세요 52468 수식에서~ 아래 조건식 추가하고 싶습니다 도움 부탁합니다. #,input : Per2(9),시작시간(70000),종료시간(125000); (plot라인을 추가하고,매매시간을 장시작시간에서 12시50분까지) #,계약수는 1계약으로 청산조건은 (매도청산은 매수진입자리,매수청산은 매도진입자리) #,손절은 7틱/강제 청산은 장종료시간 12시50분. #,그외 진입조건은 52468 수식과 동일(이때 per1(18)라인조건과 충돌하거나 혼합되지 않도록) 보내주신수식 잘사용하고 있습니다, 언제나 늘 감사합니다.
프로필 이미지
회원
2017-03-21
119
글번호 108019
시스템