커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

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

/* 장시작시에는 var1 = 100; var2 = 100; 시간보정때는 var2 를var1에서시작하게 수정부탁드립니다 감사합니다 if stime == 시간보정*100 or (stime > 시간보정*100 and stime[1] < 시간보정*100) Then{ if Bdate != Bdate[1] Then{ ----------------------------------------------------------------------------- */ Input: 호가더하기(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 Bdate != Bdate[1] Then{ idx = 0; var1 = 100; var2 = 100; plot10(var1); plot11(var2); plot51(var2 +호가더하기/1000 ); } Else{ idx = idx+1; var1 = var1+(var1*(va91/100)); 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 and va71[1] + 0.05 > va71 then var2=var1; //if va71[1] > va71 and va71[1] - 0.05 > 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,"호가테마"); vmin = min(TEMA1 ,TEMA2 ); vmax = max(TEMA1 ,TEMA2 ); 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; if ( TEMA2+호가더하기/1000 )[1] < ( TEMA2+호가더하기/1000 ) and (TEMA1+지수더하기/1000)[1] < (TEMA1+지수더하기/1000) Then{ PLOT25((vmin )-0.02,"매수예비"); //PlaySound("C:₩예스트레이더₩data₩Sound₩pp.wav"); } if ( TEMA2+호가더하기/1000 )[1] > ( TEMA2+호가더하기/1000 ) and (TEMA1+지수더하기/1000)[1] > (TEMA1+지수더하기/1000) Then{ PLOT26((vmin )-0.02,"매도예비"); // PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav"); } PLOT60(va71,"55"); if CrossUp (( TEMA2+호가더하기/1000 ),(TEMA1+지수더하기/1000)) Then{ //if (TEMA1[1]+지수더하기/1000 )< (TEMA1+지수더하기/1000) and (va71[1] )< (va71)then { PLOT45((vmin )-0.02,"매수막대"); // PlaySound("C:₩예스트레이더₩data₩Sound₩up.wav"); } if CrossDown (( TEMA2+호가더하기/1000 ),(TEMA1+지수더하기/1000)) Then{ // if (TEMA1[1]+지수더하기/1000 )> (TEMA1+지수더하기/1000) and (va71[1] )> (va71) Then{ PLOT46((vmin )-0.02,"매도막대"); // PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.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");
프로필 이미지
leekss1
2017-03-07
116
글번호 107525
지표
답변완료

시스템 수정부탁드립니다.

항상 도움 주셔서 감사합니다. 아래 시스템식에서 라인에 닿을때 청산이 안됩니다. [테스트 환경 오일 4월물 - 5분봉] //======================================================== // 추세선 지정하여 매매하기 //======================================================== input : 추세선시작일1(20170303),추세선시작시간1(220000); //추세선1-저가 input : 추세선종료일1(20170306),추세선종료시간1(171000); //추세선1-저가2 input : 추세선시작일2(20170306),추세선시작시간2(081000); //추세선2-고가 input : 추세선종료일2(20170306),추세선종료시간2(185000); //추세선2-고가2 input : X1(0.72),X11(-0.72),X2(0.42),X22(-0.42) ;// 추세선 이동 input : loss(10),profit(30),Tp(10),Ts(5); // 수익,손절,트레일링스탑 var : TL1(0),TLL1(0),TLLL1(0),T1(0); //추세선1-지지 var : TL2(0),TLL2(0),TLLL2(0),T2(0); //추세선2-저항 ##### 추세선 그리기 ##### // 추세선1 - 저가 if sdate == 추세선시작일1 and time == 추세선시작시간1 Then{ T1 = 1; var1 = L; } if T1 == 1 and sdate == 추세선종료일1 and time == 추세선종료시간1 Then{ var2 = L; TL1 = TL_New(추세선시작일1,추세선시작시간1,var1,추세선종료일1,추세선종료시간1,var2); TL_SetExtLeft(TL1,true); TL_SetExtRight(TL1,true); TL_SetColor(TL1,BLUE) ; T1 = 2; TLL1 = TL_New(추세선시작일1,추세선시작시간1,var1+x1,추세선종료일1,추세선종료시간1,var2+x1); //추세선 복사 TL_SetExtLeft(TLL1,true); TL_SetExtRight(TLL1,true); TL_SetColor(TLL1,BLUE) ; TLLL1 = TL_New(추세선시작일1,추세선시작시간1,var1+x11,추세선종료일1,추세선종료시간1,var2+x11); //추세선 복사 TL_SetExtLeft(TLLL1,true); TL_SetExtRight(TLLL1,true); TL_SetColor(TLLL1,BLUE) ; } // 추세선2 - 고가 if sdate == 추세선시작일2 and time == 추세선시작시간2 Then{ T2 = 1; var3 = H; } if T2 == 1 and sdate == 추세선종료일2 and time == 추세선종료시간2 Then{ var4 = H; TL2 = TL_New(추세선시작일2,추세선시작시간2,var3,추세선종료일2,추세선종료시간2,var4); TL_SetExtLeft(TL2,true); TL_SetExtRight(TL2,true); TL_SetColor(TL2,RED) ; T2 = 2; TLL2 = TL_New(추세선시작일2,추세선시작시간2,var3+x2,추세선종료일2,추세선종료시간2,var4+x2); TL_SetExtLeft(TLL2,true); TL_SetExtRight(TLL2,true); TL_SetColor(TLL2,RED) ; TLLL2 = TL_New(추세선시작일2,추세선시작시간2,var3+x22,추세선종료일2,추세선종료시간2,var4+x22); TL_SetExtLeft(TLLL2,true); TL_SetExtRight(TLLL2,true); TL_SetColor(TLLL2,RED) ; } ##### 시스템매매 ##### // 진입 시스템 // 매매시간 시작 if sdate >= 추세선종료일1 and stime >= 추세선종료시간1 then { // 하락 if T1 == 2 and MarketPosition == 0 then { //and s_line1 > -1 and s_line4 < 0 then{ if C < TL_GetValue(TL1,sdate,stime) and C[1] > TL_GetValue(TL1,sdate[1],stime[1]) Then sell("S"); } // 상승 if T2 == 2 and MarketPosition == 0 then { //and s_line1 < 1 and s_line4 > 0 then{ if C > TL_GetValue(TL2,sdate,stime) and C[1] < TL_GetValue(TL2,sdate[1],stime[1]) Then Buy("B"); } // 청산 시스템 // 매도청산 // X1,X2에 닿을 경우 if MarketPosition == -1 then{ if (L <= TL_GetValue(TLLL1,sdate,stime) and L[1] > TL_GetValue(TLLL1,sdate[1],stime[1])) or (L <= TL_GetValue(TLLL2,sdate,stime) and L[1] > TL_GetValue(TLLL2,sdate[1],stime[1])) Then ExitShort("SX"); } // 매수청산 // // X11,X22에 닿을 경우 if MarketPosition == 1 then{ if (H >= TL_GetValue(TLL1,sdate,stime) and H[1] < TL_GetValue(TLL1,sdate[1],stime[1])) or (H >= TL_GetValue(TLL2,sdate,stime) and H[1] < TL_GetValue(TLL2,sdate[1],stime[1])) Then ExitLong("BX"); } // 매매시간종료 } // 당일 청산 if stime == 065000 or (stime > 065000 and stime[1] < 065000) Then{ if MarketPosition == 1 Then exitlong("BDF"); if MarketPosition == -1 Then ExitShort("SDF"); } ##### 스탑로스 ##### //SetStopProfittarget(Profit*PriceScale,PointStop); SetStopLoss(loss*PriceScale,PointStop); //SetStopTrailing(TS*PriceScale,TP*PriceScale,PointStop); 문1) X1추세선 라인이나 X2 추세선 라인 또는 X11 추세선 라인이나 X22 추세선 라인에 고가나 저가가 닿을 경우 청산하고 싶은데 청산이 안됩니다. 코딩 수정 및 점검 부탁드립니다. 문2) 추세선 라인 옆에 X1,X11 등의 추세선의 이름을 차트에 표시하고 싶습니다. 도움 부탁드립니다.
프로필 이미지
양치기
2017-03-07
134
글번호 107524
시스템
답변완료

수식 부탁드립니다

안녕하세요~! 위에 첨부파일은 키움지표중 가격박스 지표입니다 랭귀지 코드로 변환 부탁드립니다. 중심선 MA( 가격, 이평기간, 이평방법 ) 상한선 A = MA( 가격, 이평기간, 이평방법 ); A + AvgIf( 가격 - A, 1, 0.0 ) + 2 * StdevIf( 가격 - A, 1, 0.0 ) 하한선 A = MA( 가격, 이평기간, 이평방법 ); A + AvgIf( 가격 - A, -1, 0.0 ) - 2 * StdevIf( 가격 - A, -1, 0.0 ) 항상 감사드립니다.
프로필 이미지
회원
2017-03-06
306
글번호 107523
지표
답변완료

수익 부탁 합니다

사용자가 매번 원하는 구간(a-b)을 매일 변경 설정하면서 ,,그 구간에서는 매수신호만,,,혹은 매도신호만 나오게 설정 하고 싶습니다 예제----- 금 1230-1233 사이구간에서는 매수신호만 나오게 설정하고 macd(12,26,9) 크로스 매수신호가 나오면 매수진입, 매도신호가 나오면 진입금지, 금 1240-1243 사이구간에서는 매도신호만 나오게 설정하고 macd(12,26,9) 크로스 매도신호가 나오면 매도진입, 매수신호가 나오면 진입금지, 손절---------------------- 진입가 대비20틱 손실나면 강제청산 3번이상 손절시 진입 신호가 안나오게 부탁 드립니다
프로필 이미지
마도로스77
2017-03-06
123
글번호 107522
시스템
답변완료

부탁 드립니다

항상 만족한 수식 답변에 감사 드립니다. 아래수식의 그림1을 그림2와 같이 나타 내고 싶습니다. 미리 경배로 감사의 인사 올립니다. var1=trix(20); plot1(var1,"trix20"); PlotBaseLine1(0,"0"); PlotBaseLine2(-0.01,"-0.01"); PlotBaseLine3(0.01,"0.01"); 참고수식) var1=trix(20); if var1 >= 0.01 Then plot1(0.01,"trix20"); else if var1 <= -0.01 Then plot1(-0.01,"trix20"); Else plot1(var1,"trix20"); PlotBaseLine1(0,"0"); PlotBaseLine2(-0.01,"-0.01"); PlotBaseLine3(0.01,"0.01");
프로필 이미지
yes
2017-03-06
177
글번호 107521
지표
답변완료

항상감사합니다 수식변경부탁드립니다---------------

stime == 090000 or (stime > 090000 and stime[1] < 090000) 을 1)090000을 현재시간으로부터 10분전으로 2)090000을 현재봉으로부터 10봉전으로 각각 부탁드립니다
프로필 이미지
leekss1
2017-03-06
116
글번호 107520
지표
답변완료

