커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1542
글번호 230811
답변완료
질문드립니다!
손절을 분할로 손절하게 해주세요
진입은 100선>=200선
매도는 플러스 5퍼일때 전량매도
손절은 예를들어
진입가대비 -1퍼일때 전체 비중의 30퍼
진입가대비 -2퍼일때 전체 비중의 30퍼
진입가대비 -3퍼일때 전체 비중의 40퍼
이렇게 되도록 부탁드립니다.
단 손절 비중의 퍼센트는 input에서 설정가능 하도록 부탁드립니다.
2023-04-08
1022
글번호 168018
답변완료
문의 드립니다!
안녕하세요!
첨부수식에서 아래와같은 조건이 만족시 다음과같은 지표가 발생토록 수정 부탁드립니다
<조 건>
1, plot1 이 data1과 data2를 만났을 경우와
2, plot2 가 data1과 data2를 만났을때 경우에 각각 아래의 지표가 발생토록 부탁드립니다
1, 우선 plot1과 plot2선의 시초 발생시점을 N봉후에 발생되도록 수정(예:장시작후 2번째 봉부터 가로선이 발생)
2, 위의 <조건>이 만족시 각각 세로선과 알람신호가 동시에 발생토록 수정
* 이 세로선과 알람신호도 N봉전(예;3봉전)에 발생 가능토록 하여주시고
* 세로선은 두께와 색상지정이 가능토록 부탁합니다
감사합니다!
------------------------------------------------------------------------------
var : TL1(0,data1),TL2(0,data1),TL3(0,data1),TL4(0,data1);
var : diff(0,data1),hh(0,data1),ll(0,data1);
diff = data1(c)-data2(c);
if bdate != bdate[1] Then
{
hh = diff;
ll = diff;
TL_Delete(TL1);
TL_Delete(TL2);
TL1 = TL_New(sdate,stime,H,NextBarSdate,NextBarStime,H);
TL2 = TL_New(sdate,stime,L,NextBarSdate,NextBarStime,L);
TL_Delete(TL3);
TL_Delete(TL4);
TL3 = TL_New(sdate,stime,H,Sdate,Stime,H);
TL4 = TL_New(sdate,stime,L,Sdate,Stime,L);
}
else
{
if diff > hh Then
{
hh = diff;
TL_SetBegin(TL3,sdate,stime,TL_GetValue(TL1,sdate,stime));
TL_Setend(TL3,NextBarSdate,NextBarStime,TL_GetValue(TL1,sdate,stime));
TL_SetBegin(TL1,sdate,stime,h);
TL_Setend(TL1,NextBarSdate,NextBarStime,h);
}
if diff < ll Then
{
ll = diff;
TL_SetBegin(TL4,sdate,stime,TL_GetValue(TL2,sdate,stime));
TL_Setend(TL4,NextBarSdate,NextBarStime,TL_GetValue(TL2,sdate,stime));
TL_SetBegin(TL2,sdate,stime,l);
TL_Setend(TL2,NextBarSdate,NextBarStime,l);
}
}
plot1(hh,"최고건수차",Magenta);
plot2(ll,"최저건수차",Magenta);
2023-04-08
1103
글번호 168017
러블리 님에 의해서 삭제되었습니다.
2023-04-07
12
글번호 168016
답변완료
시스템식 부탁드립니다.
항상 도움 주셔서 감사합니다.
질문사항
시스템식에서 주문함수 exitlong(),exitshort()와
SetStopProfittarget()와 Setstoploss()를 같이 사용하고 싶습니다.
보통 주문청산을 사용할때는 exitlong(),exitshort()를 중간에 주문청산시 사용하고
코딩 맨 마지막에는 SetStopProfittarget()와 Setstoploss()를 사용합니다.
저는 SetStopProfittarget()와 Setstoploss()를 중간에도 사용하고
필요시 2번 이상도 사용하고 싶습니다.
그래서 아래와 같이 코딩해 보았는데 잘 되지 않는것 같습니다.
도움 부탁드립니다.
input : 틱사이즈(0.01) ;
var : 이평(0) ;
이평 = ma(C,20) ;
f marketposition == 0 and C > 이평 then
{
Buy("b1",OnClose,DEf,amt);
매수가격 = EntryPrice(0) ;
}
if MarketPosition == 1 Then
{
if MaxEntries(0) == 1 then
Buy("b2",AtLimit,매수가격-10*pricescal*MaxEntries,1);
if MaxEntries(0) == 2 Then
Buy("b3",AtLimit,매수가격-10*pricescal*MaxEntries,1);
if MaxEntries(0) == 3 Then
Buy("b4",AtLimit,매수가격-10*pricescal*MaxEntries,1);
if MaxEntries(0) == 4 Then
Buy("b5",AtLimit,매수가격-10*pricescal*MaxEntries,1);
if MaxEntries(0) == 5 Then
Buy("b6",AtLimit,매수가격-10*pricescal*MaxEntries,1);
# 청산 1
Exitlong("BP",AtLimit,AvgEntryPrice+10*PriceScale) ;
# 청산 2
if OpenPositionProfit/틱사이즈 > 10*PriceScale Then
ExitLong("bx",AtLimit,c+10*PriceScale);
# 청산 3-1
if MaxEntries() >= 3 Then
SetStopProfittarget(10*PriceScale,PointStop);
Else
SetStopProfittarget(0);
# 청산 3-2
if MaxEntries() < 3 Then
SetStopProfittarget(10*PriceScale,PointStop);
Else
SetStopProfittarget(0);
}
# 청산 4
SetStopProfittarget(50*PriceScale,PointStop);
위와 같이 청산 코딩을 4개로 할 경우 문제(청산이 안되거나)가 되는 부분이나
논리적으로 잘못된 부분이 있으시면 수정 부탁드립니다.
제가 하고자 하는 청산은 아래와 같습니다.
청산 1 : 가격이 하락하여 다계약 진입한 경우 진입 평균가보다 10틱 위에서 청산
청산 2 : 가격이 하락하여 다계약 진입한 경우 다계약의 현재 포지션 총수익 10틱 이상인 경우 현재가에서 10틱 위에서 청산
청산 3 : 총 3회 이상 진입한 경우 3번째 진입부터는 10틱 이상 수익시 개별 청산
3회 미만은 평균가보다 10틱 이상 또는현재 총수익이 10틱 이상인 경우 청산
또는
총 3회 미만 진입한 경우는 10틱 이상 수익시 개별 청산하고
3회 이상부터는 평균가 보다 10틱 이상 또는 총수익이 10틱 이상인 경우 청산
청산 4 : 1계약 진입후 가격이 지속 상승한 경우 50틱에서 청산(익절)
도움 부탁드립니다.
감사합니다.
2023-04-07
1488
글번호 168015
답변완료
수익차트(기간별 누적수익) - 81606 답변 수정요청
81606 지표식 보완 부탁 드립니다.
누적수익이 답변주신 지표와 전혀 일치하지 안네요.
예스글러벌 시스템성능보고서의 수익차트그래프(기간별누적수익)와 같이
그래프 상 정확히 반영 되도록 지표 식을 작성해 주시면 감사드립니다.
그리고 No1 식은 하나의 var2 곡선 뿐 입니다. 참조 바랍니다.
2023-04-07
2008
글번호 168010
답변완료
문의 드립니다.
매매을 원하는 시간을 지정할 수 있도록 추가 부탁드립니다.
var1 = BollBandUp(20,2);
Var2 = BollBandDown(20,2);
if CrossUp(c,var1) and C > (DayHigh+DayLow)/2 Then
Buy();
if CrossDown(c,var1) Then
ExitLong();
if CrossDown(c,var2) and C < (DayHigh+DayLow)/2 Then
Sell();
if CrossUp(c,var2) Then
ExitShort();
2023-04-07
2261
글번호 168004
답변완료
트렌드 쌍바닥 시간대
inputs: ATRLength(15), Strength(20);
input : 쌍바닥상(2),쌍바닥하(2);
var : STrend(0),ATRv(0), avgv(0), dnv(0), upv(0), trend(1), flag(0), flagh(0), ST(0),hl(0);
var : idx(0),hh(0),ll(0),EP1(0),EP2(0);
var : ema1(0),ema2(0),ema3(0),h1(0),l1(0);
Ep1 = 2/(ATRLength+1);
Ep2 = 2/(Strength+1);
idx = idx+1;
if idx < ATRLength Then
{
hh = DayHigh;
ll = daylow;
}
Else
{
hh = Highest(High, ATRLength);
ll = Lowest(Low, ATRLength);
}
if idx < Strength Then
{
h1 = DayHigh;
l1 = daylow;
}
Else
{
h1 = Highest(High, Strength);
l1 = Lowest(Low, Strength);
}
hl = hh-ll;
if idx == 1 Then
{
ema1 = hl;
ema2 = h;
ema3 = l;
}
Else
{
ema1 = hl * EP1 + ema1 * (1-EP1);
ema2 = h * EP2 + ema2 * (1-EP2);
ema3 = l * EP2 + ema3 * (1-EP2);
}
atrv = ema1;
avgv = (ema2+ema3)/2;
upv = avgv + ATRv;
dnv = avgv - ATRv;
if idx >= 2 then
{
if c > upv[1] and c > h1[1] then trend = 1;
else if c < dnv[1] and c < l1[1] then trend = -1;
if trend < 0 and trend[1] > 0 then flag=1; else flag=0;
if trend > 0 and trend[1] < 0 then flagh = 1; else flagh = 0;
if trend > 0 and dnv < dnv[1] then dnv=dnv[1];
if trend < 0 and upv > upv[1] then upv=upv[1];
if flag == 1 then upv = avgv + ATRv;
if flagh == 1 then dnv = avgv - ATRv;
if trend == 1 then ST = dnv; else ST = upv;
STrend = trend;
}
if Trend != Trend[1] Then
{
if Trend == 1 Then
{
var1 = h;
var2 = var1[1];
if st<dayhigh-0.7 and Var4 > 0 and var3 <= Var4+PriceScale*쌍바닥상 and var3 >= Var4-PriceScale*쌍바닥하 Then
{
Buy("b");
}
}
Else
{
Var3 = l;
Var4 = Var3[1];
}
}
Else
{
if Trend == 1 Then
{
if h > var1 Then
var1 = h;
}
if Trend == -1 Then
{
if l < var3 Then
var3 = l;
}
}
if MarketPosition == 1 and BarsSinceEntry == 1 Then
ExitLong("bx");
당일 고점 -0.7p 아래에서 매수 부분을, 시초부터 9시30분까지는 고점 관계없이 무조건 매수하고, 9시30분 이후부터만(장 종료시까지) 고점 -0.7p 아래에서 매수로 수정 부탁합니다.
2023-04-07
1474
글번호 168001
답변완료
수익차트(기간별 누적수익)
다음의 No1 식 No2 식의
각기 별도의 수익차트(기간별 누적수익) 지표식을 작성 해 주시면 감사 하겠습니다.
No1
Input : L2(0);
Var2 = LRL(c,L2);
Condition1 = var2[0] > Var2[1];
Condition2 = Var2[0] < Var2[1];
If Condition1 == Var2 Then Buy();
If Condition2 == Var2 Then Sell();
No2
input : L1(0),L2(0);
var1 = LRL(c,L1);
Var2 = LRL(c,L2);
Condition1 = Var2[0] > Var2[1];
Condition2 = Var2[0] < Var2[1];
If var1 > Var2 Then
If Condition1 == Var2 Then Buy();
If var1 < Var2 Then
If Condition2 == Var2 Then Sell();
2023-04-07
1409
글번호 167999
답변완료
수식 작성 문의
청산이후 최고가 대비 3%이상 하락후, 그 최저가 대비 1%이상 상승 돌파시 매수하도록 아래와 같이 수식을 작성하여 시뮬레이션했는데, 수식에 문제가 있는지 제대로 작동하지 않고 오랫동안 정지상태로 있다가 프로그램 종료됩니다. Var3의 값을 찾는데 어려움이 있는 것으로 보이는데, 수식을 수정하는데 도움을 주시면 고맙겠습니다.
Var1= Highest(H,BarsSinceExit(1));
Var2= NthHighestBar(1,H,BarsSinceExit(1));
Var3= Lowest(L,Var2);
If MarketPosition==0 and Var3<Var1*(1-0.03) and CrossUp(L,Var3*(1+0.01)) Then
Buy("매수",OnClose);
2023-04-07
1246
글번호 167995