커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8139
글번호 230811
답변완료
buy 함수를 for 문과 함께 사용하는 방법이 있을까요?
Input : base_price(1000);
Arrays : b_price[4](0), b_qty[4](0);
Vars: cnt(1);
For cnt = 1 to 3
{
b_price[cnt] = base_price * (1 - cnt * 0.02); //가격 배열 만들기
b_qty[cnt] = cnt; //수량 배열 만들기
}
If sdate == 20200824 && sTime == 100000 Then //한줄씩 buy 사용
/* {
MessageLog("Price:%.0f, Qty:%.0f, Close:%.0f", b_price[1], b_qty[1], Close);
Buy("Buy1", AtLimit, b_price[1], b_qty[1]);
MessageLog("Price:%.0f, Qty:%.0f, Close:%.0f", b_price[2], b_qty[2], Close);
Buy("Buy2", AtLimit, b_price[2], b_qty[2]);
MessageLog("Price:%.0f, Qty:%.0f, Close:%.0f", b_price[3], b_qty[3], Close);
Buy("Buy3", AtLimit, b_price[3], b_qty[3]);
}
*/
{ //For문 사용
For cnt = 1 to 3
{
MessageLog("Price:%.0f, Qty:%.0f, Close:%.0f", b_price[cnt], b_qty[cnt], Close);
Buy("Buy", AtLimit, b_price[cnt], b_qty[cnt]);
}
}
For 문 없이 사용하면 작동하는데
For 문을 쓰면 매수 이름이 같아져 작동이 안되는듯 합니다.
For 문을 사용해서 buy 함수를 쓰는 방법이 있을까요?
항상 감사합니다. ^^!
2020-08-24
1262
글번호 141753
답변완료
부탁 드립니다.
도움에 깊이 감사 드립니다.
ADX지표에 사용되는 DIPLUS함수의
타주기 즉
1)분봉 차트에서 예를 들어 10분봉에서 60분봉지표
2)60분봉 차트에서 일봉 지표
장시간 번거로우시겠지만 부탁드리오며
미리 경배로 깊이 감사 드립니다.
Inputs: Length(NumericSimple) ;
Variables: Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0);
If CurrentBar == 1 Then Begin
MyRange = Length;
DIPlus = 0;
PlusDM14 = 0;
TRange = 0;
For Counter = 0 To MyRange - 1 Begin
If High[Counter] - High[Counter+1] < 0 Then
PlusDM = 0;
Else
PlusDM = High[Counter] - High[Counter+1];
If Low[Counter+1] - Low[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = Low[Counter+1] - Low[Counter];
If MinusDM >= PlusDM Then
PlusDM = 0;
TRange = TRange + TrueRange[Counter];
PlusDM14 = PlusDM14 + PlusDM;
End;
If TRange <> 0 Then
DIPlus = 100 * PlusDM14 / TRange;
Else
DIPlus = 0 ;
End
Else
If CurrentBar > 1 Then Begin
If High[0] - High[1] < 0 Then
PlusDM = 0;
Else
PlusDM = High[0] - High[1];
If Low [1] - Low [0] < 0 Then
MinusDM = 0;
Else
MinusDM = Low[1] - Low[0];
If MinusDM >= PlusDM Then
PlusDM = 0;
If MyRange > 0 Then Begin
TRange = TRange[1] - (TRange[1] / MyRange) + TrueRange;
PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM;
End;
If TRange <> 0 Then
DIPlus = 100 * PlusDM14 / TRange;
Else
DIPlus = 0 ;
End ;
참조1)
TrueRange = TrueHigh - TrueLow;
참조2)
If C[1] > H then
TrueHigh = C[1];
else
TrueHigh = H;
참조3)
If C[1] < L then
TrueLow = C[1];
else
TrueLow = L;
2020-08-24
1023
글번호 141751
답변완료
외인 누적 선물평균가를 표시
90틱 챠트에 외국인 선물 누적 평균가를 수평선으로 표시하고 싶습니다.
2020-08-24
937
글번호 141748
답변완료
문의드립니다
data2 차트에서
60 봉 기간내
첫번째로 가장 낮은값
두번째로 가장 낮은값
세번째로 가장 낮은값
각각 지표식을 얻고 싶습니다
감사합니다
2020-08-24
906
글번호 141743
답변완료
수정 부탁드립니다.
안녕하세요?
아래 수식에 하루매매횟수를 외부변수로 넣고싶습니다.
감사합니다.
Input : 단기(5), 장기(20), profit_pt(0.5), loss_pt(0.5), 장종료청산(151000);
Variable : ent_position(0);
if MarketPosition == 0 Then
{
var1 = 0;
ent_position = 0;
}
If ma(C,단기)>ma(C,장기) and ( C>O and L==O ) and ent_position == 0 Then
{
Buy("매수",AtMarket);
Var1 = NextBarOpen;
ent_position = 1;
}
If ma(C,단기)<ma(C,장기) and ( C<O and H==O ) and ent_position == 0 Then
{
Sell("매도",AtMarket);
Var1 = NextBarOpen;
ent_position = -1;
}
SetStopProfittarget(profit_pt,PointStop);
SetStopLoss(loss_pt,PointStop);
SetStopEndofday(장종료청산);
2020-08-24
831
글번호 141738
답변완료
주석요청
안녕하세요?
아래 전략이 의미하는 바가 무엇인지요?
countif(C > mav1,5)[1] == 5
2020-08-24
877
글번호 141734
답변완료
문의드립니다!
안녕하세요!
1, 지난주에 수정해주신 아래 수식1에서 다음사항을 보완수정 부탁드립니다
즉, 봉과 상대선의 만남의 형태가 1) 하방에서 상방으로 2) 상방에서 하방으로..
이렇게 2가지 경우가 있는데 현재수식에서는 어느 한가지 방향에서의 만남시에만 신호가 발생되는것같습니다
예를들어서
1) 콜봉이 상대고점과 만남시 하방에서 상방으로 향한경우에는 신호가 발생
상방에서 하방으로 향한경우에는 신호가 미발생됩니다
2) 콜봉이 상대저점과 만남시 하방에서 상방으로 향한경우에는 신호가 미발생
상방에서 하방으로 향한경우에는 신호가 발생됩니다
* 풋봉의 경우도 똑같은 이치로서 한가지 경우에만 신호가 발생됩니다
수고스러우시겠지만 모든경우에 다 신호가 발생토록 보완수정 부탁드리겠습니다
2, 아래 수식2에서 선의 이름이 화면 왼쪽에서 발생되도록 수정 부탁드립니다
매번 도와주심에 진심으로 다시한번 감사드립니다 !!!
------------------------------------------------------------------------------------
(수식 1)
input : N(0),굵기(3);
var : H1(0,data1),L1(0,data1),H2(0,Data1),L2(0,Data1);
var : TL1(0,data1),TL2(0,data1),TL3(0,data1),TL4(0,data1);
H1 = data1(DayHigh(0));
L1 = data1(DayLow(0));
H2 = data2(HighD(0));
L2 = data2(LowD(0));
Plot1(H1,"data1 최고");
Plot2(L1,"data1 최저");
Plot3(H2,"data2 최고");
Plot4(L2,"data2 최저");
#data1가격이 상승해 Data2 최고가-N틱을 만날때
if data1(H) >= H2-PriceScale*N and data1(H[1]) < H2[1]-PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
TL1 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL1,굵기);
TL_SetColor(TL1,RED);
}
#data1가격이 하락해 Data2 최저가+N틱을 만날때
if data1(L) <= L2+PriceScale*N and data1(L[1]) > L2[1]+PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
TL2 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL2,굵기);
TL_SetColor(TL2,BLUE);
}
#data2가격이 상승해 Data1 최고가-N틱을 만날때
if data2(H) >= H1-PriceScale*N and data2(H[1]) < H1[1]-PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
TL3 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL3,굵기);
TL_SetColor(TL3,MAGENTA);
}
#data2가격이 하락해 Data1 최저가+N틱을 만날때
if data2(L) <= L1+PriceScale*N and data2(L[1]) > L1[1]+PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
TL4 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL4,굵기);
TL_SetColor(TL4,CYAN);
}
(수식 2)
var : 당일시가(0),전일시가(0),금일종가(0),전일종가(0);
var : 금일고가(0),전일고가(0),금일저가(0),전일저가(0);
var : 금일중간가격(0),전일중간가격(0),천정대칭가격(0),바닥대칭가격(0);
var : Tx1(0),tx2(0),tx3(0),tx4(0),tx5(0),tx6(0);
var : Tx7(0),tx8(0),tx9(0),tx10(0),tx11(0),tx12(0);
당일시가 = dayopen;
전일시가 = dayopen(1);
금일종가 = dayclose;
전일종가 = dayclose(1);
금일고가 = dayhigh;
전일고가 = dayhigh(1);
금일저가 = daylow;
전일저가 = daylow(1);
금일중간가격 = (dayhigh + daylow)/2;
전일중간가격 = (dayhigh(1)+daylow(1))/2;
천정대칭가격 = dayhigh + (dayhigh - dayhigh(1));
바닥대칭가격 = daylow - (daylow-daylow(1));
Plot1(당일시가);
Plot2(전일시가);
Plot3(금일종가);
Plot4(전일종가);
Plot5(금일고가);
Plot6(전일고가);
Plot7(금일저가);
Plot8(전일저가);
Plot9(금일중간가격);
Plot10(전일중간가격);
Plot11(천정대칭가격);
Plot12(바닥대칭가격);
if Index == 1 or Bdate != Bdate[1] Then
{
tx1 = Text_New_Self(sDate,sTime,당일시가,"당일시가 "+NumToStr(당일시가,2));
tx2 = Text_New_Self(sDate,sTime,전일시가,"전일시가 "+NumToStr(전일시가,2));
tx3 = Text_New_Self(sDate,sTime,금일종가,"금일종가 "+NumToStr(금일종가,2));
tx4 = Text_New_Self(sDate,sTime,전일종가,"전일종가 "+NumToStr(전일종가,2));
tx5 = Text_New_Self(sDate,sTime,금일고가,"금일고가 "+NumToStr(금일고가,2));
tx6 = Text_New_Self(sDate,sTime,전일고가,"전일고가 "+NumToStr(전일고가,2));
tx7 = Text_New_Self(sDate,sTime,금일저가,"금일저가 "+NumToStr(금일저가,2));
tx8 = Text_New_Self(sDate,sTime,전일저가,"전일저가 "+NumToStr(전일저가,2));
tx9 = Text_New_Self(sDate,sTime,금일중간가격,"금일중간가격 "+NumToStr(금일중간가격,2));
tx10 = Text_New_Self(sDate,sTime,전일중간가격,"전일중간가격 "+NumToStr(전일중간가격,2));
tx11 = Text_New_Self(sDate,sTime,천정대칭가격,"천정대칭가격 "+NumToStr(천정대칭가격,2));
tx12 = Text_New_Self(sDate,sTime,바닥대칭가격,"바닥대칭가격 "+NumToStr(바닥대칭가격,2));
}
Else
{
Text_SetLocation(tx1,NextBarSdate,NextBarStime,당일시가);
Text_SetLocation(tx2,NextBarSdate,NextBarStime,전일시가);
Text_SetLocation(tx3,NextBarSdate,NextBarStime,금일종가);
Text_SetLocation(tx4,NextBarSdate,NextBarStime,전일종가);
Text_SetLocation(tx5,NextBarSdate,NextBarStime,금일고가);
Text_SetLocation(tx6,NextBarSdate,NextBarStime,전일고가);
Text_SetLocation(tx7,NextBarSdate,NextBarStime,금일저가);
Text_SetLocation(tx8,NextBarSdate,NextBarStime,전일저가);
Text_SetLocation(tx9,NextBarSdate,NextBarStime,금일중간가격);
Text_SetLocation(tx10,NextBarSdate,NextBarStime,전일중간가격);
Text_SetLocation(tx11,NextBarSdate,NextBarStime,천정대칭가격);
Text_SetLocation(tx12,NextBarSdate,NextBarStime,바닥대칭가격);
}
2020-08-24
1031
글번호 141722
답변완료
수식어 부탁드립니다
Input : short(12), long(26), signal(9),Profit(20),Drop(10);
input : StartTime(70000),EndTime(55000);
var : Tcond(false);
Var : MACDv(0), MACDs(0),macdo(0) ;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
MACDv = MACD(short, long);
MACDs = ema(MACDv,signal);
macdo = MACDv-MACDs;
if Tcond == true then
{
if MarketPosition <= 0 and crossup(MACDO,0) Then
buy("b");
if MarketPosition >= 0 and CrossDown(MACDO,0) Then
sell("s");
if MarketPosition == 1 then
{
if highest(H,BarsSinceEntry) >= EntryPrice+Profit then
{
ExitLong("bx",AtStop,highest(H,BarsSinceEntry)-drop);
}
}
if MarketPosition == 1 then
{
if Lowest(L,BarsSinceEntry) <= EntryPrice-Profit then
{
ExitShort("sx",AtStop,Lowest(L,BarsSinceEntry)+drop);
}
}
}
if EndTime > StartTime Then
SetStopEndofday(EndTime);
Else
{
if sdate != sdate[1] Then
SetStopEndofday(EndTime);
if bdate != bdate[1] Then
SetStopEndofday(0);
}
----------------------------
수식어를 통한 특정기간,시간의 진입 신호가 나오질 않아서 문의 드립니다
2020-08-24
1225
글번호 141716
답변완료
수식어 부탁드립니다
if MarketPosition <= 0 Then
buy("b",atlimit,dayhigh-PriceScale*90);
if MarketPosition == 1 Then
exitlong("bx",atlimit,lowest(L,BarsSinceEntry)+PriceScale*50);
if MarketPosition >= 0 Then
sell("s",atlimit,daylow+PriceScale*600);
if MarketPosition == -1 Then
ExitShort("sx",atlimit,Highest(H,BarsSinceEntry)-PriceScale*57);
if sdate != sdate[1] Then
SetStopEndofday(55000);
if bdate != bdate[1] Then
SetStopEndofday(0);
-------------------------------------
위 수식어에서 청산후 진입신호는 청산후 20분이 지난 캔들의 하이로우에서 다시 진입신호가 되도록 수식어를 부탁 드립니다.
늘 감사합니다.
2020-08-24
1166
글번호 141714