커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1535
글번호 230811
답변완료
수식 부탁드려요
안녕하세요, 한창 공부하는 중에 헷갈려서 질문드립니다.
----------------------------------------------------
*나스닥 선물거래 프로그래밍
1. 미국 정규장 개장 후 2번째 5분봉 시가에 진입.(22시 30분 혹은 23시 30분)
2. 진입 포지션은 개장 후 첫 5분봉을 기준으로
2.1. 양봉일 시 매수 포지션 진입
2.2. 음봉일 시 매도 포지션 진입
3. 포지션 손절은
3.1. 진입 포지션이 매수일 시, 22:30분을 시가로 하는 5분봉 기준으로 저가를 터치 했을 시.
3.2. 진입 포지션이 매도일 시, 22:30분을 시가로 하는 5분봉 기준으로 고가를 터치 했을 시.
4. 포지션 청산은 손절 기준가격의 10배의 미실현수익을 냈을 때 혹은 정규 시장 종료 시(05:00 혹은 06:00 / 섬머타임)
---------------------------------------------------------------
섬머타임까지 감안해서 수식을 짜주시길 부탁드립니다.
감사합니다.
2023-05-29
1294
글번호 169359
답변완료
문의드립니다
Upticks/downticks와 upvol/downvol 의 차이와 구체적인 설명부탁드립니다
2023-05-29
1237
글번호 169358
답변완료
문의 드립니다.~~~~
아래 cme해외선물 매매식에서
밤23시에서 새벽5시까지만 진입하고
매수 또는 매도 진입시
진입후 익절없이 진입가 대비
100틱 손실시 물타기진입 1개추가
200틱 손실시 물타기진입 1개추가하고(총진입 3개 까지만)
모든 진입 후에 합하여 익절조건이면 잔고 전부 청산 되고
반대청산 진입시에는
잔고 전부 청산과 동시에 진입 1개되는 식을 부탁드립니다.
Input : shortPeriod(5), longPeriod(20);
input : 익절틱수(50);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
Sell();
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
2023-05-28
1160
글번호 169357
포소망 님에 의해서 삭제되었습니다.
2023-05-28
36
글번호 169356
답변완료
문의
var : O2(0,data2),H2(0,data2),L2(0,data2),c2(0,data2);
var : O3(0,data3),H3(0,data3),L3(0,data3),c3(0,data3);
if data2((sdate != sdate[1] and stime >= 101500) or
(sdate == sdate[1] and stime >= 101500 and stime < 101500)) Then
{
O2 = data2(O);
H2 = data2(H);
L2 = data2(L);
C2 = data2(C);
}
if data2(H > H2) Then
H2 = data2(H);
if data2(L < L2) Then
L2 = data2(L);
if data3((sdate != sdate[1] and stime >= 101500) or
(sdate == sdate[1] and stime >= 101500 and stime < 101500)) Then
{
O3 = data3(O);
H3 = data3(H);
L3 = data3(L);
C3 = data3(C);
}
if data3(H > H3) Then
H3 = data3(H);
if data3(L < L3) Then
L3 = data3(L);
plot1(O2,"2시가");
plot2(O3,"3시가");
plot3(H2,"2고가");
plot4(H3,"3고가");
예를들면 전날10시15이후에시작해서 다음날 10시15분이면 바뀌어야 하는데 그렇지가 않습니다,잘못된것을 고쳐주시길 부탁드립니다
2023-05-28
575
글번호 169355
답변완료
수식확인
Inputs : Period(20), Sence(1.5), CC_DN(Yellow);
input : 기준가(12345);
Vars:
VLineUp(0),
VLineDn(0),
HHighest(0),
LLowest(0),
JustChanged(FALSE),
VLine(0), DBN(0),T(0);
Array:
Highs[35](0),
Lows[35](0),
RRange[35](0),
UpWave[1](FALSE),
DnWave[1](FALSE);
If STime == 180000 Then
DBN = 0;
DBN = DBN + 1;
Var1 = Period;
Var2 = Var1 - 1;
Var3 = Var1 - 2;
Var5 = Sence;
Var6 = H-L;
JustChanged = FALSE;
if CurrentBar <= Var2 then begin
Highs[CurrentBar] = Close;
Lows[CurrentBar] = Close;
RRange[CurrentBar] = (H-L) /2;
end;
if CurrentBar == Var1 then begin
if Highs[Var2] >= Highs[Var3] then begin
UpWave[1] = TRUE;
HHighest = Highs[Var2];
VLineUp = HHighest - (Var5 * MA(Var6,Var2));
#Plot1(VLineUp,"VLineUp");
end;
if Highs[Var2] < Highs[Var3] then begin
DnWave[1] = TRUE;
LLowest = Lows[Var2];
VLineDn = LLowest + (Var5 * MA(Var6,Var2));
#Plot2(VLineDn,"VLineDn");
end;
end;
if CurrentBar > Var1 then begin
if DnWave[1] and Close > VLineDn then begin
DnWave[1] = FALSE;
UpWave[1] = TRUE;
JustChanged = TRUE;
HHighest = Close;
LLowest = 0;
end;
if UpWave[1] and Close < VLineUp and JustChanged == FALSE then begin
UpWave[1] = FALSE;
DnWave[1] = TRUE;
JustChanged = TRUE;
LLowest = Close;
HHighest = 0;
end;
if JustChanged == FALSE then begin
if Close > HHighest then
HHighest = Close;
else if Close < LLowest then
LLowest = Close;
end;
VLineUp = HHighest - (Var5 * MA(Var6,Var2));
VLineDn = LLowest + (Var5 * MA(Var6,Var2));
if UpWave[1] then T = 1;
else if DnWave[1] then T = -1;
end;
if T == 1 and CrossUp(C,기준가) Then
Buy();
if T == -1 and CrossDown(C,기준가) Then
Sell();
안녕하세요
위식을 적용시 신호가 마지막 매도후 매수로 전환이 되야 하는데 않되고 있습니다
확인 부탁드려요
2023-05-28
808
글번호 169354
답변완료
수식부탁드립니다
안녕하세요
항상감사합니다
10분내 전일거래량 50% 를초과하는 종목을찾는 수식 부탁드립니다
어느시간대건 상관없이 10분동안 전일거래량 50%초과하는 종목을 찾고자합니다
2023-05-28
787
글번호 169353
답변완료
국내주식(삼성전자) 매매 수식 부탁드리겠습니다.
프로그램 yestrader (하이투자증권)
종목: 삼성전자
차트: 60분봉 적용
매수조건
1.10일 이평선 아래 있을때 또는 120일 이평선 아래 있을때 매수
2.오후 2시에 매수
3.전일대비 -1% 하락시 1주 매수
전일대비 -1.5% 하락시 2주 매수
전일대비 -2% 하락시 3주 매수
전일대비 -2.5% 하락시 4주 매수
전일대비 -3% 하락시 5주 매수
조건 교집합임
청산조건
1.오후 3시
2.전체 매수금액의 평균값에 대한 수익률이 10%이상 일때
3.매수한 전체 수량에 3% 수량만 청산
( 참고로 3%씩 분할청산해서 전량 청산이 아니라 전체수량의 3%만 청산하는 것으로 요청드림니다)
조건 교집합임
항상 도움을 주셔서 감사합니다.~~
#매수 10일봉이하 또는 120선이하 매수
#매도 3%씩 분할 매도 10% 이익시
input : 시작일(10230216);
input : 이평1(240),이평2(2880);
input : 분할청산퍼센트(0.02) ;
input : 수익퍼센트(1.05) ;
input : 최대투자금액(2000);
var1 = ma(C,이평1);
Var2 = ma(C,이평2);
if Data1(sDate) >= 시작일 Then
{
if
sTime == 140000 and AvgEntryPrice*CurrentContracts < 최대투자금액*10000 Then
{
if c < var1 or c < Var2 Then
{
if C <= DayClose(1)*0.99 and C > DayClose(1)*0.985 Then
Buy("b1",OnClose,Def,1);
if C <= DayClose(1)*0.985 and C > DayClose(1)*0.980 Then
Buy("b2",OnClose,Def,2);
if C <= DayClose(1)*0.980 and C > DayClose(1)*0.975 Then
Buy("b3",OnClose,Def,3);
if C <= DayClose(1)*0.975 and C > DayClose(1)*0.970 Then
Buy("b4",OnClose,Def,4);
if C <= DayClose(1)*0.970 and C > DayClose(1)*0.965 Then
Buy("b5",OnClose,Def,5);
if C <= DayClose(1)*0.965 and C > DayClose(1)*0.96 Then
Buy("b6",OnClose,Def,6);
if C <= DayClose(1)*0.96 and C > DayClose(1)*0.955 Then
Buy("b7",OnClose,Def,7);
if C <= DayClose(1)*0.955 and C > DayClose(1)*0.95 Then
Buy("b8",OnClose,Def,8);
if C <= DayClose(1)*0.95 Then
Buy("b9",OnClose,Def,9);
}
}
}
if MarketPosition == 1 and
sTime == 140000 Then
{
if C >= AvgEntryPrice*수익퍼센트 Then
ExitLong("bx",OnClose,Def,"",Floor(CurrentContracts*분할청산퍼센트),2);
}
2023-06-01
877
글번호 169352
답변완료
문의 드립니다.
//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic
//created by: @Anil_Ozeksi
//developer: ANIL ÖZEKŞİ
//author: @kivancozbilgic
indicator('HIGH AND LOW Optimized Trend Tracker', 'HL OTT', overlay=true)
length = input.int(2, 'OTT Period', minval=1)
percent = input.float(0.6, 'OTT Optimization Coeff', step=0.1, minval=0)
hllength = input.int(10, 'Highest and Lowest Length', minval=1)
src = ta.highest(high, hllength)
srcl = ta.lowest(low, hllength)
highlighting = input(title='Highlighter On/Off ?', defval=true)
mav = input.string(title='Moving Average Type', defval='VAR', options=['SMA', 'EMA', 'WMA', 'DEMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF', 'HULL'])
Var_Func(src, length) =>
valpha = 2 / (length + 1)
vud1 = src > src[1] ? src - src[1] : 0
vdd1 = src < src[1] ? src[1] - src : 0
vUD = math.sum(vud1, 9)
vDD = math.sum(vdd1, 9)
vCMO = nz((vUD - vDD) / (vUD + vDD))
VAR = 0.0
VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1])
VAR
VAR = Var_Func(src, length)
DEMA = 2 * ta.ema(src, length) - ta.ema(ta.ema(src, length), length)
Wwma_Func(src, length) =>
wwalpha = 1 / length
WWMA = 0.0
WWMA := wwalpha * src + (1 - wwalpha) * nz(WWMA[1])
WWMA
WWMA = Wwma_Func(src, length)
Zlema_Func(src, length) =>
zxLag = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2
zxEMAData = src + src - src[zxLag]
ZLEMA = ta.ema(zxEMAData, length)
ZLEMA
ZLEMA = Zlema_Func(src, length)
Tsf_Func(src, length) =>
lrc = ta.linreg(src, length, 0)
lrc1 = ta.linreg(src, length, 1)
lrs = lrc - lrc1
TSF = ta.linreg(src, length, 0) + lrs
TSF
TSF = Tsf_Func(src, length)
HMA = ta.wma(2 * ta.wma(src, length / 2) - ta.wma(src, length), math.round(math.sqrt(length)))
Var_Funcl(srcl, length) =>
valphal = 2 / (length + 1)
vud1l = srcl > srcl[1] ? srcl - srcl[1] : 0
vdd1l = srcl < srcl[1] ? srcl[1] - srcl : 0
vUDl = math.sum(vud1l, 9)
vDDl = math.sum(vdd1l, 9)
vCMOl = nz((vUDl - vDDl) / (vUDl + vDDl))
VARl = 0.0
VARl := nz(valphal * math.abs(vCMOl) * srcl) + (1 - valphal * math.abs(vCMOl)) * nz(VARl[1])
VARl
VARl = Var_Funcl(srcl, length)
DEMAl = 2 * ta.ema(srcl, length) - ta.ema(ta.ema(srcl, length), length)
Wwma_Funcl(srcl, length) =>
wwalphal = 1 / length
WWMAl = 0.0
WWMAl := wwalphal * srcl + (1 - wwalphal) * nz(WWMAl[1])
WWMAl
WWMAl = Wwma_Funcl(srcl, length)
Zlema_Funcl(srcl, length) =>
zxLagl = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2
zxEMADatal = srcl + srcl - srcl[zxLagl]
ZLEMAl = ta.ema(zxEMADatal, length)
ZLEMAl
ZLEMAl = Zlema_Funcl(srcl, length)
Tsf_Funcl(srcl, length) =>
lrcl = ta.linreg(srcl, length, 0)
lrc1l = ta.linreg(srcl, length, 1)
lrsl = lrcl - lrc1l
TSFl = ta.linreg(srcl, length, 0) + lrsl
TSFl
TSFl = Tsf_Funcl(srcl, length)
HMAl = ta.wma(2 * ta.wma(srcl, length / 2) - ta.wma(srcl, length), math.round(math.sqrt(length)))
getMA(src, length) =>
ma = 0.0
if mav == 'SMA'
ma := ta.sma(src, length)
ma
if mav == 'EMA'
ma := ta.ema(src, length)
ma
if mav == 'WMA'
ma := ta.wma(src, length)
ma
if mav == 'DEMA'
ma := DEMA
ma
if mav == 'TMA'
ma := ta.sma(ta.sma(src, math.ceil(length / 2)), math.floor(length / 2) + 1)
ma
if mav == 'VAR'
ma := VAR
ma
if mav == 'WWMA'
ma := WWMA
ma
if mav == 'ZLEMA'
ma := ZLEMA
ma
if mav == 'TSF'
ma := TSF
ma
if mav == 'HULL'
ma := HMA
ma
ma
getMAl(srcl, length) =>
mal = 0.0
if mav == 'SMA'
mal := ta.sma(srcl, length)
mal
if mav == 'EMA'
mal := ta.ema(srcl, length)
mal
if mav == 'WMA'
mal := ta.wma(srcl, length)
mal
if mav == 'DEMA'
mal := DEMAl
mal
if mav == 'TMA'
mal := ta.sma(ta.sma(srcl, math.ceil(length / 2)), math.floor(length / 2) + 1)
mal
if mav == 'VAR'
mal := VARl
mal
if mav == 'WWMA'
mal := WWMAl
mal
if mav == 'ZLEMA'
mal := ZLEMAl
mal
if mav == 'TSF'
mal := TSFl
mal
if mav == 'HULL'
mal := HMAl
mal
mal
MAvg = getMA(src, length)
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir == 1 ? longStop : shortStop
HOTT = MAvg > MT ? MT * (200 + percent) / 200 : MT * (200 - percent) / 200
HOTTC = color.blue
MAvgl = getMAl(srcl, length)
farkl = MAvgl * percent * 0.01
longStopl = MAvgl - farkl
longStopPrevl = nz(longStopl[1], longStopl)
longStopl := MAvgl > longStopPrevl ? math.max(longStopl, longStopPrevl) : longStopl
shortStopl = MAvgl + farkl
shortStopPrevl = nz(shortStopl[1], shortStopl)
shortStopl := MAvgl < shortStopPrevl ? math.min(shortStopl, shortStopPrevl) : shortStopl
dirl = 1
dirl := nz(dirl[1], dirl)
dirl := dirl == -1 and MAvgl > shortStopPrevl ? 1 : dirl == 1 and MAvgl < longStopPrevl ? -1 : dirl
MTl = dirl == 1 ? longStopl : shortStopl
LOTT = MAvgl > MTl ? MTl * (200 + percent) / 200 : MTl * (200 - percent) / 200
LOTTC = color.red
HOTTLine = plot(nz(HOTT[2]), title='HOTT', color=color.new(HOTTC, 0), linewidth=2, style=plot.style_line)
LOTTLine = plot(nz(LOTT[2]), title='LOTT', color=color.new(LOTTC, 0), linewidth=2, style=plot.style_line)
FillColor = highlighting ? color.new(#9915FF, 80) : na
fill(HOTTLine, LOTTLine, title='Highligter', color=FillColor)
color1 = close > HOTT[2] ? #00FFFF : close < LOTT[2] ? #FF00FF : na
barcolor(color1)
alertcondition(ta.crossover(close, HOTT[2]), title='Price Crossover Alarm', message='PRICE OVER HOTT - BUY SIGNAL!')
alertcondition(ta.crossunder(close, LOTT[2]), title='Price Crossunder Alarm', message='PRICE UNDER LOTT - SELL SIGNAL!')
트레이딩뷰 지표입니다.
이미지처럼 두 선으로 만들어졌는데
예스로 가능할까요?
두 선만 나오게 해주세요.
2023-05-29
1382
글번호 169351