커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7895
글번호 230811
답변완료
수식 부탁드립니다.
자동매매로 매수신호가 나오면 매수가 되고 매도 신호가 나오면 매도가 되게끔하고싶은데
매수 주문을 가지고 있다가 매도신호가 나오면 자동으로 청산되고
매도도 하게끔 하고 싶습니다.(자동으로 스위칭되게끔)
수식 부탁드립니다.
2021-04-07
785
글번호 147780
답변완료
선좀 부탁합니다
동시 호가에 봉 즉 첫봉이 나오면
고가선 종가선 시가 몸통의 중간선 그려줏요
첫봉이 양봉이면 똑같은 간격만큼 아래로
첫봉이 음봉이면 똑같이 간격만큰 위로 그려주세요
2021-04-07
881
글번호 147775
답변완료
수식 질문드립니다.
1분차트
9시 1분봉 첫봉기준
-----------------------------------
변수정의생략
c2 봉크기가 2보다 크고 양봉
and
c3 봉크기가 2보다 크고 양봉 이면
if crossup(c,ma(c,5)) then buy();
------------------------------------
부탁드립니다.
2021-04-07
810
글번호 147769
답변완료
올려준 글을 보고 수정을 해보았는데 ?
앞전 게시글 71083 입니다
올려준 글을 보고 수정을 해보았습니다
그런데 중간 중간에 될때가 있고 않될때가 나온는 듯 합니다
확인좀 부탁합니다
input : 완전청산 (1010);
var : mav1(0),mav2(0),Lcnt(0),Hcnt(0),BH(0),SL(0); #손절식 조건
#매수 손절식
if MarketPosition == 1 Then
{
BH = Highest(H,BarsSinceEntry);
if BH >= EntryPrice+PriceScale*60 and BH < EntryPrice+PriceScale*100 Then
ExitLong("bx2",AtStop,EntryPrice+PriceScale*10);
if BH >= EntryPrice+PriceScale*150 and BH < EntryPrice+PriceScale*200 Then
ExitLong("bx1",AtStop,EntryPrice+PriceScale*80);
if BH >= EntryPrice+PriceScale*500 and BH < EntryPrice+PriceScale*600 Then
ExitLong("bx1",AtStop,EntryPrice+PriceScale*300);
if BH >= EntryPrice+PriceScale*700 and BH < EntryPrice+PriceScale*900 Then
ExitLong("bx1",AtStop,EntryPrice+PriceScale*400);
ExitLong("bx4",AtLimit,EntryPrice+PriceScale*완전청산,"",5,1);
ExitLong("bx3",AtStop,EntryPrice-PriceScale*55);
}
Else
Lcnt = 0;
#매도 손절식
if MarketPosition == -1 Then
{
SL = Lowest(L,BarsSinceEntry);
if SL <= EntryPrice-PriceScale*60 and SL > EntryPrice-PriceScale*100 Then
ExitShort("sx2",AtStop,EntryPrice-PriceScale*10);
if SL <= EntryPrice-PriceScale*150 and SL > EntryPrice-PriceScale*200 Then
ExitShort("sx1",AtStop,EntryPrice-PriceScale*80);
if SL <= EntryPrice-PriceScale*500 and SL > EntryPrice-PriceScale*600 Then
ExitShort("sx1",AtStop,EntryPrice-PriceScale*300);
if SL <= EntryPrice-PriceScale*700 and SL > EntryPrice-PriceScale*900 Then
ExitShort("sx1",AtStop,EntryPrice-PriceScale*400);
ExitShort("sx4",AtLimit,EntryPrice-PriceScale*완전청산,"",5,1);
ExitShort("sx3",AtStop,EntryPrice+PriceScale*55);
}
Else
Hcnt = 0;
2021-04-07
1000
글번호 147765
답변완료
감사합니다....복받으실꺼에요~~~
늘 감사합니다.
아래 수식 수정 부탁드립니다. (1번과 2번있습니다)
매수 : 일봉에서 10봉이네 10% 이상 상승한 양봉을 기준봉으로 삼았는데, 기준봉을 갭을 포
함한 상승폭으로 수정해주시면 감사하겠습니다.
1분봉에서 기준봉의 1/4 가격에 도달시 1차 매수(금액10000)
1분봉에서 기준봉의 2/4 가격에 도달시 2차 매수(금액10000)
1분봉에서 기준봉의 3/4 가격에 도달시 3차 매수(금액10000)
1분봉에서 기준봉의 4/4 가격에 도달시 4차 매수(금액10000)
매도 : 1분봉에서 기준봉의 종가 도달시 전량 매도
1.번
input : N(10),금액1(10000),금액2(20000);
var : cnt(0);
if Bdate != bdate[1] Then
{
var1 = 0;
Var2 = 0;
For cnt = 1 to N
{
if var1 == 0 and Var2 == 0 and DayClose(cnt) >= DayOpen(cnt)*1.10 Then
{
var1 = DayClose(cnt);
Var2 = DayOpen(cnt);
}
}
}
if MarketPosition == 0 and var1 > 0 Then
Buy("b1",AtLimit,(var1+Var2)/2,Floor(금액1/min(NextBarOpen,(var1+Var2)/2)));
if MarketPosition == 1 Then
{
if MarketPosition != MarketPosition[1] Then
{
value1 = var1[BarsSinceEntry];
Value2 = var2[BarsSinceEntry];
}
Buy("b2",AtLimit,Var2,Floor(금액1/min(NextBarOpen,Var2)));
ExitLong("bx",AtLimit,value1);
}
//////////////////////////////////////////////////////////////////////
아래 수식에서 1번째 음봉발생시 1차매수 10000원,
2번째 음봉발생시 2차매수 10000원
3번째 음봉발생시 3차매수 10000원
씩 매수 되고,
청산은 기준봉 종가에 전량 청산 부탁드립니다.
여기서도 기준봉 갭포함한 상승율로 변경 부탁드립니다.
2번
input : N(10),금액1(10000),금액2(20000);
var : cnt(0);
if Bdate != bdate[1] Then
{
var1 = 0;
Var2 = 0;
For cnt = 1 to N
{
if var1 == 0 and Var2 == 0 and DayClose(cnt) >= DayOpen(cnt)*1.10 Then
{
var1 = DayClose(cnt);
Var2 = DayOpen(cnt);
}
}
}
if MarketPosition == 0 and var1 > 0 and C < O and C < var1 Then
Buy("1");
2021-04-06
936
글번호 147764
답변완료
이동된 선 시스템 사용 문의
안녕하세요 관리자님 미리 감사 드립니다.
시스템에서는 Plot함수를 못쓰는 것으로 알고있는데
FixPlotShift함수를 사용하여
교차된 선을 이용한 시스템을 만들려고 하면
어떻게 해야되는지 문의 드립니다.
예를 들어
선 1과
선 1을 FixPlotShift함수를 사용하여 우로 이동후
교차점을 매수나 매도로 만들려고합니다.
미리 답변에 감사 드립니다.
감사 합니다.
안녕하세요
예스스탁입니다.
FixPlotShift함수를 이용해서 지표를 좌우 이동할수 있습니다.
FixPlotShift(plot넘버,이동봉수)
이동봉수는 양수로 지정하면 우측으로, 음수로 지정하면 좌측으로 지정한 봉수만큼 이동하게 됩니다.
아래 내용 참고하시기 바랍니다.
input : Period2(20);
var : Sline(0),CX(0);
CX = C;
Sline = ema(CX, Period2);
Plot1(Sline);
FixPlotShift(1,10);#plot1을 우측으로 10봉 이동
즐거운 하루되세요
> blueo 님이 쓴 글입니다.
> 제목 : 특정 선 선행표시 문의
> 안녕하세요 관리자님 늘 감사 드립니다.
예를들어 일목균형표에서 선행스팬처럼
제가 원하는 특정한 선을 앞으로 미리 표시하고
싶은데요 어떻게 표시해야되는지 문의 드립니다.
미리 답변에 감사 드립니다.
Sline = ema(CX, Period2);
2021-04-06
1076
글번호 147763
답변완료
재문의
종목검색에서, 1봉당 50억이상 봉이 발생된 날자와 시각을 알수 있도록 하는 수식 부탁드립니다.
맞지는 않을 것 같지만 예를 들어 find(날자+시각) 처럼해서 종목검색시 날자와 시각이 find 되도록 하고 싶읍니다
감사합니다.
2021-04-06
891
글번호 147761
답변완료
청산 수식 문의드립니다.
안녕하세요.
트레일링 청산과 관련하여 아래와 같이 구현해보려고 합니다.
- 포지션 진입후 40틱 목표가 이후부터 특정(%)or(Tick) 이하로 떨어질경우 청산
단, 목표가 40틱 이후 60틱, 80틱, 120틱, 150틱, 200틱, 250틱, 300틱 단위로 목표수익을 달성할 경우 한단계식 40부터 300까지 청산 기준값이 바뀌는것을 구현해보려고 합니다.
즉 40틱 달성시부터 트레일링시작, 만약 40틱이후 수익이60틱을 갱신한 경우 목표가의 기준이 40에서 60으로 바뀌는 형태입니다.
그렇게 40틱에서 300틱가지 순차적으로 트레일링 기준값을 올려가는 것을 알려주시면 감사하겠습니다.
감사합니다.
2021-04-06
959
글번호 147759
답변완료
지표수식 문의드립니다
아래의 수식에서,
파동당 상승/하락 틱 수와 더불어, 한 개의 파동당 봉의 개수를 같이 표현하고 싶습니다.
도움 부탁드립니다.
첨부파일에 빨강펜으로 표시한 식으로, /N개 이렇게 표시가 되면 좋겠습니다.
=========================
input : af(0.02), maxAF(0.2),추세선두께(1),추세선색1(RED),추세선색2(BLUE),연장선두께(1),연장선색(blue);
input : per1(0),Per2(50),Per3(100),Per4(138.2),Per5(150.0),Per6(161.8),Per7(200.0),Per8(300.0);
input : 텍스트출력(1);
var : T(0),HH(0),LL(0),HD(0),HT(0),LD(0),LT(0);
var : HH1(0),LL1(0),HD1(0),HT1(0),LD1(0),LT1(0);
var : TL1(0),TL2(0),cnt(0),count(0);
var : TL3(0),TL4(0),TL5(0),TL6(0),TL7(0),TL8(0),TL9(0),TL10(0),tx1(0),tx2(0),tx11(0),tx22(0);
var : tx3(0),tx4(0),tx5(0),tx6(0),tx7(0),tx8(0),tx9(0),tx10(0);
var1 = CSar(af,maxAF);
if crossup(c,var1) Then
{
T = 1;
HH = H;
HD = sdate;
HT = stime;
HH1 = HH[1];
HD1 = HD[1];
HT1 = HT[1];
if LL > 0 Then
{
TL1 = TL_new(LD[1],LT[1],LL[1],HD,HT,HH);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL_Delete(TL6);
TL_Delete(TL7);
TL_Delete(TL8);
TL_Delete(TL9);
TL_Delete(TL10);
#상승연장피봇테이트표현
Value3 = LL+(HH[1]-LL)*(Per1/100);
Value4 = LL+(HH[1]-LL)*(Per2/100);
Value5 = LL+(HH[1]-LL)*(Per3/100);
Value6 = LL+(HH[1]-LL)*(Per4/100);
Value7 = LL+(HH[1]-LL)*(Per5/100);
Value8 = LL+(HH[1]-LL)*(Per6/100);
Value9 = LL+(HH[1]-LL)*(Per7/100);
Value10 = LL+(HH[1]-LL)*(Per8/100);
TL3 = TL_new(HD[1],HT[1],Value3,sdate,stime,value3);
TL4 = TL_new(HD[1],HT[1],Value4,sdate,stime,Value4);
TL5 = TL_new(HD[1],HT[1],Value5,sdate,stime,Value5);
TL6 = TL_new(HD[1],HT[1],Value6,sdate,stime,value6);
TL7= TL_new(HD[1],HT[1],Value7,sdate,stime,Value7);
TL8 = TL_new(HD[1],HT[1],Value8,sdate,stime,Value8);
TL9 = TL_new(HD[1],HT[1],Value9,sdate,stime,Value9);
TL10 = TL_new(HD[1],HT[1],Value10,sdate,stime,Value10);
//추세선 오른쪽 연장설정
TL_SetExtRight(TL3,true);
TL_SetExtRight(TL4,true);
TL_SetExtRight(TL5,true);
TL_SetExtRight(TL6,true);
TL_SetExtRight(TL7,true);
TL_SetExtRight(TL8,true);
TL_SetExtRight(TL9,true);
TL_SetExtRight(TL10,true);
Text_Delete(tx3);
Text_Delete(tx4);
Text_Delete(tx5);
Text_Delete(tx6);
Text_Delete(tx7);
Text_Delete(tx8);
Text_Delete(tx9);
Text_Delete(tx10);
tx3 = Text_New(sDate,sTime,Value3,NumToStr(Value3,2));
tx4 = Text_New(sDate,sTime,Value4,NumToStr(Value4,2));
tx5 = Text_New(sDate,sTime,Value5,NumToStr(Value5,2));
tx6 = Text_New(sDate,sTime,Value6,NumToStr(Value6,2));
tx7 = Text_New(sDate,sTime,Value7,NumToStr(Value7,2));
tx8 = Text_New(sDate,sTime,Value8,NumToStr(Value8,2));
tx9 = Text_New(sDate,sTime,Value9,NumToStr(Value9,2));
tx10 = Text_New(sDate,sTime,Value10,NumToStr(Value10,2));
Text_SetStyle(tX3,0,1);
Text_SetStyle(tX4,0,1);
Text_SetStyle(tX5,0,1);
Text_SetStyle(tX6,0,1);
Text_SetStyle(tX7,0,1);
Text_SetStyle(tX8,0,1);
Text_SetStyle(tX9,0,1);
Text_SetStyle(tX10,0,1);
if 텍스트출력 == 1 then
{
Tx11 = Text_New(HD1,HT1,HH1,"상:"+NumToStr((HH1-LL1)/PriceScale,0)+NewLine+NumToStr(HH1,2));
Text_SetStyle(tx11,2,1);
Text_SetSize(tx11,11);
Text_Delete(tx1);
Tx1 = Text_New(HD,HT,HH,"상단:"+NumToStr((HH-LL[1])/PriceScale,0)+NewLine+NumToStr(HH,2));
Text_SetStyle(tx1,12,1);
Text_SetSize(tx1,11);
}
}
}
if CrossDown(c,var1) Then
{
T = -1;
LL = L;
LD = sdate;
LT = stime;
LL1 = LL[1];
LD1 = LD[1];
LT1 = LT[1];
if HH > 0 Then
{
TL2 = TL_new(HD[1],HT[1],HH[1],LD,LT,LL);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL_Delete(TL6);
TL_Delete(TL7);
TL_Delete(TL8);
TL_Delete(TL9);
TL_Delete(TL10);
Value3 = HH-(HH-LL[1])*(Per1/100);
Value4 = HH-(HH-LL[1])*(Per2/100);
Value5 = HH-(HH-LL[1])*(Per3/100);
Value6 = HH-(HH-LL[1])*(Per4/100);
Value7 = HH-(HH-LL[1])*(Per5/100);
Value8 = HH-(HH-LL[1])*(Per6/100);
Value9 = HH-(HH-LL[1])*(Per7/100);
Value10 = HH-(HH-LL[1])*(Per8/100);
TL3 = TL_new(LD[1],LT[1],value3,sdate,stime,value3);
TL4 = TL_new(LD[1],LT[1],Value4,sdate,stime,Value4);
TL5 = TL_new(LD[1],LT[1],Value5,sdate,stime,Value5);
TL6 = TL_new(LD[1],LT[1],Value6,sdate,stime,Value6);
TL7 = TL_new(LD[1],LT[1],Value7,sdate,stime,value7);
TL8 = TL_new(LD[1],LT[1],Value8,sdate,stime,Value8);
TL9 = TL_new(LD[1],LT[1],Value9,sdate,stime,Value9);
TL10 = TL_new(LD[1],LT[1],Value10,sdate,stime,Value10);
//추세선 오른쪽 연장설정
TL_SetExtRight(TL3,true);
TL_SetExtRight(TL4,true);
TL_SetExtRight(TL5,true);
TL_SetExtRight(TL6,true);
TL_SetExtRight(TL7,true);
TL_SetExtRight(TL8,true);
TL_SetExtRight(TL9,true);
TL_SetExtRight(TL10,true);
Text_Delete(tx3);
Text_Delete(tx4);
Text_Delete(tx5);
Text_Delete(tx6);
Text_Delete(tx7);
Text_Delete(tx8);
Text_Delete(tx9);
Text_Delete(tx10);
tx3 = Text_New(sDate,sTime,Value3,NumToStr(Value3,2));
tx4 = Text_New(sDate,sTime,Value4,NumToStr(Value4,2));
tx5 = Text_New(sDate,sTime,Value5,NumToStr(Value5,2));
tx6 = Text_New(sDate,sTime,Value6,NumToStr(Value6,2));
tx7 = Text_New(sDate,sTime,Value7,NumToStr(Value7,2));
tx8 = Text_New(sDate,sTime,Value8,NumToStr(Value8,2));
tx9 = Text_New(sDate,sTime,Value9,NumToStr(Value9,2));
tx10 = Text_New(sDate,sTime,Value10,NumToStr(Value10,2));
Text_SetStyle(tX3,0,1);
Text_SetStyle(tX4,0,1);
Text_SetStyle(tX5,0,1);
Text_SetStyle(tX6,0,1);
Text_SetStyle(tX7,0,1);
Text_SetStyle(tX8,0,1);
Text_SetStyle(tX9,0,1);
Text_SetStyle(tX10,0,1);
if 텍스트출력 == 1 then
{
Tx22 = Text_New(LD1,LT1,LL1,"하:"+NumToStr((HH1-LL1)/PriceScale,0)+NewLine+NumToStr(LL1,2));
Text_SetStyle(tx22,2,0);
Text_SetSize(tx22,11);
Text_Delete(tx2);
Tx2 = Text_New(LD,LT,LL,"가:"+NumToStr((HH[1]-LL)/PriceScale,0)+NewLine+NumToStr(LL,2));
Text_SetStyle(tx2,2,1);
Text_SetSize(tx2,12);
}
}
}
if T == 1 then
{
if H > HH Then
{
HH = H;
HD = sdate;
HT = stime;
TL_SetEnd(TL1,HD,HT,HH);
if 텍스트출력 == 1 then
{
Text_Delete(tx1);
Tx1 = Text_New(HD,HT,HH,"A:"+NumToStr((HH-LL[1])/PriceScale,0)+NewLine+NumToStr(HH,2));
Text_SetStyle(tx1,2,1);
Text_SetSize(tx1,11);
}
}
}
if T == -1 then
{
if L < LL Then
{
LL = L;
LD = sdate;
LT = stime;
TL_SetEnd(TL2,LD,LT,LL);
if 텍스트출력 == 1 then
{
Text_Delete(tx2);
Tx2 = Text_New(LD,LT,LL,"B:"+NumToStr((HH[1]-LL)/PriceScale,0)+NewLine+NumToStr(LL,2));
Text_SetStyle(tx2,2,0);
Text_SetSize(tx2,11);
}
}
}
#추세선 두께
TL_SetSize(TL1,추세선두께);
TL_SetSize(TL2,추세선두께);
#추세선 색상
TL_SetColor(TL1,추세선색1);
TL_SetColor(TL2,추세선색2);
#연장선 두께
TL_SetSize(TL3,연장선두께);
TL_SetSize(TL4,연장선두께);
TL_SetSize(TL5,연장선두께);
TL_SetSize(TL6,연장선두께);
TL_SetSize(TL7,연장선두께);
TL_SetSize(TL8,연장선두께);
TL_SetSize(TL9,연장선두께);
TL_SetSize(TL10,연장선두께);
#연장선 색상
TL_SetColor(TL3,연장선색);
TL_SetColor(TL4,GREEN);
TL_SetColor(TL5,연장선색);
TL_SetColor(TL6,GREEN);
TL_SetColor(TL7,RED);
TL_SetColor(TL8,연장선색);
TL_SetColor(TL9,RED);
TL_SetColor(TL10,RED);
Text_SetLocation(tx3,NextBarSdate,NextBarStime,Value3);
Text_SetLocation(tx4,NextBarSdate,NextBarStime,Value4);
Text_SetLocation(tx5,NextBarSdate,NextBarStime,Value5);
Text_SetLocation(tx6,NextBarSdate,NextBarStime,Value6);
Text_SetLocation(tx7,NextBarSdate,NextBarStime,Value7);
Text_SetLocation(tx8,NextBarSdate,NextBarStime,Value8);
Text_SetLocation(tx9,NextBarSdate,NextBarStime,Value9);
Text_SetLocation(tx10,NextBarSdate,NextBarStime,Value10);
2021-04-06
1087
글번호 147758