커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

ask

보조차트를 이용하는 2개의 수식을 요청드렸는데 첫번째 수식(보조차트 for kodex인버스 ETF_선물 SELL 이용)에서 오류가 발생했습니다. 두번째 수식(보조차트 for kodex200 ETF_선물 BUY 이용)은 문제가 없습니다. 첨부파일 1(당일 청산 13시 세팅)은 보조차트 이용 거래이며 선물 SELL 수식에 기초합니다. 1회 거래만 하고 끝내고 있습니다. 첨부파일 2는 선물 SELL 수식 거래로서 2번의 거래를 합니다. 첨부파일 2와 동일하게 보조차트 이용 거래도 동일한 지점에서 2번의 거래를 해야 합니다. 첨부파일 3(당일 청산 13시 세팅)은 보조차트 이용 거래이며 선물 BUY 수식에 기초합니다. 선물 BUY 수식 거래와 보조차트 이용 거래 모두 동일한 지점에서 2번의 거래를 합니다. 살펴주시기 바랍니다. ****** 안녕하세요 예스스탁입니다. 수식에 atstop이나 atlimit등의 타입은 기본차트에만 적용되는 내용입니다. 지정된 값과 기본차트의 실시간 현재가와만 비교를 합니다. 해당 내용을 참조데이터로 변경하면 봉안성시로만 가능합니다. 이용에 참고하시기 바랍니다. 1 input : b1(11),b2(13),X1(13),X2(13); var : T1(0,data1),entry(0,data1),HH(0,data1),EL(0,data1),C2(0,data1); C2 = data2(C); if Bdate != Bdate[1] Then T1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and data2(C <= HighD(0)-PriceScale*B1 and C[1] > HighD(0)-PriceScale*B1) Then buy("b1"); if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then EL = data2(L); if data2(L) < EL Then EL = data2(L); if entry == 1 and MarketPosition == -1 and data2(C >= EL+PriceScale*X1) Then ExitLong("sx1"); } if TotalTrades > TotalTrades[1] Then HH = data2(H); if data2(H) > HH Then HH = data2(H); if MarketPosition == 0 and entry == 1 and data2(C <= HH-PriceScale*B2 and C[1] > HH-PriceScale*B2) Then buy("b2"); if MarketPosition== -1 and entry == 2 and data2(H >= C2[BarsSinceEntry]+PriceScale*13) Then ExitLong("bx2"); 2 input : b1(11),b2(13),X1(13),X2(13); var : T1(0,data1),entry(0,data1),LL(0,data1),EH(0,data1),C2(0,data1); C2 = data2(c); if Bdate != Bdate[1] Then T1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and data2(C >= lowD(0)+PriceScale*B1 and C[1] < lowD(0)+PriceScale*B1) Then buy("b1"); if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then EH = data2(H); if data2(H) > EH Then EH = data2(H); if entry == 1 and data2(C <= EH-PriceScale*X1) Then exitlong("bx1"); } if TotalTrades > TotalTrades[1] Then LL = data2(L); if data2(L) < LL Then LL = data2(L); if MarketPosition == 0 and entry == 1 and data2(C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2) Then buy("b2"); if MarketPosition== 1 and entry == 2 and data2(L <= C2[BarsSinceEntry]-PriceScale*13) Then exitlong("bx2"); 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 주차트 /보조차트 수식 > 아래 수식을 주차트 / 보조차트 수식으로 변경바랍니다. 1. sell 전용 수식 2. buy 전용 수식 항상 고맙습니다. 1) sell 전용 수식(주차트 kodex인버스, 보조차트 kospi200선물) input : b1(11),b2(13),X1(13),X2(13); var : T1(0),entry(0),HH(0),EL(0); if Bdate != Bdate[1] Then T1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and C <= DayHigh-PriceScale*B1 and C[1] > DayHigh-PriceScale*B1 Then sell("s1"); if MarketPosition == -1 Then{ if CurrentContracts > CurrentContracts[1] Then EL = L; if L < EL Then EL = L; if entry == 1 and MarketPosition == -1 and C >= EL+PriceScale*X1 Then ExitShort("sx1"); } if TotalTrades > TotalTrades[1] Then HH = H; if H > HH Then HH = H; if MarketPosition == 0 and entry == 1 and C <= HH-PriceScale*B2 and C[1] > HH-PriceScale*B2 Then sell("s2"); if MarketPosition== -1 and entry == 2 Then ExitShort("sx3",AtStop,EntryPrice+PriceScale*13); 2) buy 전용 수식(주차트 kodex200, 보조차트 kospi200선물) input : b1(11),b2(13),X1(13),X2(13); var : T1(0),entry(0),LL(0),EH(0); if Bdate != Bdate[1] Then T1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and C >= daylow+PriceScale*B1 and C[1] < daylow+PriceScale*B1 Then buy("b1"); if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then EH = H; if H > EH Then EH = H; if entry == 1 and C <= EH-PriceScale*X1 Then exitlong("bx1"); } if TotalTrades > TotalTrades[1] Then LL = L; if L < LL Then LL = L; if MarketPosition == 0 and entry == 1 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then buy("b2"); if MarketPosition== 1 and entry == 2 Then exitlong("bx3",AtStop,EntryPrice-PriceScale*13);
프로필 이미지
좌오비우오비
2024-09-02
378
글번호 108531
시스템
답변완료