문&#47504;드립니다. 현재봉 추가 표시..

안녕하세요. 차트 상에서 현재봉을 옆에 추가로 하나 더 표시되도록 하고 싶은데 가능한가요? 수고하세요
프로필 이미지
고박사122
2017-03-06
131
글번호 107519
지표
답변완료

재문의드립니다.

1. input : 기간(20), 시작시간(180000),끝시간(0),수익틱수(20); INPUT: P26(26), PER(1); var : T(0),a1(0),a2(0),V1(0),V2(0),V3(0); var : Tcond(false),Xcond(false); if (시작시간 > 0 and (stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간))) or (시작시간 == 0 and sdate != sdate[1]) Then{ Tcond = true; Xcond = false; } if (끝시간 > 0 and (stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간))) or (끝시간== 0 and sdate != sdate[1]) Then Tcond = false; var1 = Highest(h,기간); var2 = Lowest(L,기간); var3 = var1-var2; value1 = var1-var3*0.382; value2 = var1-var3*0.500; value3 = var1-var3*0.618; if value2 > value2[1] Then T = 1; if value2 < value2[1] Then T = -1; if T == 1 then{ a1 = value1; a2 = value2; } else{ a1 = value3; a2 = value2; } V1=(Highest(H,P26)+LOWEST(L,P26))/2; V2=V1*(1+PER/100); V3=V1*(1-PER/100); if TotalTrades > TotalTrades[1] and (IsExitName("매수익절",1) or IsExitName("매도익절",1)) Then Xcond = true; if Tcond == true and Xcond == false then{ if crossup(a1,v1) Then buy("매수",OnClose,def,2); if CrossDown(a1,v1) Then sell("매도",OnClose,def,2); if MarketPosition == 1 Then{ ExitLong("매수10틱청",atlimit,EntryPrice+PriceScale*수익틱수,"",1,1); } if MarketPosition == -1 Then{ ExitShort("매도10틱청",atlimit,EntryPrice-PriceScale*수익틱수,"",1,1); } } 수식 감사합니다 다름이아니라 설정한 시간 외 나오는 신호나 나올경우 그날 무조건 청산되는 수식을 추가해주셨으면합니다 밤12시가 넘을경우 강제청산 안할경우 다음날 오후6시부터 나오는 신호가 연계가 되어 수익이 불투명합니다 당일 수익만을 원하고있습니다 감사합니다
프로필 이미지
곽민수
2017-03-06
134
글번호 107511
시스템
답변완료

추가질문입니다.

NO. 52243 과 관련입니다 당해지표식을 시스템식으로 변형하여 주시면 감사 하겠습니다. * Plot1에 할당 된 (꺾은선) 과 (Iff(방향 == 상승,기준고,기준저))의 할당값을 모르겠습니다.
프로필 이미지
너무조아
2017-03-06
122
글번호 107509
지표