커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7475
글번호 230811
답변완료
식변경 부탁드립니다(피라미딩)
수고하십니다..
39846번에 문의한 것과 관련해서 아래식을 이용해서 data2로 선물을 기준으로 해서
풋옵션을 거래할려고 하는데 작동이 잘 안되네요..
식 변경 부탁드립니다..
--------------------------------------------------------------
var:피봇(0),저항1(0),저항2(0),지지1(0),지지2(0),
ilmok1(0), ilmok2(0), ilmok3(0), sunhang1(0), sunhang2(0),
emaV(0),중기(0),중장기(0),장기(0), MacdV(0), MacdS(0), MacdOsc(0),
LemaV(0), LmacdV(0), LmacdS(0), LmacdOsc(0),adxv(0),atrv(0),atrstop(0),cnt(0),posHigh(0), posLow(0);
피봇 = (DayHigh(1)+daylow(1)+dayclose(1))/3 ;
저항1 = 2 * 피봇 - daylow(1);
저항2 = 피봇 + DayHigh(1)-DayLow(1);
지지1 = 2 * 피봇 - DayHigh(1);
지지2 = 피봇 - DayHigh(1) + DayLow(1);
중기=ema(c,15);
중장기=ema(c,30);
장기=ema(c,400);
adxv=adx(20);
atrv=atr(10);
atrstop=iff(adxv>25 and adxv>adxv[1],atrv*2,atrv*10);
var1 = Highest(h,BarsSinceEntry+1);
var2 = Lowest(L,BarsSinceEntry+1);
#1 macd + ema
emaV = ema(C,300);
MacdV = macd(20,76);
MacdS = ema(MacdV,190);
MacdOsc = MacdV-MacdS;
#2 #1을 다시 변형
LemaV = ema(C,300*1.8);
LmacdV = macd(20*1.8,76*1.8);
LmacdS = ema(MacdV*1.8,190*1.8);
LmacdOsc = (LmacdV-LmacdS)*1.8;
If sTime>=091500 and CrossDown(C,지지2) then {
if MarketPosition == 0 or (MarketPosition == -1 and C <= LatestEntryPrice(0)-1) Then
Sell("사번sell");
}
if stime>=092000 and CrossDown(c, 저항1) then {
if MarketPosition == 0 or (MarketPosition == -1 and C <= LatestEntryPrice(0)-1) Then
Sell("이번sell");
}
if IsEntryName("사번sell") Then
{ ExitShort("사번atrES",AtStop, Var2+ATRstop);
if CrossUp(c,중기) then ExitShort("사번2ES");
}
if IsEntryName("이번sell") then {
ExitShort("이번atrES", AtStop, Var2+ATRstop);
If CrossUp(c,피봇)and c<EntryPrice then ExitShort("이번2es");
}
ilmok1 = (highest(H,15)+lowest(L,15))/2;
ilmok2 = (highest(H,15*3)+lowest(L,15*3))/2;
ilmok3 = (highest(H,15*3*2)+lowest(L,15*3*2))/2;
sunhang1 = (ilmok1+ilmok2)/2 ;// "선행스팬1"
sunhang2 = ilmok3; // "선행스팬2"
if dayindex() == 23+1 then {
if accumN(iff( C < min(sunhang1, sunhang2),1,0), 14) == 14 then {
if MarketPosition == 0 or (MarketPosition == -1 and C <= LatestEntryPrice(0)-1) Then
sell("육번Sell");
}
}
if isEntryname("육번Sell") then {
if CrossUp(C, min(sunhang1, sunhang2)) Then exitshort("육번es1");
if MarketPosition == -1 then ExitShort("6익절", atlimit, EntryPrice-4);
}
if CrossDown(ema(c,30), ema(c,580)) then {
if MarketPosition == 0 or (MarketPosition == -1 and C <= LatestEntryPrice(0)-1) Then
sell("팔번Sell");
}
if IsEntryName("팔번Sell") Then {
ExitShort("팔번atres",AtStop, Var2+ATRstop);}
# 매도진입
If stime >=090500 and LemaV < LemaV[1] then {
if Crossdown(C, emaV) Then{
if MarketPosition == 0 or (MarketPosition == -1 and C <= LatestEntryPrice(0)-1) Then
sell("십번sell");
}
}
if IsEntryName("십번sell") Then
{ExitShort("십번atres",AtStop, Var2+ATRstop);
}
SetStopLoss(0.6,PointStop);
SetStopEndofday(144200);
2015-01-10
193
글번호 82125
답변완료
수식 문의 드립니다.
안녕하세요.
수식 작성 공부 중인에 막히는 부분이 있어서 문의드립니다.
제일모직, 20150109, 1분봉으로 설정했습니다.
제 생각에는 5% 익절 부분에서 수량을 50%로 설정했으니까 14주만 익절하고
8%에서 6주, 12%에서 8주가 익절되는게 맞는 것 같은데
실제로는 다르게 나오는데 틀린 부분 수정 부탁드리겠습니다.
그리고 위에서 처럼 수량 * 0.3 이런 식으로 설정하면 소수점이 발생할 수도 있는데
(예를 들어 수량이 15주 있으면 15*0.3=4.5)
이럴 경우에 몇 주가 잡히게 되는지가 궁금합니다.
감사합니다.
--------------------------------------------------------------
input : 오늘(20150109), 아홉시(90000), 진입가격(0), X(3), TsVal1(3), TsVal2(2),
range_H(dayclose(1)*1.01),range_L(dayclose(1)*0.99);
var : Hval(0), Lval(0),priceB01(0),priceB02(0),priceB03(0),priceB04(0),priceS01(0),priceS02(0),priceS03(0),priceS04(0),
final_volume(0), mid_volume(0),수량1(0), 수량2(0),조건1(0), 조건2(0), e_no(0),
H1(0),L1(0),H2(0),L2(0),H3(0),L3(0);
수량1= 2000000/dayclose(1);
수량2= 2000000/dayclose(1)*0.5;
If MarketPosition == 1 and H>H1 Then {
H1=H;
}
If MarketPosition == 1 and L<L1 Then {
L1=L;
}
if stime >=150000 then {
H1=0;
L1=0;
final_volume=0;
mid_volume=0;
}
/*-----시장가 진입------*/
if DayOpen(0)<=DayClose(1)*1.04 and DayOpen(0)>=DayClose(1)*0.97 and sdate == 오늘 and CurrentEntries==0 and 조건2==0 then {
buy("1",AtLimit,c*1.02,수량1);
final_volume = final_volume + 수량1;
조건1=1;
H1=H;
L1=L;
}
if MarketPosition == 1 and L <= AvgEntryPrice*0.975 and CurrentEntries==1 and 조건2==0 then {
buy("2",AtLimit,c*1.02,수량1);
final_volume = final_volume + 수량1;
조건1=1;
H1=H;
L1=L;
}
If MarketPosition == 1 and L <= AvgEntryPrice * 0.97 Then {
ExitLong("3%손절");
조건1=2;
조건2=1;
H1=H;
L1=L;
}
If MarketPosition == 1 and H >= AvgEntryPrice * 1.05 Then {
mid_volume = final_volume *0.5;
ExitLong("5%익절",Atlimit,C * 0.99,"",mid_volume,1);
final_volume = final_volume -mid_volume;
조건1=2;
조건2=1;
H1=H;
L1=L;
}
If MarketPosition == 1 and H >= AvgEntryPrice * 1.08 Then {
mid_volume = final_volume *0.4;
ExitLong("8%익절",AtStop,c*0.99,"",mid_volume,1);
final_volume = final_volume -mid_volume;
조건1=2;
조건2=1;
H1=H;
L1=L;
}
If MarketPosition == 1 and H >= AvgEntryPrice * 1.12 Then {
ExitLong("12%익절");
조건1=2;
조건2=1;
H1=H;
L1=L;
}
SetStopTrailing(4,6,PercentStop,1);
/*
If MarketPosition == 1 and H >= AvgEntryPrice * 1.05 and L1<H1*0.97 Then {
ExitLong("5% trailingstop 익절");
조건2=1;
H1=H;
L1=L;
}
*/
2015-01-10
180
글번호 82124
안녕하세요
안녕하세요
지표식 문의드립니다
차트 상에
1). 0 0 시 0 0 분일 때 ( 0 0 시 0 0 분)을 표시하는
2). 2 0 시 3 0 분일 때 ( 2 0 시 3 0 분)을 표시하는
지표식을 부탁 드립니다
감사합니다
수고하세요
2015-01-10
130
글번호 82123
금보 님에 의해서 삭제되었습니다.
2015-01-10
0
글번호 82122
답변완료
지표식 부탁드립니다
종가가 5이평선 최초 돌파시에 캔들하단에 빨강화살표를
표시하고 종가가 3이평선을 최초 이탈시 캔들상단에 파랑화살표를
표시하고 시가가 전봉종가보다 2.5%이상 갭상승하면 캔들하단에 보라화살표를
표시하고 시가가 전봉종가보다 2.5%이상 갭하락하면 캔들상단에 초록화살표를
표시하는 지표식입니다.빨강과 보라가 겹칠경우 빨강화살표 하단에 보라색화살표를
표시하거나 불가하면 노랑화살표로 표시하고 파랑과 초록이 겹칠경우 파랑화살표위에 초록색화살표를
표시하거나 불가하면 연두화살표로 표시부탁드립니다
감사합니다
2015-01-10
179
글번호 82121
관리자에 의해 프로그램 사용법 QnA로 이동되었습니다
2015-01-09
7
글번호 82119
답변완료
참조 data2에 TEXT 표시하는 수식 부탁드립니다
안녕하세요
차트에서 TEXT 표시에 대하여 문의 드립니다
첨부한 그림1의 CaLL 차트는 <프로그램1>>을 실행한것으로 옵션기준선아래 "기준가" 표시가 정상으로 표시되는데,
그림2 에서는 참조Data2의 PUTT 차트에 <프로그램2>를 실행하면 PUT차트의 기준선 밑에 "기준가" 가 나타나지 않고 위의 CaLL차트에 "기준가" 글자가 겹쳐서 나나납니다
data2 PUT 차트에도 기준선 밑에 "기준가" 표시가 나타나는 수식을 부탁드립니다
감사합니다
//=========================================================
<프로그램 1>
//옵션-기준가
var : va2(0), va3(0), cond(false), ndate(0);
va2 = date - int(date/100)*100;
va3 = DayOfWeek(date);
if va2 >= 8 and va2 <= 14 and va3 == 4 then
cond = true;
Else
cond = false;
if (cond == false and cond[1] == true) or (data1(index ==0)) Then{
ndate = sdate;
}
if sdate == ndate Then
var1= daylow; //옵션기준가(var1)==>당월물첫날(금요일)저가
plot1(var1, "기준가");
//--------------------TEXT 표시----------------------------
var : tx1(0);
text_delete(tx1);
tx1= text_new(sdate, stime, var1, "기준가");
//==========================================================================
<프로그램2>
//옵션-기준가-date2
var : va2(0), va3(0), cond(false), ndate(0);
//var1 = sdate; var2 =stime;
va2 = date - int(date/100)*100;
va3 = DayOfWeek(date);
if va2 >= 8 and va2 <= 14 and va3 == 4 then
cond = true;
Else
cond = false;
if (cond == false and cond[1] == true) or (data2(index ==0)) Then{
ndate = sdate;
}
if sdate == ndate Then var11 = data2(daylow); //옵션기준가(var11)==>당월물첫날(금요일)저가
plot11(var11, "기준가");
//--------------------TEXT 표시----------------------------
var : tx11(0);
text_delete(tx11);
tx11= text_new(sdate, stime, var11, "기준가");
2015-01-09
207
글번호 82118
답변완료
시스템 수식 수정 요청합니다.
var : Entry(0);
if date != date[1] Then
Entry = 0;
if CurrentContracts > CurrentContracts[1] Then
Entry = Entry+1;
if stime == 150000 Then{
if NextBarOpen <= C Then
buy("매수1",AtStop,C);
if NextBarOpen > C Then
buy("매수2",AtLimit,C);
}
if Entry == 0 Then{
if DayOpen < DayClose(1) Then{
buy("매수11",AtStop,min(DayOpen,DayLow*1.02));
}
if dayopen > DayClose(1) Then
buy("매수22",AtLimit,min(DayClose(1),DayClose(1)*1.01));
}
SetStopLoss(3,PercentStop);
if MarketPosition == 1 Then
ExitLong("매도",AtStop,highest(H,BarsSinceEntry)*0.95);
var1 = ma(c,20);
var2 = ma(c,60);
var3 = ma(C,120);
Condition1 = c < var3 and var1 < var2;
if MarketPosition == 1 and Condition1 == true and Condition1[1] == false Then
ExitLong("매도1");
위 수식처럼 익일 추가 매수진입 가능한 수식에서 추가로 매수조건과 매도조건을 아래와 같이 수정을 요청합니다. 부탁드릴께요.
- 아 래 -
매수조건
시초가 이후 처음 발생하는 Stochastic(20,12,12) GoldenCross
매도조건
1.매수가 대비 +5%에서 익절
2.주가가 120이평을 하향이탈하고 20이평과 60이평이 DeadCross 또는 역배열되는 두조건이 모두 만족하는 경우
익절조건
최고가 대비 -5%
손절조건
매수가 대비 -3%
2015-01-09
176
글번호 82117
답변완료
부탁드립니다.
39854관련입니다.
스토캐스틱(12,5,5) 다이버전스 매매
1.당일에 한정하지 않구요.
2. 스토파동은 K가 반드시 50우아래로 갔다왔어야 한 파동으로 봄
가격의 저점비교,고점비교는 스토파동을 기준으로 최저점 또는 최고점끼리 비교
매수조건 : 가격파동은 저점이 낮아졌는데 스토파동이 저점을 높이고(앞번파동 스토는 K의 저점이 20보다 작았어야 함. 지금 파동은 전파동보다 저점이 높으면 됨) K가 D를 크로스업할 때
매수청산조건 : K가 80을 뚫고 나서 아래로 꺾일 때 또는 90을 크로스업할 때
매도조건 : 가격파동은 고점이 높아졌는데 스토파동이 고점을 낮추고(앞번파동 스토는 K의 고점이 80보다 컸어야 함. 지금 파동은 전파동보다 고점이 낮으면 됨) K가 D를 크로스다운할 때
매도청산조건 : K가 20을 붕괴하고 나서 위로 꺾일 때 또는 10을 크로스다운할 때
부탁드립니다.
2015-01-09
190
글번호 82113