수식문의

1. 신호 발생후 50틱 수익났다가 본전 청산은 가능하게 되었는데 여기서 추가적으로 100틱까지 수익났을시에 50틱 청산은 불가능한건가요? 중복으로 시스템에 넣고 싶은데 계속 안되네요~ 2. 신호 발생후 100틱 손실중이다가 20틱까지 오면 자동청산도 부탁드립니다.
프로필 이미지
천용인
2017-04-06
208
글번호 108521
시스템
답변완료

이동평균의 평균

안녕하세요. 특정구간의 모든 ema에 대해서 평균을 구하려고 합니다. 아래와 같이 작성했는데, 평균이 구해지지 않네요. 무엇이 잘못됬을까요? ema대신 ma를 사용하면 평균이 잘 구해집니다.. value1 = 0; For count = StartMaPeriod to StartMaPeriod+NumPeriod-1 { value1 = value1 + ema(Close, count); } value1 = value1 / NumPeriod;
프로필 이미지
시지푸스
2017-04-06
233
글번호 108520
지표
답변완료

수식부탁합니다

안녕하세요- 아래수식에서 #,조건만족시 매수 진입후 1차청산을 못하고 진입자리로 되돌림시 진입자리에서 매수 청산 매도 진입후 1차청산을 못하고 진입자라로 되돌림시 진입자리에서 매도 청산 하는식을 추가하면 좋겠습니다.(다른조건은 기존수식과 동일 유지) #,위의 되돌림 청산이후 기존수식(추가수식포함) 조건으로 매매시간 범위내에서 3회(변수)만 연속 재 진입하는 수식 부탁합니다. input : Per1(28.2),시작시간(103000),종료시간(40000); Var : S1(0),S2(1),S3(1),S4(1),Tcond(false),T1(0),entry(0); if 시작시간 == 0 and sdate != sdate[1] Then{ Tcond = true; T1 = TotalTrades; } if 시작시간 > 0 and (stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간)) Then{ Tcond = true; T1 = TotalTrades; } if 종료시간 == 0 and sdate != sdate[1] Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if 종료시간 > 0 and (stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간)) Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if MarketPosition == 0 Then entry = TotalTrades -T1; Else entry = (TotalTrades -T1)+1; S1 = (dayhigh(0)+daylow(0))/2; S2 = (dayhigh(1)+daylow(1))/2; S3 = dayhigh(1); S4 = daylow(1); var1 = dayclose(1)+abs(S3-S4)*(Per1/100); var2 = dayclose(1)-abs(S3-S4)*(Per1/100); if MarketPosition == 0 and Tcond == true and entry < 1 Then{ if NextBarOpen <= var2 Then buy("b1",AtStop,var2,2); Else buy("b2",Atlimit,var2,2); if NextBarOpen >= var1 Then sell("s1",AtStop,var1,2); Else sell("s2",Atlimit,var1,2); } if MarketPosition == 1 Then{ exitlong("bx1",atlimit,EntryPrice+PriceScale*27,"",1,1); exitlong("bx2",atlimit,var1,"",1,1); if CurrentContracts < MaxContracts Then exitlong("bx3",AtStop,var2,"",1,1); } if MarketPosition == -1 Then{ ExitShort("sx1",atlimit,EntryPrice-PriceScale*27,"",1,1); ExitShort("sx2",atlimit,var2,"",1,1); if CurrentContracts < MaxContracts Then ExitShort("sx3",AtStop,var1,"",1,1); } SetStopLoss(PriceScale*15,PointStop); ##,언제나 늘 감사합니다.
프로필 이미지
회원
2017-04-06
240
글번호 108519
시스템
답변완료

