커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다.

항상 감사합니다. 아래 선물 시스템 수식에 피라미딩을 하고싶습니다. 1.아래 수익과 계약수는 변수로 부탁드립니다. 2.공부하려고 하오니 추가 수식에 간단한 주석 부탁드립니다. 3.예스트레이더에서 피라미딩 작동 시키는 방법 부탁드립니다. *피라미딩 조건 : 진입후 0.5p 수익시 3계약 추가 진입 매매 스위칭시에는 전량 처리하고 1계약만 진입 후에 다시 0.5p 수익시 3계약 추가 진입 ------------------------ input : Period(10); var : Counter(0), Lowval(0), Highval(0), DownVel(0),UpVel(0), DnAroon(0),UpAroon(0) ; Lowval= Lowest(Low, Period+1); Highval = Highest(High, Period+1); For counter= 0 To Period { If Low[counter] == Lowval Then DownVel = counter; If High[counter] == highval Then UpVel = counter; } UpAroon = 100*(Period-UpVel)/Period; DnAroon = 100*(Period-DownVel)/Period; if crossup(UpAroon,DnAroon) Then buy("Aroon_LE"); if CrossDown(UpAroon,DnAroon) Then sell("Aroon_SE"); ------------------------------------------
프로필 이미지
비류천
2017-08-07
114
글번호 111850
시스템
답변완료

54324에대한 재질문입니다

안녕하세요^^ 제 요구사항에 대해 오해가 있었나봐요... 매도기준으로 설명하면... 기준선을 봉이 종가로 관통하고 난뒤,,, <진입않함>> 반등해서 가격이 기준선과 다시 만나면 <<매도1>> 하방하다 다시 올라와서 기준선과 만나면 <<매도2>> 기&#51484;선을 상방으로 돌파하면 매수상황이나 손절되기 전까지는 매도유지 매수진입한 것이 손절되었다면 이미 상방돌파했으므로 매수상황 전환 가격이 하락해서 기준선과 만나면 <<매수1>> <<매수2>> <<첨부파일 참고 부탁드립니다>> 안녕하세요 예스스탁입니다, input : E1(1),E2(1),E3(1),x(10),p1(15),p2(30),p3(90); var : T(0),count(0); var1 = ma(C,20); if crossup(C,var1) Then{ T = 1; count = 0; } if CrossDown(C,var1) Then{ T = -1; count = 0; } if T == 1 and L <= var1 Then{ count = count+1; if E1 == 1 and count == 1 Then buy("b1",OnClose,def,1); if E2 == 1 and count == 1 Then buy("b2",OnClose,def,1); if E3 == 1 and count == 1 Then buy("b3",OnClose,def,1); } if T == -1 and H >= var1 Then{ count = count+1; if E1 == 1 and count == 1 Then sell("s1",OnClose,def,1); if E2 == 1 and count == 2 Then sell("s2",OnClose,def,1); if E3 == 1 and count == 3 Then sell("s3",OnClose,def,1); } if MarketPosition == 1 Then{ exitlong("bl",AtStop,EntryPrice-PriceScale*x); if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp1" Then Condition11 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp2" Then Condition12 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp3" Then Condition13 = true; if Condition11 == false Then ExitLong("bp1",Atlimit,EntryPrice+PriceScale*p1,"",1,1); if Condition12 == false Then ExitLong("bp2",Atlimit,EntryPrice+PriceScale*p2,"",1,1); if Condition13 == false Then ExitLong("bp3",Atlimit,EntryPrice+PriceScale*p3,"",1,1); } Else{ Condition11 = false; Condition12 = false; Condition13 = false; } if MarketPosition == -1 Then{ ExitShort("sl",AtStop,EntryPrice+PriceScale*x); if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "sp1" Then Condition21 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "sp2" Then Condition22 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "sp3" Then Condition23 = true; if Condition21 == false Then ExitShort("sp1",Atlimit,EntryPrice-PriceScale*p1,"",1,1); if Condition22 == false Then ExitShort("sp2",Atlimit,EntryPrice-PriceScale*p2,"",1,1); if Condition23 == false Then ExitShort("sp3",Atlimit,EntryPrice-PriceScale*p3,"",1,1); } Else{ Condition11 = false; Condition12 = false; Condition13 = false; } 즐거운 하루되세요 > 스로우 님이 쓴 글입니다. > 제목 : 시스템 문의 드립니다. > 안녕하세요 ^^ <<매수기준>> 기준선 = 20 이평선 가정 기준선을 아래에서 위로 돌파(종가기준)한뒤 가격이 내려오면서 1) 가격이 기준선과 처음 만나면 매수1 2) 두번째 만나면 매수2 3) 두번째 만나면 매수3 그 이후 무시 < 유효한 만남 횟수를 임의로 정할 수 있으면 좋겠읍니다 예) 매수1만 인정, 매수1/매수2 만 인정, 매수1/매수2/매수3 만 인정> <<매도는 반대 적용>> * 손절 10틱 1청 15틱 2청 30틱 3청 90틱 등으로 청산될수있도록 설정하되 각각의 틱수또한 임의로 설정하게 &#49489;팅 감사합니다.
프로필 이미지
스로우
2017-08-07
158
글번호 111849
시스템
답변완료

