커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식부탁합니다.

if crossup(var1,var2) Then{ value1 = C; value2 = value1[1]; value3 = var1; value4 = value3[1]; 상기식에서 value3와 value4사이의 봉의갯수가 20개이상에 대한 수식이 필요합니다. 부탁합니다.
프로필 이미지
슬림
2012-05-04
276
글번호 50771
시스템
답변완료

문의요~

수고하십니다~~ 문의 1. 5선 20선 골든크로스시 매수 진입후 골든크로스 발생전 최저점(40캔들 정도) 이탈시 청산 공식 부탁드립니다. 2. 1. 5선 20선 데드크로스시 매도 진입후 데드크로스 발생전 최고점(40캔들 정도) 돌파시 청산 공식 부탁드립니다.
프로필 이미지
공기단축
2012-05-03
294
글번호 50770
시스템
답변완료

재문의 드립니다.

빠른 답변 감사드립니다. 그런데 저의 설명이 좀 부족했나봅니다^^ 이익청산과 손절값이 각계약마다 다르기 때문에 따로따로 해야합니다. 제가 원하는 청산방법은 첫번째 진입은 이익청산이 없고, 두번째 진입은 1포인트(여기서1포인트는 큰 의미가 없고, 그냥 예를 들어 가정을 한거구요, 10포인트가 될수도 있고, atr값이 될수도 있습니다)이익이 생겼을때 이익청산하고, 세번째 진입은 2포인트(이것도 그냥 가정입니다. 20포인트가 될수도 있고, 여러가지....)이상 이익이 나면 청산하도록 하려고 합니다. 간단히 예를 들어 설명하면, 첫번째 진입이 총8포인트 수익이 났다면,두번째 진입은 3포인트 이익이 나면 처음 먼저 청산, 세번째 진입은 세번째 진입가격에서 5포인트 이익이 나면 두번째로 청산합니다. 첫번째 진입이 맨 마지막에 청산됩니다.결과적으로 총 3계약이 16포인트 이익을 내도록 하려고 합니다. 근데 첫번째 진입가격은 entryprice로 정하는데, 두번째와 세번째 진입가격은 어떻게 해야 되는지 모르겠습니다. 두번째와 세번째의 진입가격을 이용해서 이익청산과 손절을 각각 다른 값으로 하고 싶습니다. 부탁드립니다. -------------------------------------------------------------------------------------- 안녕하세요 예스스탁입니다. 식을 아래와 같이 작성하시면 됩니다. isentryname은 첫번째 진입명 만을 가져오므로 exitlong이나 exitshort함수안에 진입명을 지정하시면 됩니다. 손절매나 목표이익의 경우 강제청산 함수를 사용하시면 자동으로 진입별로 처리되므로 진입별로 1포인트 수익이나 손실을 제어하실 경우 강제청산 함수를 이용하시면 됩니다. 다만 작성하신 내용중 TSstop과 같은 부분은 3개의 청산이 모두 조건이 동일합니다.Lowest(L , TrailBar ), Highest(H , TrailBar) 가격조건이 동일하므로 모두 한번에 신호가 발생하게 됩니다. 해당 내용은 따로 조정하셔야 합니다. 이름이 긴 내용은 작성을 위해 짧게 처리했습니다. 피라미딩 하는 내용이므로 적용하실 때 피라미딩을 다른진입신호만 허용으로 설정하시기 바랍니다. Input: FastLen(10), SlowLen(500), ChLen(30), TrailBar(160), ReBars(30), stopPer(1.0); Vars: FastMA(0), SlowMA(0),LEntryPrice(0), SEntryPrice(0), LCount(-999), SCount(-999),ATRV(0); FastMA = ma(C , FastLen ); SlowMA = ma(C , SlowLen ); ATRV = ATR(30); If CrossUp(FastMA , SlowMA) and index > 1 then { LEntryPrice = Highest(H , TrailBar )[1]; LCount = index; } If MarketPosition <> 1 AND index < LCount + ChLen then Buy("Buy1", atstop,LEntryPrice,10); If MarketPosition == 1 and CurrentEntries == 1 Then buy("Buy2",AtStop,EntryPrice+(ATR(30)*0.5),10); If MarketPosition == 1 and CurrentEntries == 2 Then buy("Buy3",AtStop,EntryPrice+ATR(30),10); If CrossDown(FastMA , SlowMA) and index > 1 then { SEntryPrice = Lowest(L , TrailBar )[1]; SCount = index; } If MarketPosition <> -1 AND index < SCount + ChLen then Sell ("Sell1", atstop,SEntryPrice,10); If MarketPosition == -1 and CurrentEntries == 1 Then sell("Sell2",AtStop,EntryPrice-(ATRV*0.5),10); If MarketPosition == -1 and CurrentEntries == 2 Then sell("Sell3",AtStop,EntryPrice-ATRV,10); If MarketPosition == 1 then { LCount = -999; ExitLong("LongTStop_1", atstop, Lowest(L , TrailBar ),"Buy1",10,1); ExitLong("LongTStop_2", atstop, Lowest(L , TrailBar ),"Buy2",10,1); ExitLong("LongTStop_3", atstop, Lowest(L , TrailBar ),"Buy3",10,1); } If MarketPosition == -1 then { SCount = -999; ExitShort("ShortTStop_1", atstop, Highest(H , TrailBar),"Sell1",10,1); ExitShort("ShortTStop_2", atstop, Highest(H , TrailBar),"Sell2",10,1); ExitShort("ShortTStop_3", atstop, Highest(H , TrailBar),"Sell3",10,1); } SetStopLoss(1,PointStop); SetStopProfittarget(1,PointStop); 즐거운 하루되세요 > 공감n감사 님이 쓴 글입니다. > 제목 : 분할매입 분할청산 > 항상 빠른 답변 감사드립니다. 기본시스템입니다. __________________________________________________________________________________ Input: FastLen(10),SlowLen(500),ChLen(30),TrailBar(160),ReBars(30),stopPer(1.0); Vars: FastMA(0),SlowMA(0),LEntryPrice(0),SEntryPrice(0),LCount(-999),SCount(-999); FastMA = ma(C , FastLen ); SlowMA = ma(C , SlowLen ); If CrossUp(FastMA , SlowMA) and index > 1 then { LEntryPrice = Highest(H , TrailBar )[1]; LCount = index; } If MarketPosition <> 1 AND index < LCount + ChLen then Buy ("Cross Over Buy", atstop,LEntryPrice,10); If CrossDown(FastMA , SlowMA) and index > 1 then { SEntryPrice = Lowest(L , TrailBar )[1]; SCount = index; } If MarketPosition <> -1 AND index < SCount + ChLen then Sell ("Cross Under Sell", atstop,SEntryPrice,10); If MarketPosition == 1 and IsEntryName("Cross Over Buy",0) == True then { LCount = -999; ExitLong ("LongTStop", atstop, Lowest(L , TrailBar )); ExitLong("BLoss",AtStop,EntryPrice-1); } If MarketPosition == -1 and IsEntryName("Cross Under Sell",0) == True then { SCount = -999; ExitShort ("ShortTStop", atstop, Highest(H , TrailBar )); ExitShort("SLoss",AtStop,EntryPrice+1); } ____________________________________________________________________________ 이 시스템을 가지고 분할매입 분할청산 식으로 고치려고 합니다. 아래의 식이 제가 만든것인데, 잘못된 부분 수정좀 부탁드립니다. 두번의 추가 진입을 허용하고, 추가진입 계약들은 각각의 진입명과 각각의 추가진입가격에 맞추어 이익청산과 손절을 하도록 할려고 합니다. (각각의 추가진입가격을 어떻게 설정하는지 모르겠습니다) 또한 매진입마다 10계약식 진입, 각 청산마다 10계약식 청산하려고 합니다. 그럼 미리 감사드립니다. _____________________________________________________________________________ Input: FastLen(10), SlowLen(500), ChLen(30), TrailBar(160), ReBars(30), stopPer(1.0); Vars: FastMA(0), SlowMA(0),LEntryPrice(0), SEntryPrice(0), LCount(-999), SCount(-999); FastMA = ma(C , FastLen ); SlowMA = ma(C , SlowLen ); If CrossUp(FastMA , SlowMA) and index > 1 then { LEntryPrice = Highest(H , TrailBar )[1]; LCount = index; } If MarketPosition <> 1 AND index < LCount + ChLen then Buy ("Cross Over Buy", atstop,LEntryPrice,10); If CrossDown(FastMA , SlowMA) and index > 1 then { SEntryPrice = Lowest(L , TrailBar )[1]; SCount = index; } If MarketPosition <> -1 AND index < SCount + ChLen then Sell ("Cross Under Sell", atstop,SEntryPrice,10); If MarketPosition == 1 and CurrentEntries == 1 Then buy("Cross Over Buy_2",AtStop,EntryPrice+(ATR(30)*0.5),10); If MarketPosition == -1 and CurrentEntries == 1 Then sell("Cross Under Sell_2",AtStop,EntryPrice-(ATR(30)*0.5),10); If MarketPosition == 1 and CurrentEntries == 2 Then buy("Cross Over Buy_3",AtStop,EntryPrice+ATR(30),10); If MarketPosition == -1 and CurrentEntries == 2 Then sell("Cross Under Sell_3",AtStop,EntryPrice-ATR(30),10); If MarketPosition == 1 and IsEntryName("Cross Over Buy",0) == True then { LCount = -999; ExitLong ("LongTStop", atstop, Lowest(L , TrailBar ),"Cross Over Buy",10,1); ExitLong("BLoss",AtStop,EntryPrice-1,"Cross Over Buy",10,1); } If MarketPosition == -1 and IsEntryName("Cross Under Sell",0) == True then { SCount = -999; ExitShort ("ShortTStop", atstop, Highest(H , TrailBar),"Cross Under Sell",10,1); ExitShort("SLoss",AtStop,EntryPrice+1,"Cross Under Sell",10,1); } If MarketPosition == 1 and IsEntryName("Cross Over Buy_2",0) == True then { LCount = -999; ExitLong ("LongTStop_2", atstop, Lowest(L , TrailBar ),"Cross Over Buy_2",10,1); ExitLong("BLoss_2",AtStop,EntryPrice-1,"Cross Over Buy_2",10,1); ExitLong("BProfit_2",AtLimit,EntryPrice+1,"Cross Over Buy_2",10,1); } If MarketPosition == -1 and IsEntryName("Cross Under Sell_2",0) == True then { SCount = -999; ExitShort ("ShortTStop_2", atstop, Highest(H , TrailBar),"Cross Under Sell_2",10,1); ExitShort("SLoss_2",AtStop,EntryPrice+1,"Cross Under Sell_2",10,1); ExitShort("SProfit_2",atlimit,EntryPrice-1,"Cross Under Sell_2",10,1); } If MarketPosition == 1 and IsEntryName("Cross Over Buy_3",0) == True then { LCount = -999; ExitLong ("LongTStop_3", atstop, Lowest(L , TrailBar ),"Cross Over Buy_3",10,1); ExitLong("BLoss_3",AtStop,EntryPrice-1,"Cross Over Buy_3",10,1); ExitLong("BProfit_3",AtLimit,EntryPrice+2,"Cross Over Buy_3",10,1); } If MarketPosition == -1 and IsEntryName("Cross Under Sell_3",0) == True then { SCount = -999; ExitShort ("ShortTStop_3", atstop, Highest(H , TrailBar),"Cross Under Sell_3",10,1); ExitShort("SLoss_3",AtStop,EntryPrice+1,"Cross Under Sell_3",10,1); ExitShort("SProfit_3",atlimit,EntryPrice-2,"Cross Under Sell_3",10,1); }
프로필 이미지
공감n감사
2012-05-03
260
글번호 50769
시스템
답변완료

재문의 드립니다.

안녕하세요. 날씨도 더우신데 수고많으십니다. 이평의 골든 또는 데드크로스가 발생하였을 때 그 발생한 지점에서 첨부파일처럼 그 골든 / 데드 크로스가 발생한 가격대에 선으로 표시 될 수 있는지 궁금합니다. 두개의 이평선이 교차하니 선도 그림처럼 두개가 발생하길 원합니다. 첨부파일처럼 골든크로스가 발생했다면 골든크로스가 끝날때까지 선이 계속 이어지고 데드크로스가 발생하면 또 그 데드크로스가 끝날 때 까지 이어지길 원합니다. 부탁드립니다. 감사합니다.
프로필 이미지
hmk
2012-05-03
319
글번호 50761
지표

빌리언 님에 의해서 삭제되었습니다.

프로필 이미지
빌리언
2012-05-03
71
글번호 50760
시스템
답변완료

수정해주세요----------

Condition1 = False; Condition3 = False; if dayindex > 10 and stime > 090000 and stime < 144500 and( c[3] < c[1] and c[1] > c ) and h > (goldjisu+var1)+1 and cvcha > -900 then { plot8(h+0.0,"색매도"); } if dayindex > 10 and stime > 090000 and stime < 144500 and( c[3] < c[1] and c[1] > c ) and ( countif (h >= h[40]+0.15 and goldt <goldt[40] - 0.05,20) >=20 and dayindex > 40) then { Condition1 = True; } if( Condition1 == true and cvcha > -900 ) Then { Condition3 = True; } if Condition3 == True //and goldjisutem < goldjisutem[1] then { plot9(h+0.0,"골드매도"); PlaySound("C:₩예스트레이더31₩Data₩alert.wav"); } 중괄호 정리한다고 했습니다(나름) Condition3 == True;면 기다렸다가 goldjisutem < goldjisutem[1] 될때 plot9(h+0.0,"골드매도"); 하게해주세요 부탁드립니다
프로필 이미지
leekss1
2012-05-03
314
글번호 50759
지표
답변완료

일목균형표

차트를 이동하지 않고 일목균형표 지표식을 만들수는 없는건가요?
프로필 이미지
프리니어
2012-05-03
347
글번호 50758
시스템
답변완료

시스템 결합방법

두개의 시스템을 합성하는 하나의 시스템으로 합성하는 방식을 문의합니다. 두시스템이 각각 독립적으로 존재하면서 하나의 시스템으로 되는 방식으로, 1) "시스템A and 시스템B" 와 2) "시스템A or 시스템B" 로 하고자 합니다. *시스템 A If MarketPosition== 0 Then{ If CrossDown(value1, 80) Then Buy(); } If MarketPosition==1 Then{ If CrossUP(value1, 20) Then ExitLong(); } SetStopEndofday(140000); *시스템 B If MarketPosition== 0 Then{ If CrossDown(value3, 80) Then Buy(); } If MarketPosition==1 Then{ If CrossUP(value3, 20) Then ExitLong(); } SetStopEndofday(120000); 감사합니다.
프로필 이미지
tao
2012-05-03
329
글번호 50757
시스템
답변완료

문의 드립니다

안녕하세요 매번 성실한 답변 감사드립니다 #3% 하락 if MarketPosition == 1 and stime < 150000 Then buy("b0",AtLimit,DayOpen*0.97); SetStopProfittarget(2,PercentStop); 위의 식으로 매수를 할때 장시작전에 자동매매를 걸어놓으면 -3% 하락시 매수가 되고 매수가격에서 2% 상승시 매수청산이 되는데 장중에 어떤종목이 - 7% 하락시 이식을 자동매매를 걸면 -3% 가격으로 정해져 매수가 될때 매수가가 높으니 실제로는 - 7% 가격으로 매수가 되고나면 매수청산은 - 5%에서 되는것이 아니고 -1 %에서 매수청산이 되는것 같은데 장중에 자동매매를 걸때 실제매수가에서 2 % 상승시 바로 연동되어 매수청산되는식이 있는지요 감사합니다
프로필 이미지
회원
2012-05-03
314
글번호 50756
시스템