문의 드립니다.

안녕하세요 아래 파동 수식에서 지나간 고점과 고점, 저점과 저점들은 계속 연결되고 오른쪽 연장은 되지 않고 현재고점과 전고점 추세선과 전고점과 전전고점 추세선 2개 현재 저점과 전저점 추세선, 전저점과 전전저점 추세선 2개만 오른쪽으로 연장되게 부탁드립니다. 미리 감사 드립니다 ========================== Input:length(5); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),처리구분(""), TL_Val1(0),TL_Val2(0); var : T(0),LTL1(0); var : HTL1(0); Array:고점[10,2](0),저점[10,2](0); 처리구분 = ""; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If 저점[1,1] > L Then 처리구분 = "저점처리"; If 고점[1,1] < H Then 처리구분 = "고점처리"; } Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { T = 1; lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; sBar = Index - 저점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); if T[1] != 1 Then{ TL_SetExtRight(LTL1,False); LTL1 = TL_New(sDate[index-저점[2,2]],sTime[index-저점[2,2]],저점[2,1],sDate[index-저점[1,2]],sTime[index-저점[1,2]],저점[1,1]); TL_SetExtRight(LTL1,true); } If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then { sBar = Index - 저점[2,2]; eBar = Index - 저점[1,2]; } } } If 처리구분 == "저점처리" Then { T = -1; lastLoVal = L; If 저점[1,2] < 고점[1,2] Then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then { 저점[1,1] = L; 저점[1,2] = Index; sBar = Index - 고점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); if T[1] != -1 then{ TL_SetExtRight(HTL1,false); HTL1 = TL_New(sDate[index-고점[2,2]],sTime[index-고점[2,2]],고점[2,1],sDate[index-고점[1,2]],sTime[index-고점[1,2]],고점[1,1]); TL_SetExtRight(HTL1,true); } If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; } } } TL_SetSize(TL1,0.5); TL_SetColor(TL1,white); TL_SetColor(LTL1,green); TL_SetColor(HTL1,yellow); TL_SetSize(LTL1,1); TL_SetSize(HTL1,1); =================================
프로필 이미지
동해바다01
2017-04-05
341
글번호 108518
지표
답변완료

문의드립니다.

안녕하세요. 차트에 표시되는 최저점과 최고점을 기준으로 진입하는 시스템 수식을 여쭈어 봅니다. 가능 하다면 힘드시드라도 아래 2가지 수식으로 부탁을 드리겟습니다. 당일 종가기준 캔들에 최저점 표시이후 <=> 최고점 표시이후 매수 및 매도진입 방법 1번수식 매수진입::최저점 표시이후 가중이평(wma) 5일선이 10일선을 상승돌파할때 매수 매도진입::최고점 표시이후 가중이평(wma) 5일선이 10일선을 하락 돌파할때 매도 공통 => 진입 후 종가기준 캔들갯수 카운터 후 15개이후부터 매수가 대비 고점 또는 저점 대비 50% 하락시 청산 후 다음 신호에서 재진입 진입가대비 손절은 25틱으로 하고싶습니다. 2번수식 당일 종가기준 최저점이 표시된캔들 다음 2번째 캔들에서 매수진입 당일 종가기준 최고점이 표시된캔들 다음 2번째 캔들에서 매도진입 공통=> 진입후 고점 또는 저점대비 50% 하락 또는 상승시 청산 후 다음 신호에서 진입 진입후 손절 25틱으로 하고싶습니다. 감사합니다.
프로필 이미지
천년의사랑
2017-04-05
219
글번호 108517
시스템