54356 재질문입니다

요구사항을 잘목이해하셨네요. 1) 지정한 시간에 완성된 15분봉의 고점과 저점을 찾고 2) 그 고점과 저점을 5분챠트와 60분챠트에 표시하는 것 ==> 답변대로 하면 60분은 표시도 안되고 ==> 5분봉은 5분의 고점과 저점을 표시합니다. ==> 그리고 지정한 시간의 다음 봉이 표시됩니다 ==> TEXT도 우측여백이 아니나 챠트 안으로 들어와 봉과 겹쳐서 보이네요
프로필 이미지
스로우
2017-08-07
115
글번호 111845
지표
답변완료

문의드립니다.

선물차트 기준으로 문의드립니다. 삼각가중평균20선이 단순이평240선보다 위에 있으면 해당구간을 차트화면에 세로로 분홍색으로 채우기하고, 아래에 있으면 해당구간을 파랑색으로 세로로 채우기를 하고자 합니다. 기간값은 수정가능하게 부탁드립니다. 수식을 어떻게 작성해야 하는지요? 부탁드립니다. 감사합니다. 수고하세요!!!
프로필 이미지
해암
2017-08-07
139
글번호 111834
지표
답변완료

문의드립니다

안녕하세요? 아래수식에 소리출력이되게하여주시면감사하겠습니다 (WRFutures사용중입니다) var : value1(0), value2(0), value3(0); var : sindex1(0), sindex2(0), Lindex1(0), Lindex2(0); value1 = stochasticsD(12,5,5); Condition1 = value1 < value1[1] and value1[1] > value1[2]; Condition2 = H < H[1] and H[1] >= H[2]; sindex1 = MRO(Condition1,15,1); sindex2 = MRO(Condition1,15,2); Lindex1 = MRO(Condition2,15,1); Lindex2 = MRO(Condition2,15,2); if value1[sindex1+1] > value1[sindex2+1] and H[Lindex1+1] < H[Lindex2+1] and Condition1 and Highest(H,5) == highest(H,15) then var1 = 1; else var1 = 0; plot1(var1);
프로필 이미지
매일
2017-08-07
125
글번호 111833
지표
답변완료

macd 적용 시스템

항상 감사드립니다 수식작성이 잘안됩니다.. 아래조건으로 수식을 만들고 있는데...어렵네요.. 1.아래의 식의 오류를 수정해 주시기 바랍니다. 신호가 정상적인 자리에 나오질 않고 있네요 2.시스템지표에서 나오는 자동추세선의 초단기,단기,중기,장기의 봉갯수를 알고싶습니다 지표식으로 이모든것들을 같은챠트에 표현할수 있는지요 /**************************************************************************/ Var : 기준선(0), 전환선(0), 선행스팬1(0), 선행스팬2(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; /*********************************************************/ Input : Period1(20),Period2(10); var : CCIv(0),CCIs(0); CCIv = CCI(Period1); CCIs = ema(CCIv,Period2); /***********************************/ Input : short(12),long(26),sig(9); Var : MACDv(0),MACDS(0); MACDv = MACD(short, long); MACDs = ema(MACDv,sig); /************************************/ var: T1(0),T4(0); if crossup(macdv,macds) Then{ var13 = macdv; var12 = var13[1]; var11 = var12[1]; if var12<var13 then T1=1; } if CrossDown(macdv,macds) Then{ var23 = macdv; var22 = var23[1]; var21 = var22[1]; if var22>var23 then T1=-1; } /*************************************/ if crossup(기준선,선행스팬2) Then T4 = 1 ; if CrossDown(기준선,선행스팬2) Then T4= -1 ; /*************************************/ if (stime >= 090000 and stime < 150000) Then{ if T1==1 and macdv<0 and macdv>macds and c>선행스팬2 then buy("b1") ; if T1==1 and macdv>0 and macdv>macds and c>선행스팬2 and cciv>0 then buy("b2") ; if T4 == 1 and C > 선행스팬2 and macdv>macds and macdv<0 and cciv>0 Then buy("B4"); /*************************************************************************/ if T1==-1 and macdv>0 and macdv<macds and c<선행스팬2 then sell("s1") ; if T1==-1 and macdv<0 and macdv<macds and c<선행스팬2 and cciv<0 then sell("s2") ; if T4 == -1 and C < 선행스팬2 and macdv<macds and macdv>0 and cciv<0 Then sell("S4"); } /*************************************************************************/
프로필 이미지
조민철
2017-08-07
170
글번호 111832
시스템
답변완료

문의드립니다

분봉차트상에 단순이평20일선과 지수이평20일선이 같이 그려지도록 하여주시고 두선이 크로스되면 "교차" 멘트가 나올수있도록하실수있는지요? 부탁드립니다
프로필 이미지
매화산삼
2017-08-06
142
글번호 111831
지표
답변완료

문의 드립니다.

질문1) 기관수량의 수식 표현 sum = -( data2(c)+data3(c) ) ; 기관의 수량을 위와같이 표현할 수 있는데 아래의 수식을 기관에 적용해서 표현하려면 각각 어떻게 바꿔야 하는지 도움을 부탁드립니다. if data2(Bdate == Bdate[1] and H > HighD(0)[1]) Then ......................... if data2(Bdate == Bdate[1] and L < LowD(0)[1]) Then .......................... 질문2) 아래의 내용대로 수식 작성 좀 부탁드립니다. 매수의 경우 매수신호가 뜨는 봉[0봉]의 다음봉의 시가+1틱에 매수진입하고 0봉의 "저가"로부터 12틱에 도달하면 익절청산하고 매도의 경우 매도신호가 뜨는 봉[0봉]의 다음봉의 시가-1틱에 매도진입하고 0봉의 "고가"로부터 -12틱에 도달하면 익절청산하고 모두의 경우 진입가로부터 5틱손절이 되는 경우 손절청산한다.
프로필 이미지
이심전심
2017-08-06
119
글번호 111830
시스템
답변완료

