커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4502
글번호 230811
답변완료
문의드립니다
20이평선 위에 가격이 있으면서 전고가 돌파 시 매수 청산은 전저점 이탈 시에 하고
20이평선 아래 가격이 있으면서 전저가 아래로 깨면 매도 청산은 전고가 돌파 시 한다.
아래 식에서 20이평선을 어떻게 접목하면 될까요. 추가식 좀 부탁드립니다.
IF H[1] < C
Then buy();
IF L[1] > C
Then Exitlong();
IF L[1] > C
Then sell();
IF H[1] < C
Then ExitShort();
2019-03-06
167
글번호 126770
답변완료
문의드립니다
20이평선 위에 가격이 있으면서 전고가 돌파 시 매수 청산은 전저점 이탈 시에 하고
20이평선 아래 가격이 있으면서 전저가 아래로 깨면 매도 청산은 전고가 돌파 시 한다.
아래 식에서 20이평선을 어떻게 접목하면 될까요. 추가식 좀 부탁드립니다.
IF H[1] < C
Then buy();
IF L[1] > C
Then Exitlong();
IF L[1] > C
Then sell();
IF H[1] < C
Then ExitShort();
2019-03-06
180
글번호 126769
답변완료
수식의뢰 드려요
안녕하세요!
첨부한 수식에 아래 내용을 추가하고 싶습니다!
부탁드립니다!
---------------------------------------------------------------------------
1. 전전일 고가
2. 전전일 저가
3. 기준가(옵션 만기날이후 다음날 최저가: 보통 기준가라고 하지요!)
4. 월고
5. 월저
---------------------------------------------------------------------------
input : 날짜변경시간(090000);
var : date0(0), date1(0), time0(0), time1(0);
var : HH(0),HH1(0), Hdate(0),Htime(0),Hdate1(0), Htime1(0), TX11(0), TX1(0);
var : LL(0),LL1(0), Ldate(0),Ltime(0),Ldate1(0), Ltime1(0), TX12(0), TX2(0);
var : OO(0),OO1(0), Odate(0),Otime(0),Odate1(0), Otime1(0), TX13(0), TX3(0);
var : MM(0),MM1(0), Mdate(0),Mtime(0),Mdate1(0), Mtime1(0), TX14(0), TX4(0);
if stime == 날짜변경시간 then {
date0 = sdate;
date1 = date0[1];
time0 = stime;
time1 = time0[1];
#전일고가
HH = H;
HH1 = HH[1];
TL_Delete(var11);
var11 = TL_New(date1, time1, HH1, date0, time0, HH1);
TL_SetExtRight(var11,true);
TL_SetColor(var11, red);
#전일저가
LL = L;
LL1 = LL[1];
TL_Delete(var12);
var12 = TL_New(date1, time1, LL1, date0, time0, LL1);
TL_SetExtRight(var12,true);
TL_SetColor(var12, blue);
#전일중심선
MM1 = (HH1+LL1)/2;
Mdate1 = Mdate[1];
Mtime1 = Mtime[1];
TL_Delete(var14);
var14 = TL_New(date1, time1, MM1, date0, time0, MM1);
TL_SetExtRight(var14,true);
TL_SetColor(var14, rgb(255,128,255));
#전일시가
OO = O;
OO1 = OO[1];
Odate1 = Odate[1];
Otime1 = Otime[1];
TL_Delete(var13);
var13 = TL_New(date1, time1, OO1, date0, time0, OO1);
TL_SetExtRight(var13,true);
TL_SetColor(var13, black);
#당일시가
TL_Delete(var3);
var3 = TL_New(sdate[1], stime[1], OO, date0, time0, OO);
TL_SetExtRight(var3,true);
TL_SetColor(var3, black);
Text_delete(TX11);
TX11 = Text_New(sdate, stime, HH1, "▶전일고가 : "+Numtostr(HH1,2));
Text_SetStyle(TX11, 0, 1);
Text_setColor(TX11, red);
Text_delete(TX12);
TX12 = Text_New(sdate, stime, LL1, "▶전일저가 : "+Numtostr(LL1,2));
Text_SetStyle(TX12, 0, 0);
Text_setColor(TX12, blue);
Text_delete(TX13);
TX13 = Text_New(sdate, stime, OO1, "▶전일시가 : "+Numtostr(OO1,2));
Text_SetStyle(TX13, 0, 0);
Text_setColor(TX13, black);
Text_delete(TX3);
TX3 = Text_New(sdate, stime, OO, "▶당일시가 : "+Numtostr(OO,2));
Text_SetStyle(TX3, 0, 0);
Text_setColor(TX3, black);
Text_delete(TX14);
TX14 = Text_New(sdate, stime, MM1, "▶전일중심 : "+Numtostr(MM1,2));
Text_SetStyle(TX14, 0, 0);
Text_setColor(TX14, rgb(255,128,255));
}
#당일고가
if stime <> 날짜변경시간 and H[1] >= HH then {
HH = H[1];
Hdate = sdate[1];
Htime = stime[1];
TL_Delete(var1);
var1 = TL_New(date0, time0, HH, sdate, stime, HH);
TL_SetExtRight(var1,true);
TL_SetColor(var1, red);
}
#당일저가
if stime <> 날짜변경시간 and L[1] <= LL then {
LL = L[1];
Ldate = sdate[1];
Ltime = stime[1];
TL_Delete(var2);
var2 = TL_New(date0, time0, LL, sdate, stime, LL);
TL_SetExtRight(var2,true);
TL_SetColor(var2, blue);
}
#당일중심
if stime <> 날짜변경시간 then {
MM = (HH+LL)/2;
TL_Delete(var4);
var4 = TL_New(date0, time0, MM, sdate, stime, MM);
TL_SetExtRight(var4,true);
TL_SetColor(var4, rgb(255,128,255));
}
Text_delete(TX1);
TX1 = Text_New(date0, time0, HH, "▶당일고가 : "+Numtostr(HH,2));
Text_SetStyle(TX1, 0, 1);
Text_setColor(TX1, red);
Text_delete(TX2);
TX2 = Text_New(date0, time0, LL, "▶당일저가 : "+Numtostr(LL,2));
Text_SetStyle(TX2, 0,0);
Text_setColor(TX2, blue);
Text_delete(TX4);
TX4 = Text_New(date0, time0, MM, "▶당일중심 : "+Numtostr(MM,2));
Text_SetStyle(TX4, 0,0);
Text_setColor(TX4, rgb(255,128,255));
if stime == 날짜변경시간 then {
var8 = TL_New(sdate, stime, H, sdate, stime, 999999999);
var9 = TL_New(sdate, stime, L, sdate, stime, 0);
TL_setColor(var8, rgb(200,150,250));
TL_setColor(var9, rgb(200,150,250));
}
2019-03-06
214
글번호 126762
답변완료
문의합니다
input : 시작시간(090000),종료시간(0);
input : Period15(15),Period20(20),Period30(30),Period120(120),Period180(180),Period240(240),Period480(480),
Period960(960),Period60(60),Period3(3),Period10(10),Period2(2),Period7(7),Period144(144),Period100(100);
input : 익절틱수1(150),손절틱수1(150),익절틱수2(200),손절틱수2(200),익절틱수3(200),손절틱수3(200),익절틱수4(200),손절틱수4(200),익절틱수5(200),손절틱수5(200);
var : mav15(0),mav20(0),mav30(0),mav120(0),mav180(0),mav240(0),mav480(0),mav960(0),mav60(0),mav1(0),
mav3(0),mav10(0),mav2(0),mav7(0),mav144(0),mav100(0),Bxcond(false),Sxcond(false);
var : Tcond(false);
var : T(0);
input : ntime1(4),P(50);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),sum1(0),tmav1(0),tmav11(0),tmav12(0),tmav13(0);
Array : C1[50](0);
var : BE1(0),BE2(0),BE3(0),BE4(0),BE5(0);
var : SE1(0),SE2(0),SE3(0),SE4(0),SE5(0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime1;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
for cnt = 1 to 49
{
C1[cnt] = C1[cnt-1][1];
}
tmav11 = tmav1[1];
tmav12 = tmav11[1];
tmav13 = tmav12[1];
}
C1[0] = C;
if C1[P] > 0 then{
sum1 = 0;
for cnt = 0 to P-1{
sum1 = sum1+C1[cnt];
}
tmav1 = sum1/P;
}
}
mav15 = ma(c, Period15);
mav20 = ma(c, Period20);
mav30 = ma(c, Period30);
mav120 = ma(c, Period120);
mav180 = ma(c, Period180);
mav240 = ma(c, Period240);
mav480 = ma(c, Period480);
mav960 = ma(c, Period960);
mav60 = ma(c, Period60);
mav3 = ma(c, Period3);
mav10 = ma(c, Period10);
mav2 = ma(c, Period2);
mav7 = ma(c, Period7);
mav144 = ma(c, Period144);
mav100 = ma(c, Period100);
if (sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and (Stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간))) Then
{
Tcond = True;
BXcond = false;
SXcond = false;
}
if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if TotalTrades > TotalTrades[1] then
{
BXcond = false;
SXcond = false;
if (IsExitName("bl",0) == true or IsExitName("bp",0) == true or IsExitName("bx",1) == true or IsExitName("bx",1) == true) Then
BXcond = true;
if (IsExitName("sl",0) == true or IsExitName("sp",0) == true or IsExitName("sx",1) == true or IsExitName("sx",1) == true) Then
SXcond = true;
}
if Tcond == true then
{
if MarketPosition <= 0 and Bxcond == false and
tmav13 < tmav12 and tmav12 < tmav11 and tmav11 < tmav1 and tmav12 > 0 Then
{
buy("매수1",OnClose,def,1);
}
if MarketPosition == 1 Then
{
if crossup(mav20, mav30) and MaxEntries == 1 Then
buy("매수2",OnClose,def,1);
if crossup(mav20, mav30) and MaxEntries == 2 Then
buy("매수3",OnClose,def,1);
if crossup(mav20, mav30) and MaxEntries == 3 Then
buy("매수4",OnClose,def,1);
if crossup(mav20, mav30) and MaxEntries == 4 Then
buy("매수5",OnClose,def,1);
}
if MarketPosition == 1 Then
{
if (tmav12 > tmav11 and tmav11 > tmav1 and tmav12 > 0) Then
exitlong("수청산1",OnClose,def,"매수1");
if (CrossDown(mav20, mav30)) or (tmav12 > tmav11 and tmav11 > tmav1 and tmav12 > 0) Then
{
exitlong("수청산2",OnClose,def,"매수2");
exitlong("수청산3",OnClose,def,"매수3");
exitlong("수청산4",OnClose,def,"매수4");
exitlong("수청산5",OnClose,def,"매수5");
}
if CurrentContracts > CurrentContracts[1] and MaxEntries == 1 Then
BE1 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 2 Then
BE2 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 3 Then
BE3 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 4 Then
BE4 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 5 Then
BE5 = LatestEntryPrice(0);
ExitLong("bp1",atlimit,BE1+PriceScale*익절틱수1,"매수1");
ExitLong("bl1",AtStop,BE1-PriceScale*손절틱수1,"매수1");
ExitLong("bp2",atlimit,BE2+PriceScale*익절틱수2,"매수2");
ExitLong("bl2",AtStop,BE2-PriceScale*손절틱수2,"매수2");
ExitLong("bp3",atlimit,BE3+PriceScale*익절틱수3,"매수3");
ExitLong("bl3",AtStop,BE3-PriceScale*손절틱수3,"매수3");
ExitLong("bp4",atlimit,BE4+PriceScale*익절틱수4,"매수4");
ExitLong("bl4",AtStop,BE4-PriceScale*손절틱수4,"매수4");
ExitLong("bp5",atlimit,BE5+PriceScale*익절틱수5,"매수5");
ExitLong("bl5",AtStop,BE5-PriceScale*손절틱수5,"매수5");
}
if MarketPosition >= 0 and Sxcond == false and
tmav13 > tmav12 and tmav12 > tmav11 and tmav11 > tmav1 and tmav12 > 0 Then
{
sell("매도1",OnClose,def,1);
}
if MarketPosition == -1 then
{
if CrossDown(mav20, mav30) and MaxEntries == 1 Then
sell("매도2",OnClose,def,1);
if CrossDown(mav20, mav30) and MaxEntries == 2 Then
sell("매도3",OnClose,def,1);
if CrossDown(mav20, mav30) and MaxEntries == 3 Then
sell("매도4",OnClose,def,1);
if CrossDown(mav20, mav30) and MaxEntries == 4 Then
sell("매도5",OnClose,def,1);
}
if MarketPosition == -1 then
{
if (tmav12 < tmav11 and tmav11 < tmav1 and tmav12 > 0) Then
ExitShort("도청산1",OnClose,def,"매도1");
if (crossup(mav20, mav30)) or (tmav12 < tmav11 and tmav11 < tmav1 and tmav12 > 0) Then
{
ExitShort("도청산2",OnClose,def,"매도2");
ExitShort("도청산3",OnClose,def,"매도3");
ExitShort("도청산4",OnClose,def,"매도4");
ExitShort("도청산5",OnClose,def,"매도5");
}
if CurrentContracts > CurrentContracts[1] and MaxEntries == 1 Then
SE1 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 2 Then
SE2 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 3 Then
SE3 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 4 Then
SE4 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 5 Then
SE5 = LatestEntryPrice(0);
ExitShort("sp1",atlimit,SE1-PriceScale*익절틱수1,"매도1");
ExitShort("sl1",AtStop,SE1+PriceScale*손절틱수1,"매도1");
ExitShort("sp2",atlimit,SE2-PriceScale*익절틱수2,"매도2");
ExitShort("sl2",AtStop,SE2+PriceScale*손절틱수2,"매도2");
ExitShort("sp3",atlimit,SE3-PriceScale*익절틱수3,"매도3");
ExitShort("sl3",AtStop,SE3+PriceScale*손절틱수3,"매도3");
ExitShort("sp4",atlimit,SE4-PriceScale*익절틱수4,"매도4");
ExitShort("sl4",AtStop,SE4+PriceScale*손절틱수4,"매도4");
ExitShort("sp5",atlimit,SE5-PriceScale*익절틱수5,"매도5");
ExitShort("sl5",AtStop,SE5+PriceScale*손절틱수5,"매도5");
}
}
---- 각 진입별로 손익절을 지정 하였으나 무슨 이유인지는 모르나
매수진입(매수2)후 바로 익절(bp2) 나오고
매도진입(매도2)후 바로 손절(sl2)이 발생하고 있습니다
수정 부탁합니다 감사합니다
2019-03-06
184
글번호 126761
답변완료
함수요청
안녕하세요?
함수요청드립니다.
해외선물 크루드오일을 거래하고자 합니다.
진입: 개장 1분봉으로 당일시가 > 전일종가이면 익봉 시가에 매수,
당일시가 < 전일종가이면 익봉 시가에 매도
청산: 당일 종가매매(혹은 익일 시가청산)
진입기준으로 일 1회입니다.
2019-03-06
176
글번호 126760
답변완료
문의
안녕하세요
시초가에서10틱상승시매수진입시초가이탈청산매도는반대이며 손실이40틱이면진입금지
손실을빼고이익40틱이면종료되는수식부탁합니다;
2019-03-06
164
글번호 126759
답변완료
단순 스토캐스틱 매수/매도 신호 매매 도와주세요
안녕하세요 공부한지 얼마안된 완전 새내기입니다
300틱 차트에서 스토캐스틱 10.6.6 골든 크로스일때 포지션 없을땐 매수 포지션있으면 매도청산후 매수, 데드크로스일때 포지션 없으면 매도 포지션있으면 매수청산후 매도
수식을 배우고싶습니다 도와주세요 ㅠㅠ
계약수 1계약 (2계약 3계약 으로도 바꾸는 방법 알려주시면 감사하겠습니다)
2019-03-06
206
글번호 126758
답변완료
문의합니다.
수고하십니다.
아래 수식은 2개 라인만 나오는데
가능하다면 중간 라인까지 상,중,하로 3개가 나오게 해주십시오.
input : P1(20),al(30),ah(70);
var : R(0);
R=RSI(P1);
if crossup(r,aL) Then
var1 = L;
if CrossDown(r,ah) Then
var2 = H;
plot1(var1);
plot2(var2);
2019-03-06
187
글번호 126757
답변완료
지표 관련 문의
이전 게시물에서 체결강도 관련 설명을,
수식에서 체결강도는 upvol,downvol 데이터를 이용.
직전체결보다 높은 가격에 체결된 거래량은 upvol,
직전 체결가격보다 낮은 가격에 체결된 거래량은 downvol로 집계
직전체결가와 같은 체결가격이면 이전상승이나 하락쪽으로 집계
된다고 들었습니다.
또,
해당 데이터는 선물사별로 제공되는 곳도 있고 제공되지 않는 곳도 있다고
하셨는데요, (해선기준)
질문 :
그림에서 처럼,
현재가창을 보면 해당 데이타가 이미 제공되고 있는거 아닌가요?
실시간으로 나오는 이 매수/매도 체결량 숫자를 해당 봉 안에서
각각 쌓아주면 up,downvol이 될거 같은데요.
제가 어떤 부분에 대해 잘못이해하고 있는지 질문드리고 싶습니다.
2019-03-06
272
글번호 126756