커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3393
글번호 230811
zeppelin 님에 의해서 삭제되었습니다.
2020-04-27
0
글번호 138400
답변완료
지표 수식전환
ADX와 DMI지표 관련 질문입니다.
먼저 DMI+ 색깔을 진한 빨강, DMI-색깔을 진한 파랑, ADX를 진한검정이라고 가정하에
<1>ADX 추세강도지표에 대한 대칭 지표를 반대쪽에 진한 회색으로 수식으로 표현부탁
<2>ADX 진한검정이 꺾일때(상승->하락)는 연한 검정으로 표현, 반대편에 진한 회색이 꺾일때(하락->상승)일때는 연한 회색으로 표현 부탁
<3>DMI+가 상승하다가 꺾일때(상승->하락)일때는 연한 빨강으로, DMI-가 상승하다가 꺾일때(하락->상승)일때는 연한 파랑으로 표현부탁드려요.
즉, ADX의 대칭 지표를 진한회색으로 부탁드리고, ADX, DMI의 본연의 색깔에서 0을 기준으로 위에서 꺾이든, 아래에서 꺾이든 추세전환이 나오면 색깔을 연한색으로 표현 부탁드립니다.
2020-04-27
1300
글번호 138386
답변완료
청산 수식 부탁드려요( 국내 주식)
지금 사용하고 있는 분할매수 일괄 청산 수식인데요...
분할매수는 유지하고 일괄 청산을 --> 분할 청산으로 하고 있습니다.
전체 매수 금액의 평균값에서
5% 수익시 25% 청산
10% 수익시 50% 청산
15% 수익시 75% 청산
20% 수익시 100% 청산
하는 분할 매수 청산 하는 수식을 반영부탁드릴께요..
사용하는 수식입니다.
참고로 분봉 매매입니다. 국내 주식
input : n(200),하락퍼센트(0.95),하락퍼센트률(0.05);
input : p(20),MFI값(70), MFI값하락률(5);
input : 전일대비하락률(0.5);
input : 매매수(300),금액1(10),금액2(20),금액3(30),금액4(100),금액5(200),금액6(200),금액7(300),금액8(300);
input : 일괄청산률(9);
var1 = highest(H,n);
var2 = mfi(P);
if stime < 143000 then
{
if MaxEntries < 매매수 and
c < var1*하락퍼센트 and
var2 < MFI값 and
c < o and
c <= c[1]*(100-전일대비하락률)/100 Then
buy("b1",OnClose,def,Floor(금액1*10000/c));
if MaxEntries < 매매수 and
c < var1*(하락퍼센트- 하락퍼센트률) and
var2 < (MFI값- MFI값하락률) and
c < o and
c <= c[1]*(99.4-전일대비하락률)/100 Then
buy("b2",OnClose,def,Floor(금액2*10000/c));
if MaxEntries < 매매수 and
c < var1*(하락퍼센트- 하락퍼센트률*2) and
var2 < (MFI값- MFI값하락률*2) and
c < o and
c <= c[1]*(100-전일대비하락률*2)/100 Then
buy("b3",OnClose,def,Floor(금액3*10000/c));
if MaxEntries < 매매수 and
c < var1*(하락퍼센트- 하락퍼센트률*3) and
var2 < (MFI값- MFI값하락률*3) and
c < o and
c <= c[1]*( 100-전일대비하락률*3)/100 Then
buy("b4",OnClose,def,Floor(금액4*10000/c));
if MaxEntries < 매매수 and
c < var1*(하락퍼센트- 하락퍼센트률*4) and
var2 < (MFI값- MFI값하락률*4) and
c < o and
c <= c[1]*( 100-전일대비하락률*4)/100 Then
buy("b5",OnClose,def,Floor(금액5*10000/c));
if MaxEntries < 매매수 and
c < var1*(하락퍼센트- 하락퍼센트률*5) and
var2 < (MFI값- MFI값하락률*5) and
c < o and
c <= c[1]*( 100-전일대비하락률*5)/100 Then
buy("b6",OnClose,def,Floor(금액6*10000/c));
if MaxEntries < 매매수 and
c < var1*(하락퍼센트- 하락퍼센트률*6) and
var2 < (MFI값- MFI값하락률*6) and
c < o and
c <= c[1]*( 100-전일대비하락률*6)/100 Then
buy("b7",OnClose,def,Floor(금액6*10000/c));
if MaxEntries < 매매수 and
c < var1*(하락퍼센트- 하락퍼센트률*7) and
var2 < (MFI값- MFI값하락률*7) and
c < o and
c <= c[1]*( 100-전일대비하락률*7)/100 Then
buy("b8",OnClose,def,Floor(금액6*10000/c));
ExitLong("bx",atlimit,AvgEntryPrice*(1+일괄청산률*0.01));
}
Else
SetStopProfittarget(0);
2020-04-27
1223
글번호 138385
임진사댁원장 님에 의해서 삭제되었습니다.
2020-04-27
0
글번호 138384
답변완료
장시작전과 휴일인 경우 과거값 조회 기준에 대하여
랭귀지와 스팟 모두에 대한 질문입니다.
장시작전에 조회하는 경우 날짜가 바뀌는 걸 인지하는 시간이 언제인가요?
1. 장마감후 ~ 00시
2. 00시 ~ 시스템 업데이트
3. 시스템 업데이트 ~ 9시 장시작전
4. 휴일인 경우
부탁드릴께요..
이 시간 변경 개념이 스팟과 랭귀지도 다르다고 하던데, 그것도 언급 부탁드립니다.
2020-04-27
1188
글번호 138382
답변완료
문의드립니다.
// INPUT VARIABLES FOR VORTEX:
vortexLen = input(30, title="Length for Vortex", minval=1)
emaLen = input(10, title="Length of Positive and Negative EMA's", type=input.integer, minval=1)
colorBars = input(true, title="Color Price Bars Based on Vortex?")
plotVLines = input(false, title="Plot VI+ and VI- Lines?")
// VORTEX CALCULATION:
//Returns positive and negative trendlines.
vortex(posSum, negSum, vLen)=>
tRange = sum(atr(1), vLen)
vmPlus = posSum / tRange
vmNeg = negSum / tRange
[vmPlus, vmNeg]
[vPlus, vNeg] = vortex(sum(abs(high - low[1]), vortexLen), sum(abs(low - high[1]), vortexLen), vortexLen)
plusEMA = ema(vPlus, emaLen)
negEMA = ema(vNeg, emaLen)
vDiff = abs(plusEMA - negEMA)
// PLOTTING:
var color vColor = na
vColor := plusEMA > negEMA and plusEMA >= plusEMA[1] ? #1b5e20 : plusEMA > negEMA and plusEMA < plusEMA[1] ? #a5d6a7 : negEMA >= plusEMA and negEMA > negEMA[1] ? #b71c1c : negEMA > plusEMA and negEMA < negEMA[1] ? #c76a72 : nz(vColor[1])
plot(vDiff, style=plot.style_histogram, color=vColor, linewidth=3, transp=0)
plot(plotVLines ? plusEMA : na, title="VI +", color=color.green, linewidth=2)
plot(plotVLines ? negEMA : na, title="VI -", color=color.red, linewidth=2)
barcolor(colorBars ? vColor : na)
항상 도움주심을 감사드립니다.
좋은 하루 되세요
2020-04-27
1406
글번호 138381
답변완료
지표문의
1.아래는 다이버전스가 생길때 추세선이 생기는 지표인데
첨부된 그림 1번. 2번.3번 지표는 낮고 지수는 높은데(또는 그반대)
추세선이 안 생겨요.
좀 수정 좀 해주세요
지표는 macd 오실레이터 입니다.
Input : shortPeriod(3), longPeriod(8), Period(9);
Var : MACDv2(0), MACDsig(0),macdosc(0) ;
MACDv2 = MACD(shortPeriod, longPeriod);
MACDsig = ema(MACDv2,Period);
macdosc = MACDv2-ema(MACDv2,Period);
Var : T(0);
var : HIV(0),HID(0),HIT(0),HIV1(0),HID1(0),HIT1(0),HI(0),HI1(0);
var : HPV(0),HPD(0),HPT(0),HPV1(0),HPD1(0),HPT1(0);
var : LIV(0),LID(0),LIT(0),LIV1(0),LID1(0),LIT1(0),LI(0),LI1(0);
var : LPV(0),LPD(0),LPT(0),LPV1(0),LPD1(0),LPT1(0);
var : TL1(0),TL2(0),TX1(0),TX2(0),TX3(0);
var : TL3(0),TL4(0),TL5(0),i1(0),i2(0);
if crossup(macdosc,0) Then
{
T = 1;
HIV = H;
HID = sdate;
HIT = stime;
HI = Index;
HIV1 = HIV[1];
HID1 = HID[1];
HIT1 = HIT[1];
HPV = H;
HPD = sdate;
HPT = stime;
HI1 = HI[1];
HPV1 = HPV[1];
HPD1 = HPD[1];
HPT1 = HPT[1];
Condition1 = false;
}
if CrossDown(macdosc,0) Then
{
T = -1;
LIV = L;
LID = sdate;
LIT = stime;
LI = Index;
LIV1 = LIV[1];
LID1 = LID[1];
LIT1 = LIT[1];
LPV = L;
LPD = sdate;
LPT = stime;
LI1 = LI[1];
LPV1 = LPV[1];
LPD1 = LPD[1];
LPT1 = LPT[1];
Condition2 = false;
}
if T == 1 Then
{
if H > HIV Then
{
HIV = macdosc;
HID = sdate;
HIT = stime;
}
if H > HPV Then
{
HPV = H;
HPD = sdate;
HPT = stime;
}
if Condition1 == false and HPV1 > 0 and HPV > HPV1 and HIV < HIV1 and HI <= HI1+30 Then
{
TL1 = TL_New(HPD1,HPT1,HPV1,HPD,HPT,HPV);
//TL2 = TL_New_Self(HID1,HIT1,HIV1,HID,HIT,HIV);
TL_SetColor(TL1,WHITE);
TL_SetColor(TL2,WHITE);
//tx1 = Text_New(HPD1,HPT1,HPV1,NumToStr(HPV1,2));
//tx2 = Text_New(HPD,HPT,HPV,NumToStr(HPV,2));
//tx3 = Text_New(HPD,HPT,(HPV1+HPV)/2,NumToStr((HPV1+HPV)/2,2));
Text_SetStyle(tx1,2,1);
Text_SetStyle(tx2,2,1);
//TL3 = TL_New(HPD1,HPT1,HPV1,sdate,stime,HPV1);
//TL4 = TL_New(HPD1,HPT1,HPV,HPD,HPT,HPV);
//TL5 = TL_New(HPD1,HPT1,(HPV1+HPV)/2,HPD,HPT,(HPV1+HPV)/2);
Condition1 = true;
}
if Condition1 == true then
{
if HPV > HPV1 and HIV < HIV1 then
{
TL_SetEnd(TL1,HPD,HPT,HPV);
TL_SetEnd(TL2,HID,HIT,HIV);
Text_SetLocation(tx2,HPD,HPT,HPV);
Text_SetString(tx2,NumToStr(HPV,2));
i1 = index;
}
Else
{
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
Text_Delete(tx1);
Text_Delete(tx2);
}
}
}
if T == -1 Then
{
if L < LIV Then
{
LIV = macdosc;
LID = sdate;
LIT = stime;
}
if L < LPV Then
{
LPV = L;
LPD = sdate;
LPT = stime;
}
if Condition2 == false and LPV1 > 0 and LPV < LPV1 and LIV > LIV1 and LI <= LI1+30 Then
{
TL1 = TL_New(LPD1,LPT1,LPV1,LPD,LPT,LPV);
//TL2 = TL_New_Self(LID1,LIT1,LIV1,LID,LIT,LIV);
TL_SetColor(TL1,WHITE);
TL_SetColor(TL2,WHITE);
//tx1 = Text_New(LPD1,LPT1,LPV1,NumToStr(LPV1,2));
//tx2 = Text_New(LPD,LPT,LPV,NumToStr(LPV,2));
//tx3 = Text_New(LPD,LPT,(LPV1+LPV)/2,NumToStr((LPV1+LPV)/2,2));
Text_SetStyle(tx1,2,1);
Text_SetStyle(tx2,2,1);
//TL3 = TL_New(LPD1,LPT1,LPV1,sdate,stime,LPV1);
//TL4 = TL_New(LPD1,LPT1,LPV,LPD,LPT,LPV);
//TL5 = TL_New(LPD1,LPT1,(LPV1+LPV)/2,LPD,LPT,(LPV1+LPV)/2);
Condition2 = true;
}
if Condition2 == true then
{
if LPV < LPV1 and LIV > LIV1 then
{
TL_SetEnd(TL1,LPD,LPT,LPV);
TL_SetEnd(TL2,LID,LIT,LIV);
Text_SetLocation(tx2,LPD,LPT,LPV);
Text_SetString(tx2,NumToStr(LPV,2));
i2 = index;
}
Else
{
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
Text_Delete(tx1);
Text_Delete(tx2);
}
}
}
if index > i1 and index <= i1+3 Then
{
TL_SetEnd(tl3,sdate,stime,TL_GetValue(tl3,sdate,stime));
TL_SetEnd(tl4,sdate,stime,TL_GetValue(tl4,sdate,stime));
TL_SetEnd(tl5,sdate,stime,TL_GetValue(tl5,sdate,stime));
}
if index > i2 and index <= i2+3 Then
{
TL_SetEnd(tl3,sdate,stime,TL_GetValue(tl3,sdate,stime));
TL_SetEnd(tl4,sdate,stime,TL_GetValue(tl4,sdate,stime));
TL_SetEnd(tl5,sdate,stime,TL_GetValue(tl5,sdate,stime));
}
#=================
if macdosc > 0 then
{
plot1(macdosc, "MACDOscillator+");
Plot2(0, "MACDOscillator-");
}
else
{
Plot1(0, "MACDOscillator+");
Plot2(macdosc, "MACDOscillator-");
}
2020-04-27
1475
글번호 138379
답변완료
문의
1. 아래는 ATR 추적청산 관련하여 2010년 이전 답변입니다. 해석 부탁드립니다.
2. 최근에 사용하는 예제가 있다면 수식과 해석 부탁드립니다.
3. 예스트레이더를 사용한 대학원논문에서 시스템포트폴리오분석시 시스템간 상관계수를 비교
하던데(예를 들어 일간 수익률이라면서 더 이상 설명은 없고) 어떤 것을,
어떤 식을 사용하여 상관계수를 산출하는지 알려주세요
**********************************************************************************
Input : AtrMult(5.0);
Var : PosHigh(0), PosLow(0);
PosHigh = Highest(H,BarsSinceEntry+1);
PosLow = Lowest(L,BarsSinceEntry+1);
If MarketPosition <> 0 Then {
exitlong("EL_추적ATR",Atstop,PosHigh-ATR(20)*AtrMult);
exitshort("ES_추적ATR",Atstop,PosLow+ATR(20)*AtrMult);
}
### ATR Trailing LX(매수청산)###
Inputs: ATRs(3);
Variables: PosHigh(0), ATRVal(0);
ATRVal = ATR(10) * ATRs;
If BarsSinceEntry() == 0 Then
PosHigh = High;
If MarketPosition() == 1 Then Begin
If High > PosHigh Then
PosHigh = High;
ExitLong ("ATR", AtStop, PosHigh - ATRVal);
End
else
ExitLong ("ATR eb", AtStop, High - ATRVal);
### ATR Trailing SX(매도청산)###
Inputs: ATRs(3);
Variables: PosLow(0), ATRVal(0);
ATRVal = ATR(10) * ATRs;
If BarsSinceEntry() == 0 Then
PosLow = Low;
If MarketPosition() == -1 Then Begin
If Low < PosLow Then
PosLow = Low;
ExitShort ("ATR", AtStop, PosLow + ATRVal);
End
else
ExitShort ("ATR eb", AtStop, Low + ATRVal);
2020-04-27
1299
글번호 138378
답변완료
서식 부탁드립니다
항상 도움에 감사드립니다
서식 작성이 생각대로 되지 않아 부탁 드립니다
매수후 청산 조건입니다
ㅇ청산조건 (data 2)
data2 에서
1 당일 최고가 대비 1,000원 하락하거나
2 또는 매수매도잔량 대비 1,000개 하락하면 청산
if dayhagh(data2(c)) < data2(c) - 1000 or
dayhagh(data2(bids-asks)) < data2(bids-asks) - 1000 then
buy(매도);
2020-04-27
1262
글번호 138377