커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7470
글번호 230811
답변완료
청산가 이하 매수
if crossup(ma(c,5),ma(c,20) then buy();
SetStopTrailing(1,2,PointStop);
트레일링 스탑으로 청산된 가격에서 1 point 하락시 매수코자 합니다.
2015-04-16
161
글번호 85101
답변완료
골든크로스, 데드크로스 발생 봉 시간 출력관련
아래 소스와 같이 골든크로스 시간을 표시하려고 별의 별 시도를 다해봤습니다만
MessageLog에 시간값은 Null이 찍힙니다.
제가 뭘 잘못했는지 체크해주시면 감사하겠습니다. ㅜㅜ;;;
// 골든크로스 및 데드크로스 시간을 표시한다.
Text_Delete(t4);
If (CrossUp(이동평균1, 이동평균2)) Then
{
Var2 = Text_GetTime(t4);
Var3 = Text_New(sDate, STime, Var2, "골든크로스 발생:" + NumToStr(Var2, 2));
MessageLog("봉시간 %f", Var1);
MessageLog("변수시간 %f", Var2);
MessageLog("시간 %f", Var3);
}
Else If (CrossDown(이동평균1, 이동평균2)) Then
{
t4 = Text_New(sDate, STime, Text_GetTime(t4), "데드크로스 발생:" + NumToStr(Text_GetTime(t4), 2));
}
2015-04-16
185
글번호 85099
답변완료
문의드립니다.
선물차트 기준으로 문의드립니다.
120틱차트에서 현재봉의 틱수가 110틱이 되었을때를 봉 상단에 검색하고 싶습니다.
이때 이전까지의 봉은 신호가 없게 하고 현재봉만 신호가 나타나게 하고 싶습니다.
수식을 어떻게 작성해야 하는지요?
부탁드립니다. 수고하세요. 감사합니다.!!!
2015-04-16
157
글번호 85095
답변완료
수식문의 드립니다
수고하십니다
질문 1
9시 10분부터 또는 당일 10번째 봉부터 진입하고 싶은데 첫봉에서 진입이 되네요
점검 부탁드립니다
If sTime > 091000 and MarketPosition == 0 AND K == 1 AND L < Var2 AND C > L Then
Buy("Su", AtMarket);
질문 2
청산후 5봉 경과 후 6봉째부터 감시후 조건만족하면 진입하도록 가능하나요
감사합니다
2015-04-16
161
글번호 85091
답변완료
신호변경 수식요청
안녕하세요?
아래 수식에서 발생되는 신호를 반대로 하고 싶습니다.
즉, 매수신호[매도신호]에 매도[매수], 매수청산[매도청산]에 매도청산[매수청산]을 나오게 하고 싶습니다.
---------------------------------------------------------------------------------------
var : entry(0);
if bdate != bdate[1] Then
entry = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry = entry+1;
var : ho(0),OL(0),HL(0);
var : maho(0),maOL(0),maHL(0);
var : cnt(0),sumho(0),sumOL(0),sumHL(0);
var : EntryCnt(0);
ho = Dayhigh-Dayopen;
OL = DayOpen-DayLow;
HL = DayHigh-DayLow;
sumho = 0;
sumOL = 0;
sumHL = 0;
for cnt = 1 to 10{
sumho = sumho + (dayhigh(cnt)-dayopen(cnt));
sumOL = sumOL + (DayOpen(cnt)-DayLow(cnt));
sumHL = sumHL + (DayHigh(cnt)-DayLow(cnt));
}
maho = sumho/10;
maOL = sumOL/10;
maHL = sumHL/10;
var1 = ~;
var2 = ~;
var3 = ~;
var4 = ~;
var5 = ~;
var6 = ~;
var9 = ~;
var10 = ~;
var7 = ~;
var8 = ~;
if MarketPosition == 0 and entry == 0 Then{
if var7 > var8 Then
sell("s",AtStop,var7);
if var7 < var8 Then
buy("b",AtStop,var7);
}
if MarketPosition == -1 Then{
ExitShort("sp",atlimit,var9);
ExitShort("sl",AtStop,var6);
}
if MarketPosition == 1 Then{
exitlong("bp",atlimit,var6);
ExitLong("bl",AtStop,var9);
}
2015-04-16
154
글번호 85084
답변완료
진입 봉 종가 청산 부탁합니다.
1.
input : 시가대비틱수(5),손절틱수(10),익절틱수(20),최고수익대비하락틱수(10);
input : X(5),Y(10),A(5),B(5);
if MarketPosition <= 0 Then
buy("b",AtStop,NextBarOpen+PriceScale*시가대비틱수);
if MarketPosition >= 0 then
sell("s",AtStop,NextBarOpen-PriceScale*시가대비틱수);
if MarketPosition == 1 Then{
exitlong("btr1",AtStop,Highest(H,BarsSinceEntry)-PriceScale*최고수익대비하락틱수);
if highest(h,BarsSinceEntry) >= EntryPrice+PriceScale*x and highest(H,BarsSinceEntry) < EntryPrice+PriceScale*y Then
exitlong("btr2",AtStop,highest(H,BarsSinceEntry)-PriceScale*a);
if highest(h,BarsSinceEntry) >= EntryPrice+PriceScale*y Then
exitlong("btr3",AtStop,highest(H,BarsSinceEntry)-PriceScale*b);
}
if MarketPosition == -1 Then{
ExitShort("sx",AtStop,Lowest(L,BarsSinceEntry)+PriceScale*최고수익대비하락틱수);
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*x and Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*y Then
ExitShort("str2",AtStop,Lowest(L,BarsSinceEntry)+PriceScale*a);
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*y Then
ExitShort("str3",AtStop,Lowest(L,BarsSinceEntry)+PriceScale*b);
}
SetStopProfittarget(PriceScale*손절틱수,PointStop);
SetStopLoss(PriceScale*익절틱수,PointStop);
2번
input : 시가대비틱수(5),손절틱수(10),익절틱수(20),최고수익대비하락틱수(10);
input : X(5),Y(10),A(5),B(5);
if MarketPosition <= 0 and NextBarOpen >= C Then
buy("b",AtStop,NextBarOpen+PriceScale*시가대비틱수);
if MarketPosition >= 0 and NextBarOpen < C then
sell("s",AtStop,NextBarOpen-PriceScale*시가대비틱수);
if MarketPosition == 1 Then{
exitlong("btr1",AtStop,Highest(H,BarsSinceEntry)-PriceScale*최고수익대비하락틱수);
if highest(h,BarsSinceEntry) >= EntryPrice+PriceScale*x and highest(H,BarsSinceEntry) < EntryPrice+PriceScale*y Then
exitlong("btr2",AtStop,highest(H,BarsSinceEntry)-PriceScale*a);
if highest(h,BarsSinceEntry) >= EntryPrice+PriceScale*y Then
exitlong("btr3",AtStop,highest(H,BarsSinceEntry)-PriceScale*b);
}
if MarketPosition == -1 Then{
ExitShort("sx",AtStop,Lowest(L,BarsSinceEntry)+PriceScale*최고수익대비하락틱수);
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*x and Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*y Then
ExitShort("str2",AtStop,Lowest(L,BarsSinceEntry)+PriceScale*a);
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*y Then
ExitShort("str3",AtStop,Lowest(L,BarsSinceEntry)+PriceScale*b);
}
SetStopProfittarget(PriceScale*손절틱수,PointStop);
SetStopLoss(PriceScale*익절틱수,PointStop);
위 두 로직에 진입 봉 종가 청산 함수가 없는것 같습니다.
" 진입 봉 종가 청산 " 함수를 두 로직에 넣어 주십시요.
감사 합니다.
2015-04-15
149
글번호 85083
답변완료
수식문의드립니다
안녕하세요
간단한 시스템문의드립니다.
현재부터 만기까지(만기가 20일이상 남았을때) 가격이 1.5까지 하락하면
6계약을 매수하고 1.9가되면 청산(청산되면 문자로 통보)
첫번째 매수 6계약이 청산되지 못하고 가격이 하락하여 1.3이되면
추가로 6계약 매수
12계약을 1.7에 모두 청산(청산시 문자로 통보)
이런 로직을 만들고 싶은데 수식좀 부탁해요~
2015-04-15
145
글번호 85082
답변완료
청산후 동일방향 재진입금지 시스템
항상감사드립니다.
아래시스템에서 청산후 같은방향으로 재진입금지하는 시스템을 구현하고 싶습니다.
##################################
##### RSI 시스템_Period(20) #####
##################################
input : Period1(20);
var81 =(AccumN(iff(C-C[1]>0,C-C[1],0),Period1)/AccumN(iff(C-C[1]>0,C-C[1],C[1]-C),Period1)*100);
if var81 <= 30 Then # rsi_30 #
var82 = O;
if var81 >= 70 Then # rsi_70 #
var83 = H;
if var82[1] < var82 Then
var40=1; # rsi_30 상승방향#
if var82[1] > var82 Then
var40=-1; # rsi_30 하락방향#
if var83[1] > var83 Then
var80=1; # rsi_70 하락방향#
if var83[1] < var83 Then
var80=-1; # rsi_70 상승방향#
if MarketPosition == 1 and
var80 == 1 and #하락#
H <= var81 And
(var83[1]-var83) >0.00300 Then
exitlong("eBb_Rsi70");
if MarketPosition ==-1 and
var80 == 1 and #하락#
H <= var81 And
(var83[1]-var83) >0.0030 Then
ExitShort("eSs_Rsi70");
if MarketPosition ==-1 and
var40 == 1 and #상승#
L >= var81 And
(var82-var82[1]) >0.0030 Then
ExitShort("eSs_Rsi30");
if MarketPosition == 1 and
var40 == 1 and #상승#
L >= var81 And
(var82-var82[1]) >0.0030 Then
exitlong("eBb_Rsi30");
##################################
##### RSI 시스템_Period(15) #####
##################################
input : Period(15);
var71 =(AccumN(iff(C-C[1]>0,C-C[1],0),Period)/AccumN(iff(C-C[1]>0,C-C[1],C[1]-C),Period)*100);
if var71 <= 30 Then # rsi_30 #
var72 = O;
if var71 >= 70 Then # rsi_70 #
var73 = H;
if var72[1] < var72 Then
var30=1; # rsi_30 상승방향#
if var72[1] > var72 Then
var30=-1; # rsi_30 하락방향#
if var73[1] > var73 Then
var70=1; # rsi_70 하락방향#
if var73[1] < var73 Then
var70=-1; # rsi_70 상승방향#
if MarketPosition == 1 and
var70 == 1 and #하락#
H <= var71 And
(var73[1]-var73) >0.0030 Then
exitlong("eB_Rsi70");
if MarketPosition == -1 and
var70 == 1 and #하락#
H <= var71 And
(var73[1]-var73) >0.0030 Then
ExitShort("eS_Rsi70");
if MarketPosition == -1 and
var30 == 1 and #상승#
L >= var71 And
(var72-var72[1]) >0.0030 Then
ExitShort("eS_Rsi30");
if MarketPosition == 1 and
var30 == 1 and #상승#
L >= var71 And
(var72-var72[1]) >0.0030 Then
exitlong("eB_Rsi30");
######################
##### 매매식 1 #####
######################
if MarketPosition <= 0 and
countif(var72==var72[1],5) == 5 And
var12==1 and var58==1 and c>var72 Then
buy("B_R30");
if marketPosition > 0 and
countif(var72==var72[1],5) == 5 And
var12==-1 and var58==-1 and c<var72 Then
sell("S_R30");
if MarketPosition <= 0 and
countif(var73==var73[1],5) == 5 And
var12==1 and var58==1 and c>var73 Then
buy("B_R70");
if MarketPosition >0 and
countif(var73==var73[1],5) == 5 And
var12==-1 and var58==-1 and c<var73 Then
sell("S_R70");
### 손절1 ###
SetStopLoss(PriceScale*50,PointStop);
######################
##### 매매식 2 #####
######################
########## 1차 저항선_var21 ##########
if crossup(C,var21) Then{
var51 = 1;
idx = index;
}
if CrossDown(C,var21) Then{
var51 = -1;
idx = index;
}
if MarketPosition <= 0 and
var51 == 1 and
index > idx and index <= idx+30 and
var21 >= L and c > var21 and dp2>dm2 then
buy("b_21");
if MarketPosition > 0 and
var51 == -1 and
index > idx and index <= idx+30 and
var21 <= H and c < var21 and dp2<dm2 Then
sell("s_21");
########## 1차 지지선_var22 ##########
if crossup(C,var22) Then{
var52 = 1;
idx1 = index;
}
if CrossDown(C,var22) Then{
var52 = -1;
idx1 = index;
}
if MarketPosition <= 0 and
var52 == 1 and
index > idx1 and index <= idx1+30 and
var22 >= L and c > var22 and dp2>dm2 then
buy("b_22");
if MarketPosition > 0 and
var52 == -1 and
index > idx1 and index <= idx1+30 and
var22 <= H and c < var22 and dp2<dm2 Then
sell("s_22");
########## 중심선_var23 ##########
if crossup(C,var23) Then{
var53 = 1;
idx2 = index;
}
if CrossDown(C,var23) Then{
var53 = -1;
idx2 = index;
}
if MarketPosition <= 0 and
var53 == 1 and
index > idx2 and index <= idx2+30 and
var23 >= L and c > var23 and dp2>dm2 then
buy("b_23");
if MarketPosition > 0 and
var53 == -1 and
index > idx2 and index <= idx2+30 and
var23 <= H and c < var23 and dp2<dm2 Then
sell("s_23");
2015-04-15
189
글번호 85081
답변완료
수식 좀 부탁드립니다.
당일 종가 0봉 기준...
21봉전부터 31봉전 사이에
최대 거래량이 발생한날의 거래량을 A라고 하고
20봉전 거래량이 A날의 거래량 대비 50%이하이고,
20봉전 종가가 -5% ~ +5% 사이인 종목을 검색하고 싶습니다.
2015-04-15
168
글번호 85076