부탁드립니다

안녕하세요 시스템식으로 부탁드립니다 Input:n(5), // SwingHigh, SwingLow에서 좌우 날개에 해당하는 봉의 개수 종가사용여부(0), // 고가, 저가 대신 종가로 계산하고자 할 때 파동선두께(2), // 파동선의 두께. 0 ~ 5 수치표시(1); Var:j(0),jj(0),HH(0),LL(0),TL1(0),Text1(0),최종꼭지점(""),처리구분(""); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(종가사용여부 == 1,C,H); // IFF(조건식,참일 때 결과,거짓일 때 결과) LL = IFF(종가사용여부 == 1,C,L); // SwingHigh 정의 Condition1 = Highest(HH,n)[n+1] <= HH[n] and HH[n] > Highest(HH,n); // SwingLow 정의 Condition2 = Lowest (LL,n)[n+1] >= LL[n] and LL[n] < Lowest (LL,n); 처리구분 = ""; If Condition1 and Condition2 Then // 긴 장대봉에서는 SwingHigh와 SwingLow가 동시에 나타날 수 있다. { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL[n] Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH[n] Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 and 저[1,1] < HH[n] Then 처리구분 = "고점처리"; // SwingHigh 조건이 돼도 저점보다 낮으면 가격이 계속 하락중이므로 무시한다. Else If Condition2 and 고[1,1] > LL[n] Then 처리구분 = "저점처리"; // SwingLow 조건이 돼도 고점보다 높으면 가격이 계속 상승중이므로 무시한다. //========================================== If 처리구분 == "고점처리" Then { If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 // 2차원 배열이므로 For문안에 또 For문이 올 수 있다. { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH[n]; // 가격 고[1,2] = Index - n; // Index 고[1,3] = sDate[n]; // 날짜 고[1,4] = sTime[n]; // 시각 TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); // 신규 추세선 생성 If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); // 신규 텍스트 생성 Text_SetStyle(Text1, 2, 1); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,Red); } Else If 고[1,1] < HH[n] Then // 고점 다음에 다시 고점이 온 경우로 신규 고점이 더 높아야 의미가 있다. { 고[1,1] = HH[n]; 고[1,2] = Index - n; 고[1,3] = sDate[n]; 고[1,4] = sTime[n]; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); // 텍스트의 위치 변경 Text_SetString(Text1,NumToStr(고[1,1],2)); // 텍스트 값 변경 } } 최종꼭지점 = "고점"; // 이전 꼭지점이 무엇인지 판단하기 쉽도록 변수에 상태를 저장 } //========================================== If 처리구분 == "저점처리" Then { If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL[n]; 저[1,2] = Index - n; 저[1,3] = sDate[n]; 저[1,4] = sTime[n]; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 2, 0); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,Blue); } Else If 저[1,1] > LL[n] then { 저[1,1] = LL[n]; 저[1,2] = Index - n; 저[1,3] = sDate[n]; 저[1,4] = sTime[n]; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } } 최종꼭지점 = "저점"; }
프로필 이미지
청심
2017-08-06
136
글번호 111829
시스템