커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7212
글번호 230811
회원 님에 의해서 삭제되었습니다.
2019-03-06
0
글번호 126795
답변완료
문의드립니다
어제 질문한
번호 61591 내용을 검색하여도 반응이었습니다
그래서 똑같은 내용으로 지표식으로 해보니 잘되고요
조건식을 지우고 해봐도 번응이었습니다
다시 확인 부탁드립니다
1
Input : Period1(222),Period2(222),p(9);
var : cnt(0),sum1(0),sum2(0),sum3(0);
Array : OO[222](0),CC[222](0);
var1 = h[1];
var2 = l[1];
var3 = abs (var1 - var2)*100;
if c >= h[1] and Upvol > DownVol and var3 > 3 or c <= l[1] and DownVol > Upvol and var3 > 3 Then
{
OO[0] = O;
CC[0] = C;
for cnt = 1 to 221
{
OO[cnt] = OO[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if OO[Period1] > 0 then
{
sum1 = 0;
for cnt = 0 to Period1-1
{
sum1 = sum1 + OO[cnt];
}
var8 = sum1/Period1;
}
if CC[Period2] > 0 then
{
sum2 = 0;
for cnt = 0 to Period2-1
{
sum2 = sum2 + CC[cnt];
}
var9 = sum2/Period2;
}
if OO[P] > 0 then
{
sum3 = 0;
for cnt = 0 to P-1
{
sum3 = sum3 + OO[cnt];
}
var10 = sum3/P;
}
if var8 >= var9 and crossup(var10,var8) and
C[1] <= var8*1.03 and C[1] >= var8*0.97 Then
find(1);
2019-03-06
227
글번호 126794
답변완료
함수변환 요청
안녕하세요?
아래는 시그널메이커로 작성된 스크립트입니다.
예스트레이더로 사용할 수 있도록 함수 변환 요청드립니다.
감사합니다.
Vars : st(0), et(0);
V1 = Dayofweek((10000 * Year(D)) + (100 * 3) + 1);
If V1 = 0 Then Value2 = 8
Else Value2 = 15 - V1; // 3월 두번째 일요일 날짜
V2 = Dayofweek((10000 * Year(D)) + (100 * 11) + 1);
If V2 = 0 Then Value4 = 1
Else value4 = 8 - V2; // 11월 첫번째 일요일 날짜
If date > (10000 * Year(D)) + (100 * 3) + value2
And date < (10000 * Year(D)) + (100 * 11) + value4 Then
Begin
st = 070000; // 써머타임 적용 시, 장시작 시간
et = 060000; // 써머타임 적용 시, 장종료 시간
End
Else
Begin
st = 080000; // 장 시작 시간
et = 070000; // 장 종료 시간
End;
condition1 = (IntPortion(time/10000) > IntPortion(et/10000)
And IntPortion(time[1]/10000) <= IntPortion(et/10000)) Or st <> st[1];
/////////////////////////////////////////////////////////////////
If condition1 Then v99 = 0;
Vars : SP(0);
SP = SignalPosition;
If SP[1] <> SP And SP <> 0 Then v99 = v99 + 1;
Vars : pDayClose(0), vDayOpen(0);
pDayClose = DayClose(1);
vDayOpen = DayOpen(0);
If v99 = 0 Then
Begin
If pDayClose < vDayOpen Then Buy("B", atmarket)
Else IF pDayClose > vDayOpen Then Sell("S", atmarket);
End;
SetExitOnClose;
2019-03-06
277
글번호 126793
답변완료
부탁드립니다
수고하십니다
스마트폰에서 예스트레이더를 사용할 방법이 있나요??
이게 되면 좋을텐데요. ?
2019-03-06
229
글번호 126791
당일선물 님에 의해서 삭제되었습니다.
2019-03-06
1
글번호 126782
답변완료
문의드립니다
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
188
글번호 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
207
글번호 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
247
글번호 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
211
글번호 126761