마르뚝 님에 의해서 삭제되었습니다.

프로필 이미지
마르뚝
2017-04-05
1
글번호 108516
지표
답변완료

수식부탁드립니다.

input : 텍스트소수점자리수(5); Var:jjjjj(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0),Tx(0),trnd(0),tx22(0); var : TL11(0),TL22(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); For jjjjj = 0 To 9 { barArr[jjjjj] = barArr[jjjjj] + 1; } Condition1 = Highest(H,26) == H and lastHiVal <> H; Condition2 = Lowest(L,26) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; turnPntBit = ""; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; If turnPntBit <> "" Then { If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H,L); barArr[1] = 0; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } If turnPntBit <> turnPntArr[1] Then { for jjjjj = 8 downto 1 { valArr[jjjjj+1] = valArr[jjjjj]; barArr[jjjjj+1] = barArr[jjjjj]; turnPntArr[jjjjj+1] = turnPntArr[jjjjj]; } } If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; If turnPntArr[1][1] <> turnPntArr[1][0] Then { Tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],NumToStr(valArr[2],텍스트소수점자리수)); if turnPntArr[1][0] == "Hi" then Text_SetStyle(tx,0,0); Else Text_SetStyle(tx,0,1); //TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); var1 = valArr[1]; var2 = valArr[2]; var3 = valArr[3]; TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[3],sDate[barArr[1]],sTime[barArr[1]],valArr[3]); TL_SetSize(TL11,1); if turnPntArr[1][0] == "Hi" Then TL_SetColor(TL11,RED); Else TL_SetColor(TL11,blue); } if turnPntArr[1][0] == "Lo" Then trnd = -1; if turnPntArr[1][0] == "hi" Then trnd = 1; } } TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); TL_SetEnd(TL11,sDate[barArr[1]],sTime[barArr[1]],valArr[3]); Text_Delete(tx22); tx22 = Text_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],NumToStr(valArr[1],텍스트소수점자리수)); TL_Delete(TL22); if turnPntArr[1][0] == "Lo" Then{ TL22 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate,sTime,valArr[2]); TL_SetSize(TL22,1); TL_SetColor(TL22,RED); } if turnPntArr[1][0] == "hi" Then{ TL22 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate,sTime,valArr[2]); TL_SetSize(TL22,1); TL_SetColor(TL22,blue); } TL_SetSize(TL1[1],1); TL_SetColor(TL1[1],BLACK); 첨부한 그림은 위 수식을 적용했을 때 나오는 지표입니다. 첨부파일에 나오는 적색라인과 청색라인을 plot으로 나타낼 수 있도록 부탁드립니다. 감사합니다.
프로필 이미지
해와달
2017-04-05
298
글번호 108515
지표
답변완료

수식의뢰 드려요

해보다가 안되서 전문가님께 도움을 받으려고 합니다! 국선, 해선, 상관없이 30분 챠트에서 변곡점을 찾아보려고 합니다! 위꼬리나 아래 꼬리가 길개 달린 패턴식 봉챠트를 만들고 조건에 성립된다면 강조식으로 표시도 되고 신호도 같이 나타나게 부탁드립니다! 첨부파일에 최대한 상세히 적었습니다! 만약에 꼭 아래 조건되로 안된다면 비슷한 상황이라도 진입식을 부탁드립니다! 부탁드립니다!
프로필 이미지
qha71
2017-04-05
271
글번호 108514
시스템