커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6348
글번호 230811
답변완료
종가고가매매와첫봉매매금지
input : HP(5),LP(5);
var : cnt(0),HH(0),LL(0);
HH = dayhigh(1);
for cnt = 1 to HP{
if dayhigh(cnt) > HH Then
HH = dayhigh(cnt);
}
LL = dayLow(1);
for cnt = 1 to LP{
if daylow(cnt) < LL Then
LL = dayLow(cnt);
}
if crossup(c,HH) then
buy();
if CrossDown(c,LL) Then
sell();
1.위수식은5일고가매매입니다
이것을5일종가고가로부탁합니다.
2.오전시작첫봉은매매하지 않는다
대단히감사합니다.
2017-01-24
115
글번호 106225
답변완료
지표문의요
혹시 예스스탁에서 제공하는것중에서 예를들어서 1틱지표가있으면 평균적으로 매수호가나 매도호가에서 거래가 이루어지는거랑상관없이 1틱으로 가격만나오자나요? 근데 차트에서 매수호가에 거래가 이루어졌다거나 매도호가에 거래가 이루어졌다는걸 차트에 표시할수 있는방법이 있나요? 해외선물하고있고요
2017-01-24
118
글번호 106222
답변완료
부탁드립니다.
도움주심에 감사 드립니다.
다음수식을 참고로 시작시분에서 MACD값이 0에서 출발하는 수식이 가능한지요?
미리 감사 드립니다.
input:시작년도(2017),월(1),일(23),시작시분only(0800);
variables: VolumeValue( 0 ), MedPrice( 0 ), PV( 0 ),StartCalcDate(0),StartTime(0),
CumulativeVolume( 0 ), CumulativePV( 0 ), Started( false ), Denom( 0 ),
KeyCumVol( 0 ), KeyCumPV( 0 ), MidasValue( 0 ) ;
StartCalcDate=시작년도*10000+월*100+일;
StartTime=시작시분ONLY*100;
if Date >= StartCalcDate and Time >= StartTime then
begin
VolumeValue = iff( DataCompress < 1, Ticks, Volume ) ;
MedPrice = (H + L)/2 ;
PV = MedPrice * VolumeValue ;
CumulativeVolume = VolumeValue + CumulativeVolume ;
CumulativePV = PV + CumulativePV ;
end ;
if Started == false and ( ( Date >= StartCalcDate and
Time >= StartTime ) and ( ( Time[1] < StartTime or
Date[1] < StartCalcDate ) or Date[1] >
StartCalcDate ) ) then
begin
Started = true ;
Denom = 1 ;
KeyCumVol = CumulativeVolume ;
KeyCumPV = CumulativePV ;
end
else if Denom >= 1 then
Denom = CumulativeVolume - KeyCumVol ;
if Started then
begin
if Denom > 1 then
MidasValue = ( CumulativePV - KeyCumPV ) / Denom ;
else if Denom = 1 then MidasValue = MedPrice ;
Plot1( MidasValue, "Midas" ,lmagenta) ;
end ;
2017-01-24
155
글번호 106221
천용인 님에 의해서 삭제되었습니다.
2017-01-24
42
글번호 106220
답변완료
(문의) CRT 기준 03:00 시스템 가동 및 15:40 EndofDay되게하는 방법 건
안녕하세요. 매매 시간을 Current Real Time 기준(미국 CME)
03:00 ~ 15:40까지만 거래하고 싶은데
Simulation 차트 보니까 연속적으로 거래되어 집니다..
CRT 기준 03:00에 시스템이 가동되어 15:40에 EndofDay가 되게하려면
어떻게 해야하는지 도움을 부탁 드립니다. 아래는 작성한 Code 입니다.
그럼, 부탁 드리겠습니다.
# 1. Definition for Variables
Inputs : OP1(0.3), SL(60) ;
Var1 = DayHigh(1) - DayLow(1) ;
# 2. Conditions for Entering Position
if stime >= 030000 Then {
Buy("Long", AtStop, DayOpen(0) + Var1*OP1) ;
Sell("Short", AtStop, DayOpen(0) - Var1*Op1) ;
}
# 3. Conditions for Settling Position
if MarketPosition != 0 then {
SetStopTrailing(35, 0.8, PercentStop) ;
}
# 4. Conditions for Loss Cut
SetStopLoss(PriceScale*SL, PointStop) ;
# 5. Daily Settlement
If stime == 154000 Then {
ExitLong("EL", AtMarket) ;
ExitShort("ES", AtMarket) ;
}
2017-01-23
150
글번호 106219
답변완료
검색 코드 작성 후 디버깅 문의
안녕하세요,
시스템을 만들때는 특정 종목으로 한정되어 있어서,
MessageLog를 통해 디버깅 하는데 문제가 없었는데요,
검색 경우에는 어떤식으로 디버깅을 하면 좋을까요?
특정 종목이 검색시 노출이 되어야 하는데 안나와서
조건들을 하나하나 확인해보려 하는데, MessageLog를 쓸수 있을까요?
시험삼아 넣어봤더니 종목검색 자체가 안됩니다.
- 검색에 필요한 정보가 부족하거나 외부 입력 변수의 (짤림)
이런 메세지가 나오면서 안되네요. MessageLog 를 지우면 검색이 잘 됩니다.
감사합니다.
2017-01-23
149
글번호 106218
답변완료
수식 부탁드립니다
아래와 같은 피라미딩 시스템 청산식을 사용할 경우 그림과 같이 최초진입가에서 5p 이상인 지점에서만 청산이 이루어집니다.
만들고자 하는 청산식은
최초 진입가(buy)에서 피라미딩하여 5p 이상인 지점에서 청산이 이루어지고 또한 bs, sb지점에서 추가 진입한 후 피라미딩하여 5p 이상인 지점에서도 청산이 이루어지는 시스템입니다.
부탁드립니다
if MarketPosition == 1 Then
{
if MaxContracts < 20 and (entryprice >= LatestEntryPrice) or (entryprice <= LatestEntryPrice) Then
buy("bb",atstop,LatestEntryPrice(0)+1.5,1);
if MaxContracts < 20 Then
buy("bs",atlimit,latestEntryPrice(0)-5,1);
}
if MarketPosition == -1 Then
{
if MaxContracts < 20 and (entryprice <= LatestEntryPrice) or (entryprice >= LatestEntryPrice) Then
sell("ss",atstop,LatestEntryPrice(0)-1.5,1);
if MaxContracts < 20 Then
sell("sb",atlimit,latestEntryPrice(0)+5,1);
}
if MarketPosition == 1 Then
ExitLong("bp",atlimit,AvgEntryPrice+7.0);
if MarketPosition == -1 Then
ExitShort("sp",atlimit,AvgEntryPrice-7.0);
if MarketPosition == 1 and c > entryprice + 5 and Relative1 >= 65 Then
exitlong("bx1",AtStop,c);
if MarketPosition == -1 and c < entryprice - 5 and Relative1 <= 35 Then
exitShort("sx1",AtStop,c);
2017-01-23
147
글번호 106217
답변완료
수식 문의
안녕하세요
input : P(14),BBP(20),dv(2),MAP(60);
input : short(12),long(26),sig(9);
var : ADXV(0),DP(0),DM(0),T(0),BBup(0),BBdn(0),mav(0);
var : MACDV(0),MACDS(0),Bcond(false),Scond(False),bbmd(0),diff(0),cnt(0),count(0);
ADXV = ADX(P);
DP = Diplus(P);
DM = DiMinus(P);
bbmd = ma(c,BBP);
BBup = BollBandUp(BBP,dv);
BBdn = BollBandDown(BBP,dv);
mav = ma(C,MAP);
MACDV = MACD(short,long);
MACDS = ema(MACDV,sig);
diff = C-O;
Bcond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == -1 and BarsSinceEntry >= 4);
Scond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == 1 and BarsSinceEntry >= 4);
if MarketPosition <= 0 and diff+diff[1] >= PriceScale*30 Then
buy("b1");
if MarketPosition >= 0 and diff+diff[1] <= -PriceScale*30 Then
sell("s1");
상기 수식은 봉 완성 후 진입하는 것 같습니다.
수식에 맞는 가격에 도달하면 바로 진입하는 것으로 변경가능한지요?
즉 두 봉의 합이 30틱이 넘으면 31틱에서 바로 진입하는 것으로 부탁드립니다.
그리고 추가사항으로 하기 부대조건도 부탁드립니다.
1.
macd 가 macd signal보다 위에 있을때 매도 금지...
macd 가 macd signal보다 아래에 있을때 매수 금지...
2. ADX 15 이하, 35 이상에서는 상기 수식이 적용되지 않게 부탁드립니다.
ADX 15~35 사이에만 적용되게 끔 부탁드립니다.
3. 기존에 같은 방향으로 신호가 있더라도 이 수식에 한해서는,
재진입 할 수 있게 부탁드립니다. 즉 피라미딩 진입 부탁드립니다.
상기 수식에 한해서 손절은 30틱만 정하도록 부탁드립니다.
확인 부탁드립니다.
한가지 더 부탁드립니다.
어떠한 신호에 진입을 하더라도 (매도, 매수 상관없음)
진입후 10봉이 지나고,최초 진입가격 +1틱으로 오게되면 청산할 수 있는 수식 부탁드립니다.
진입가격+1틱 가격으로 오지 않는다면, 정상적인 다음 신호대기하고 포지션 유지합니다.
감사합니다.
2017-01-24
130
글번호 106216
답변완료
51460 질문에 대한 추가질문입니다
51460 질문의 요지는 일부 종목의 경우 거래량이 너무 적어서 시스템 신호가 원활하게 발생하지 않아서, 생각한것이 마지막봉 이후 60분동안 거래가 없으면 제 시스템에서 1주의 매도 신호가 자동으로 나가게 되어 최소 60분 간격으로 봉을 1개씩 만들어서 메인 시스템신호가 원할하게 작동하기 위함이었습니다.
그런데 알려주신대로 시스템에 추가로 "봉생성"기능을 추가해보니 마지막봉 이후 60분이 지나면 매도 신호가 발생해서 대기상태를 유지하다가 다음 봉 신호가 들어오면 비로소 1주 매도 신호가 나가게 되어 인위적인 봉생성 효과가 없는것으로 판단됩니다. 결국 추가적인 거래가 없을 경우에는 60분이 지나도 매도 대기상태를 계속 유지하게 되어 제가 원하는 봉생성 효과가 없었습니다.
결론적으로 다시 질문을 드립니다.
마지막 거래봉 생성후 60분이 지나면 매도대기신호가 발생하는것이 아니고, 시간베이스로 다음 봉을 기다리지 말고 즉시 1주의 매도신호가 나가게 할 수 있는 방법을 알고 싶습니다.
감사합니다.
2017-01-24
125
글번호 106215