커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7715
글번호 230811
답변완료
식 요청 봉의값
안녕하세요
[질문]
선물 일간 차트 에서 매매할거고요
방법은 현재가가 ma56 이동평균선 상승 되어 있고
매일 오후3시00분에 하나의 봉이 완성되었다 하고
첯봉이 음봉이면 3시 매수
청산은 현재가가 ma3 하락돌파하면 청산
현재가가 ma56 이동평균선 하락 되어 있고
매일 오후3시00분에 하나의 봉이 완성되었다 하고
첯봉이 양봉이면 3시 매도
청산은 현재가가 ma3 상승돌파하면 청산
감사^^
2011-06-24
631
글번호 40118
답변완료
수식문의
매수진입가 대비 -3% 를 2회이상 하향돌파 하면 매수청산
2011-06-24
663
글번호 40116
답변완료
수식문의 합니다.
현재 조건이 맞고 5봉후에도 조건이 맞으면 매수하라.
이건 어떻게 작성해야 하는지요.
수고하십시요.
2011-06-24
621
글번호 40111
러블리 님에 의해서 삭제되었습니다.
2011-06-24
291
글번호 40110
답변완료
시스템식
안녕하세요 재수정부탁드립니다.
최초진입후 다음신호시 청산만되고 진입이안되고요 이익청산후는 진입이되는데
식과식사이에 진입신호시 청산만 되고있으며 이익청산후 신호발생후 다음신호면 청산과동시에진입식부탁드립니다. 모든식을 시간대 별로 사용 하고자 합니다
현재의방법으론 청산만됩니다
input : value51(0.5), value52(0.5);
var : cnt(0), bpos(0), bval(0), spos(0), sval(0);
var : bpos2(0), bval2(0), spos2(0), sval2(0);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
If (stime >= 90000 and stime < 93000) and Condition2 == true THEN {
//최초 진입이 매수일 경우
if date != date[1] then {
cnt = 0;
bpos = 0;
spos = 0;
}
if dayindex > 1 then{
if cnt==0 and C > H[1]+value51 then {
sell("B최초진입");
bpos = 1;
bVal = C;
cnt = 1;
}
if spos == 1 and crossup(C, sval+value52) then {
buy("B재진입2");
bval = C;
spos = 0;
bpos = 1;
}
}
if date != date[1] then {
bpos2 = 0;
spos2 = 0;
}
if dayindex >= 1 then{
if cnt==0 and C > L[1]-value51 then {
buy("S최초진입");
spos2 = 1;
sVal2 = C;
cnt = 1;
}
if bpos2 == 1 and crossdown(C, bval2-value52) then {
sell("S재진입2");
sval2 = C;
bpos2= 0;
spos2 = 1;
}
}
}
//---------------DMI Long Entry---------------------------------------
Inputs: DMILen(3), Consec(3), MinDiff(0);
Variables: DMIDiff(0);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
DMIDiff = DIPlus(DMILen) - DIMinus(DMILen);
If DMIDiff[Consec] > 0 Then Begin
If DMIDiff >= MinDiff AND CountIF(DMIDiff > DMIDiff[1], Consec) == Consec Then
Buy ("DMI");
End;
//-------------다이버전스------------------------
Input : Periodd(5), Periodd1(3), Periodd2(3);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
value11 = StochasticsK(Periodd,Periodd1);
value12 = StochasticsD(Periodd,Periodd1,Periodd2);
If CrossDown(value11, value12) Then {
var11 = C;#데드크로스시 발생시 초기값
var12 = var1[1]; # 직전 데드크로스 구간의 종가 중 최저가
}
#가장 최근 데드크로스 구간의 종가중 최저가 계산
if value11 < value12 Then{
if C < var11 Then
var11 = C;
}
if CrossUp(value11,value12) Then{
var13 = value11; #골든크로스시 value1값
var14 = var13[1];#직전골든크로스시 value1값
// if var13 > var14 and var11 < var12 Then
// buy("상승다이버전스",AtStop,Low);
}
//---------------------------------------------------------------------------
Input : Period12(12), Period121(5), Period122(5);
value41 = StochasticsK(Period12,Period121);
value42 = StochasticsD(Period12,Period121,Period122);
If CrossDown(value41, value42) Then {
var41 = C;#데드크로스시 발생시 초기값
var42 = var41[1]; # 직전 데드크로스 구간의 종가 중 최저가
}
#가장 최근 데드크로스 구간의 종가중 최저가 계산
if value41[1] < value42[1] Then{
if C < var41 Then
var41 = L;
}
if CrossUp(value1,value2) Then{
var43 = value41; #골든크로스시 value1값
var44 = var43[1];#직전골든크로스시 value1값
if var43 > var44 and var41 < var42 Then
buy("골든크로스시",atmarket);
}
input : shortPeriod9(12), longPeriod9(26), Period9(9);
var : MACDV(0),MACDS(0),Gval(0),MACDval(0);
MACDV = MACD(shortPeriod9, longPeriod9);//MACD
MACDS = ema(MACD(shortPeriod9, longPeriod9), Period9);//MACD signal
if CrossDown(MACDV, MACDS) then {
var11 = MACDV; #데드시 MACD값
var12 = var11[1]; #직전 데드시 MACD값
var13 = index; #데드시 Index
var14 = var13[1]; #직전 데드시 Index
if var12 > 0 and var11 < var12 and var13 <= var14+40 Then
Sell("데드시");
}
//-------------저점이높아지는다이버젼스---------------------------------
Input : Period(20), Period1(12), Period2(12);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
value1 = StochasticsK(Period,Period1);
value2 = StochasticsD(Period,Period1,Period2);
If CrossDown(value1, value2) Then {
var1 = C;#데드크로스시 발생시 초기값
var2 = var1[1]; # 직전 데드크로스 구간의 종가 중 최저가
}
#가장 최근 데드크로스 구간의 종가중 최저가 계산
if value1 < value2 Then{
if C < var1 Then
var1 = C;
}
if CrossUp(value1,value2) Then{
var3 = value1; #골든크로스시 value1값
var4 = var3[1];#직전골든크로스시 value1값
// if var3 > var4 and var1 < var2 Then
// buy("다이버젼스");
}
//---------------------------------------------------------------------
Inputs: Length71(10), Tail(2), NBars(3);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
If CountIF(HangingMan(Length71, Tail), NBars) > 0 Then
Sell ("HM", AtStop, Low);
//---------------------5일이동평균상승---------------------------------
If (stime > 93000 and stime < 113000) and Condition2 == true THEN {
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
var :O_Price(0);
O_Price = (Dayopen+Dayopen(1)+Dayopen(2)+Dayopen(3)+Dayopen(4))/5;
if CrossUp(C, O_Price) Then
{
buy("5일이동평균d");
}
}
//-------------------rsi------------------------------------
If (stime > 90000 and stime < 120000) and Condition2 == true THEN {
Inputs: RSILength1(10), OverBought1(70);
If CrossDown(RSI(RSILength1), OverBought1) Then
Sell ("RSI");
}
//--------------------------------------------------------------------------
If (stime > 90000 and stime < 110000) and Condition2 == true THEN {
Inputs: Lengthu1(10),Lengthu2(3),Lengthu3(3),OverSoldu(30),OverBoughtu(70);
Variables: KLineu(0), DLineu(0);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
KLineu = StochasticsK(Lengthu1,Lengthu2);
DLineu = StochasticsD(Lengthu1,Lengthu2,Lengthu3);
If CrossDown(KLineu, DLineu) AND KLineu > OverBoughtu AND DLineu > OverBoughtu Then
Sell ("Stch_SE");
}
//--------------------------------------------------------------
If (stime > 100000 and stime < 110000) and Condition2 == true THEN {
Input : P1(3), P2(20), P3(30);
var : 단기(0), 중기(0), 장기(0);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
단기 = Ma(C, p1);
중기 = Ma(C, p2);
장기 = Ma(C, p3);
Var1 = Highest(H, BarsSinceEntry+1);
sell("추적청산", Atstop, Var1-ATR(15)*2);
}
//---------------------------------------------------------
//---------------------Momentum-----------------------
If (stime > 130000 and stime < 150000) and Condition2 == true THEN {
Inputs: Length(10), Pval(0.05);
Variables: Mom(0);
Mom = C- C[Length];
If Mom > 0 AND Mom >= Mom[1] AND MarketPosition() <> 1 Then
Buy ("Momentum", AtStop, High + Pval);
}
//-------------------------cci과매도과매수---------------
If (stime > 130000 and stime < 150000) and Condition2 == true THEN {
Input : Periodp(9);
Var : valuep(0);
valuep = CCI(Periodp);
# 매수/매도청산
If CrossUp(valuep,-100) Then
{
Buy("cci");
}
# 매도/매수청산
If CrossDown(valuep,50) Then
{
Sell("cci매도");
}
}
If (stime >= 120000 and stime < 145000) and Condition2 == true THEN {
Inputs: Length1(5),Length2(3),Length3(3),OverSold11(40),OverBought11(70);
Variables: KLine(0), DLine(0);
Var : value(0);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
KLine = StochasticsK(Length1,Length2);
DLine = StochasticsD(Length1,Length2,Length3);
If Crossup(KLine[5], DLine[6]) AND KLine[5] < OverSold11 AND DLine[5] < OverSold11 Then ##스토매수 신호을 3개봉뒤에 신호나옴
buy("스토매수");
//if MarketPosition == 1 Then{
//sell("반대매도22",AtStop,L[BarsSinceEntry]-1-PriceScale);
//}
If (stime >= 120000 and stime < 145000) and Condition2 == true THEN {
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
If CrossDown(KLine, DLine) AND KLine > OverBought11 AND DLine < OverBought11 Then
sell ("스토매도");
}
}
If (stime >= 130000 and stime < 150000) and Condition2 == true THEN {
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
if min(c,O) > ma(c,3) and min(C,H) > ma(c,20) Then
buy("이평매수");
if MarketPosition == 0 and max(c,O) < ma(c,5) and max(C,H) > ma(c,20) Then
sell("이평매도");
}
//--------------------------------------------------------------------------------
Input : Periodo(12), sigPeriodo(9);
value15 = TRIX(Periodo);
value25 = ema(value15, sigPeriodo);
# 매도/매수청산
If CrossDown(value15, value25) Then
{
Sell("Hanging Man");
}
//--------------------------------------------------------------------------------
If (stime >= 94000 and stime < 133000) and Condition2 == true THEN {
Inputs: Length333(5), ATRs(1.5), APval(0.05);
Variables: KLower(0), SellSetup(False), SellBase(0);
Condition1 = IsExitName("StopProfittarget",1) and ExitDate(1) == sdate;
Condition2 = (Condition1 == true and MarketPosition == 0 and BarsSinceExit(1) >= 1) or (Condition1 == false);
KLower = KeltnerChannel(Close, Length333, -ATRs);
Condition19 = CrossDown(Close, KLower[1]);
If MarketPosition() == -1 OR Close > MA(Close, Length333) Then
SellSetup = False;
Else
If Condition19 Then Begin
SellSetup = True;
SellBase = Low;
End;
{
If SellSetup Then
Sell ("Kltr", AtStop, SellBase - APval);
}
}
//-------------------------------------------------------------------------------------------
Vars : tf(5), firstBar(0), dayIdx(0);
Vars : mPos(0), buyCnt(0), sellCnt(0), bseIdx(0), ehh(0), ell(0), ehc(0), elc(0);
Arrays: bSetup[10](false), sSetup[10](false), cSetup[10](false);
Arrays: trTime[10](false);
Arrays: rangeD[10](0);
Arrays: r1[2](0), r2[2](0), pp[2](0), s1[2](0), s2[2](0);
Vars : stretch(0), vma(0);
if CurrentBar<=0 || (CurrentBar>0 && Date>Date[1]) then {
firstBar = CurrentBar;
buyCnt = 0;
sellCnt = 0;
}
dayIdx = CurrentBar - firstBar;
mPos = MarketPosition(0);
if mPos==1 && mPos<>mPos[1] then
buyCnt = buyCnt + 1;
if mPos==-1 && mPos<>mPos[1] then
sellCnt = sellCnt + 1;
bseIdx = BarsSinceEntry(0);
ehh = Highest(h, bseIdx+1);
ell = Lowest(l, bseIdx+1);
ehc = Highest(c, bseIdx+1);
elc = Lowest(c, bseIdx+1);
for value1=1 to 10 {
rangeD[value1] = DayHigh(value1)-DayLow(value1);
}
pp[1] = (DayHigh(1)+DayLow(1)+DayClose(1)*2)/4;
r1[1] = 2*pp[1] - DayLow(1);
s1[1] = 2*pp[1] - DayHigh(1);
r2[1] = pp[1] + (r1[1] - s1[1]);
s2[1] = pp[1] - (r1[1] - s1[1]);
if DayOpen(0)>DayClose(1) then
pp[2] = (DayHigh(1)+DayClose(1)+2*DayLow(1))/2;
else
if DayOpen(0)<DayClose(1) then
pp[2] = (2*DayHigh(1)+DayClose(1)+DayLow(1))/2;
else
pp[2] = (DayHigh(1)+2*DayClose(1)+DayLow(1))/2;
r1[2] = pp[2] - DayLow(1);
s1[2] = pp[2] - DayHigh(1);
vma = Ma(c,260);
trTime[1] = dayIdx<=(120/tf); #당일 봉수가 24개봉 이하
trTime[2] = dayIdx<=(300/tf); #당일 봉수가 60개봉 이하
trTime[3] = dayIdx<=(180/tf); #당일 봉수가 36개봉 이하
trTime[4] = dayIdx<=(180/tf); #당일 봉수가 36개봉 이하
trTime[5] = dayIdx<=(300/tf); #당일 봉수가 60개봉 이하
trTime[6] = dayIdx==3; #당일 3번째봉
cSetup[1] = (buyCnt+sellCnt)<2 && trTime[1]==true; #매수진입횟수+매도진입횟수가 2 미만이고 당일 봉수가 24개봉 이하
cSetup[2] = (buyCnt+sellCnt)<2 && trTime[2]==true; #매수진입횟수+매도진입횟수가 2 미만이고 당일 봉수가 60개봉 이하
cSetup[3] = (buyCnt+sellCnt)<1 && trTime[3]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 봉수가 36개봉 이하
cSetup[4] = (buyCnt+sellCnt)<1 && trTime[4]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 봉수가 36개봉 이하
cSetup[5] = (buyCnt+sellCnt)<1 && trTime[5]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 봉수가 60개봉 이하
cSetup[6] = (buyCnt+sellCnt)<1 && trTime[6]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 3번째봉
# 종가가중 피봇 : 리버스 허용
bSetup[1] = Bids>Asks*1.5 && c>r2[1];
sSetup[1] = Bids<Asks/1.5 && c<s2[1];
bSetup[2] = Bids>Asks && DayLow<s1[1] && CrossUp(c,s1[1]);
sSetup[2] = Bids<Asks && DayHigh>r1[1] && CrossDown(c,r1[1]);
# 디마크 : 리버스 불허
stretch = (DayHigh(1)-DayLow(1))/3;
bSetup[3] = c>(DayOpen + stretch) && DayOpen>r1[2];
sSetup[3] = c<(DayOpen - stretch) && DayOpen<s1[2];
bSetup[4] = DayOpen<s1[2] && c>s1[2] && DayLow>(DayOpen - stretch) && h<DayHigh;
sSetup[4] = DayOpen>r1[2] && c<r1[2] && DayHigh<(DayOpen + stretch) && l>DayLow;
# 이평 돌파
bSetup[5] = (DayOpen<vma && c>vma[1]);
sSetup[5] = (DayOpen>vma && c<vma[1]);
# 갭필
bSetup[6] = DayOpen<DayClose(1)*0.99 && Bids>Asks*1.5 && c>DayOpen;
sSetup[6] = DayOpen>DayClose(1)*1.01 && Bids<Asks/1.5 && c<DayOpen;
if cSetup[1] then {
if dayindex > 1 then{
if bSetup[1] then Sell("3.2.le");
if sSetup[1] then buy("3.2.se");
}
}
if cSetup[2] then {
if dayindex > 1 then{
if bSetup[2] then Buy("4.1.le");
if sSetup[2] then Sell("4.1.se");
}
}
if cSetup[3] then {
if dayindex > 1 then{
if bSetup[3] then Sell("3.0.le");
if sSetup[3] then buy("3.0.se");
}
}
if cSetup[4] then {
if dayindex > 1 then{
if bSetup[4] then Buy("4.0.le");
if sSetup[4] then Sell("4.0.se");
}
}
if cSetup[5] then {
if dayindex > 1 then{
if bSetup[5] then sell("2.0.le");
if sSetup[5] then buy("2.0.se");
}
}
if cSetup[6] then {
if dayindex > 1 then{
if bSetup[6] then Buy("6.0.le");
if sSetup[6] then Sell("6.0.se");
}
}
2011-06-24
777
글번호 40109
답변완료
손절규칙 질문드립니다.
선물 매도 로직의 손절 규칙을 최근 10거래일간 최고점으로 잡았는데요
손절 규칙이 작동을 잘 안하는거 같아서 식에 이상이 있나 질문 드립니다.
제가 작성한 식은
if MarketPosition <> 0 Then
{
MessageLog("손절가1 %.2f", Highest(H,10));
MessageLog("손절가2 %.2f", EntryPrice + 2 * ATR(20));
}
9시에 점검 했을때 손절가1이 274.10 이었고
장중에 274.10을 넘었음에도 손절 신호가 안나오고 있습니다.
혹시 잘못된 부분이 있나 확인 좀 부탁드립니다.
실시간으로 전일까지 계산된 값으로 저가격이 도달하면 청산... 하는게 원하는 로직입니다.
2011-06-24
683
글번호 40104
답변완료
종목검색에서~~
종목검색을요~~
A.조건
1. 120일선 기울기 상향 & 120일 240일 정배열
2. 20선 기울기 상향
3. 시가 5일선위에 있는것
B.조건
1. 120일선 기울기 상향
2. 240일선 기울기 상향
3. 캔들이 120일선과 240일선 사이 위치
4..시가 양봉인거
A 또는 B 조건을 만족(동시가 아니고 둘중 하나라도)하는 종목 검색식 부탁드립니다 .
감사합니다..
2011-06-24
614
글번호 40103
답변완료
일봉에 선긋기
일봉에 주시초가(((월요일 시초가를 의미)는 어덯게 긋나요~~~
예) 분봉에 일시초가는
plot1(dayopen);
부탁드립니다
2011-06-24
621
글번호 40101
답변완료
간단 질문
예스트레이더가 요즘 나오는 테블릿pc에서도 구동이 잘 되는지 궁금합니다
그리고, 스마트폰으로도 매매가 가능한지요?
그리고 19296 질문에 직접 전화주라고 답변이 왔군요
그 지표들을 살펴보니까 그중 하나의 지표중에 한 값을 표시가 않되도록
하니까 정상적으로 보여 지네요..
그 값이 너무 넓은 범위를 차지하는 것도 아닌데 왜 그런지 이해가 않됨.
2011-06-24
622
글번호 40100