커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4375
글번호 230811
답변완료
청산 수식좀 부탁합니다.
아래와 같은 청산 수식을 사용하고 있습니다.
2가지의 경우를 추가하고 싶습니다.
1. 진입 이후 최고가로 부터 20틱 빠지면 청산하라는 수식 추가
2. 진입가로 부터 10틱 이상 돌파후 최고가로 부터 20틱 빠지면 청산하라는 수식 추가
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*30 and var2 > C Then
ExitLong("매수청산");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*30 and var2 < C Then
ExitShort("매도청산");
2017-06-06
133
글번호 110181
답변완료
질문입니다.
다음과 같은 수식을 질문답변을 통해 받았습니다.
Condition1 = MarketPosition == 0 and MarketPosition(1) == 1 and IsExitName("StopLoss",1) == true;
Condition2 = MarketPosition == 0 and MarketPosition(1) == -1 and IsExitName("StopLoss",1) == true;
if marketposition(0) <= 0 and
crossup(c, ma(c, 5)) and
Condition1 == false then { buy("B", atmarket, def, 1); }
if marketposition(0) >=0 and
crossdown(c, ma(c, 10)) and
Condition2 == false then { sell("S", atmarket, def, 1); }
SetStopLoss(2.0, PointStop);
감사합니다.
위 시스템에서 한가지 더 질문사항이 있습니다.
선물거래에서 위의 시스템은 1계약으로 운영되는 시스템이고,
이번에는 1계약 더 피라미딩을 쌓으려고 합니다.
"B" 매수신호 발생 후 진입가격에서 4틱 상승 시 매수피라미딩으로 한계약 더 진입하고,
"S" 매도신호 발생 후 진입가격에서 4틱 하락 시 매도피라미딩으로 한계약 더 진입하도록 만들고 싶습니다.
진입은 AtStop으로 하고 싶습니다.
문제는 현재의 진입계약 수가 1계약이든, 피라미딩 진입이 있어 2계약이든,
첫진입에 관한 StopLoss가 발생할 경우 모두 청산하고 싶습니다.
즉, "B" 나 "S" 신호가 발생 후 피라미딩 진입이 발생하지 않더라도
StopLoss를 2.0 points 반대방향 움직임 시 발생시킵니다.
또한 "B" 나 "S" 신호 발생 후 피라미딩 진입이 발생하더라도,
"B" 나 "S"의 진입가격을 기준으로(피라미딩 진입가격 기준이 아닌)
2.0 points 반대방향 움직임 시 피라미딩까지 진입한 2계약 모두를 한꺼번에
StopLoss를 발생시켜 포지션을 청산하고 싶습니다.
예시로 부탁드립니다.
언제나 감사합니다.
2017-06-06
123
글번호 110180
답변완료
부탁드립니다.
1. 당일 데이트레이딩 시스템 구현중인데요 결론적으로 0.3포인트 수익달성하면 추가 진입신호를 발생하지 않게 하고 싶습니다.
기준:손절 0.3피 익절 0.3피 당일 매매종료
예시) 1)첫번째 매매 0.3 익절 당일매매종료
2)첫째매매 0.3손실 둘째매매 0.3익절 셋째매매 0.3익절 당일매매종료
3)첫째매매 0.3손실 둘째매매 0.3익절 셋째매매 0.3손실 넷째매매 0.3익절 다섯째 0.3익절 매매 종료
2017-06-06
129
글번호 110179
답변완료
수식부탁드림니다=================
//당일의데이타만사용하여 지표를표시하고 싶슴니다
//부탁드림니다
Input : shortPeriod(12), longPeriod(26), Period(9);
Var : MACDv(0), MACDsig(0),macdosc(0) ;
MACDv = MACD(shortPeriod, longPeriod);
MACDsig = ema(MACDv,Period);
macdosc = MACDv-ema(MACDv,Period);
if macdosc > 0 then
{
plot1(macdosc+0.4, "MACDOscillator+");
Plot2(0+0.4, "MACDOscillator-");
}
else
{
Plot1(0+0.4, "MACDOscillator+");
Plot2(macdosc+0.4, "MACDOscillator-");
}
Plot3(MACDv+0.4, "MACD",iff((MACDv )>(MACDv[1])+00,RED,iff((MACDv )<(MACDv[1] )-00,BLUE,BLACK)));
Plot4(MACDsig+0.4, "MACDSignal",iff((MACDsig )>(MACDsig[1])+00,RED,iff((MACDsig )<(MACDsig[1] )-00,BLUE,BLACK)));
PlotBaseLine1(0, "기준선1");
2017-06-06
147
글번호 110178
답변완료
부탁 드립니다,
도움 주심에 경배로 감사 인사 올립니다.
과거의 지정일시를 기준점(PP1)으로 하고
그점에서 부터의 과거 지정일시(PP2) 까지를 계산하여
기준점(PP1)부터 pivot선을 현재까지 긋는 수식과
과거 몇개봉을 기준시점(PP101)으로
그점에서 부터 과거 몇개봉(PP102)을 계산하여
기준시점(P101)부터 pivot선을 현재까지 긋는 수식
을 부탁드리고자 합니다.
참고수식)
Var : Pivot(0),R1(0),R2(0),R3(0),S1(0),S2(0),S3(0);
var : HH7(0),LL7(0),CC7(0),L71(0),H71(0),C71(0);
if bdate != bdate[1] Then{
HH7 = H;
LL7 = L;
H71 = HH7[1];
L71 = LL7[1];
C71 = CC7[1];
}
if H > HH7 Then
HH7 = H;
if L < LL7 Then
LL7 = L;
CC7 = C;
Pivot = (H71+L71+C71)/3;
2017-06-06
136
글번호 110177
답변완료
문의드립니다
var : P1(0),value(0);
P1 = (highest(H,5)+Lowest(L,5))/2;
value = P1-MA(c,5);
if value >= 0 then
plot1(value,"1",red);
else
plot1(value,"1",blue);
plotbaseline1(0,"1");
초보라서 잘 몰라서 문의드립니다
이 수식으로 강조와 신호시스템을 각각 만들어보고 싶습니다
1번.상승(red)시 캔들이 빨간색으로 계속 상승강조 그리고 하락(blue)시 캔들이 파란색으로 계속 강조
2번. 상승(red)시 매수신호 그리고 하락(blue)시 매도신호
1번은 강조구요 2번은 신호시스템 두가지 각각 좀 부탁드립니다
2017-06-06
128
글번호 110176
답변완료
53502 와 53503 질문에서
안녕하세요
지난번 5302번 질문과 5303 질문을 올린 바 있습니다.
제가 프로그래밍을 배운적이 없는 관계로 혼자 해결 하려 했어나 잘 되지 않습니다.
혹 시간이 되시면 지난번 질문의 지표 식 작성을 부탁합니다.
2017-06-05
126
글번호 110175
답변완료
추가 문의입니다.
안녕하세요.
아래 답변주신 수식에서 질문이 있습니다.
1. value1 = index; 이렇게 하는 이유가 crossup 이후 봉개수를 세기 위함인지요?
2. buy("b",AtMarket);의미를 알려주세요.
3. 매도수식중 (index >= value1+5 and countif(C>O,2) == 2)) Then 부분의
value1 이 value2 로 되어야 하는게 아닌지요?
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 안녕하세요
> 안녕하세요
예스스탁입니다.
input : Period(60);
var : Hval(0),Lval(0),UPV(0),MID(0),DOWNV(0);
Hval = highest(H,Period);
Lval = Lowest(L,Period);
UPV = Hval - (Hval-Lval)/3;
MID = Lval + (Hval-Lval)/2;
DOWNV = Lval + (Hval-Lval)/3;
var1 = ma(C,5);
var2 = ma(c,10);
var3 = ma(C,20);
if crossup(var2,var3) Then
value1 = index;
if CrossDown(var2,var3) Then
value2 = index;
if C > O and C > Mid and
index >= value1 and index < value1+10 and
(CrossDown(var1,var2) or
crossup(var1,var2) or
(var1 > var1[1] and var1[1] < var1[2]) or
(index >= value1+5 and countif(C<O,2) == 2)) Then
buy("b",AtMarket);
if MarketPosition == 1 Then{
if var1 < EntryPrice Then
exitlong("bx1");
if MaxContracts == CurrentContracts Then
exitlong("bP",Atlimit,EntryPrice+PriceScale*11,"",Floor(MaxContracts*0.5),1);
if CurrentContracts < MaxContracts and var2 < var2[1] Then
exitlong("bx2");
}
if C < O and C < Mid and
index >= value2 and index < value2+10 and
(CrossDown(var1,var2) or
crossup(var1,var2) or
(var1 < var1[1] and var1[1] > var1[2]) or
(index >= value1+5 and countif(C>O,2) == 2)) Then
sell("s",AtMarket);
if MarketPosition == -1 Then{
if var1 > EntryPrice Then
ExitShort("sx1");
if MaxContracts == CurrentContracts Then
ExitShort("sP",Atlimit,EntryPrice-PriceScale*11,"",Floor(MaxContracts*0.5),1);
if CurrentContracts < MaxContracts and var2 > var2[1] Then
ExitShort("sx2");
}
즐거운 하루되세요
> 한바다 님이 쓴 글입니다.
> 제목 : 안녕하세요
> 안녕하세요.
아래식 작성 부탁합니다.
1. 매수식 :
* 주가가 시가위에 있고 Trione Level(60) MID선위에 있을때 매수신호만 발생하며,
* 10/20이평이 crossup 한후, 10개봉관찰하는데.
* 5/10이평 Dead가 발생하거나,
5/10이평 Gold가 발생하거나,
5이평기울기가 하락후 상승으로 바뀌거나,
5개봉이후 2연속음봉발생후 이거나,
어느조건이든 먼저나오는 조건의 발생다음봉의 시가에 매수진입.
* 손절은 진입가격보다 5이평값이 아래로 갔을때 즉시 손절.
* 익절은 진입후 11틱 수익일때 절반수량익절, 10이평기울기가 꺽일때 전량청산.
2. 매도식 : (매수의 반대식)
* 주가가 시가아래에 있고 Trione Level(60) MID선아래에 있을때 매도신호만 발생하며,
* 10/20이평이 crossdown 한후, 10개봉관찰하는데.
* 5/10이평 Dead가 발생하거나,
5/10이평 Gold가 발생하거나,
5이평기울기가 상승후 하락으로 바뀌거나,
5개봉이후 2연속양봉발생후 이거나,
어느조건이든 먼저나오는 조건의 발생다음봉의 시가에 매수진입.
* 손절은 진입가격보다 5이평값이 위로 갈때 즉시 손절
* 익절은 진입후 11틱 수익일때 절반수량익절, 10이평기울기가 꺽일때 전량청산.
늘 감사드립니다.
잘 부탁합니다.
2017-06-05
138
글번호 110174
답변완료
문의 드립니다
안녕하세요 진입에 atlimit 와 atmarket 는 시뮬레이션해보면 큰차이가 나는데
무슨이유인지요 ? 슬리피지도 다르게 주어야 한다고하고 ?
if idx == 1 && var1 > var2
Then buy ("a",atLimit,c);
Else
if var2 < var3 && CrossUp(var1,var2)
then buy("b",atLimit,c);
if gap < -갭1 && CrossUp(var1,var2)
then buy("c",atLimit,c);
if idx == 1 && var1 < var2
Then sell("d",atLimit,c);
Else
if var2 > var3 && crossdown(var1,var2)
Then sell("e",atLimit,c);
if gap > 갭1 && crossdown(var1,var2)
Then sell("f",atLimit,c);
if idx == 1 && var1 > var2
Then buy ("a",AtMarket,c);
Else
if var2 < var3 && CrossUp(var1,var2)
then buy("b",AtMarket,c);
if gap < -갭1 && CrossUp(var1,var2)
then buy("c",AtMarket,c);
if idx == 1 && var1 < var2
Then sell("d",AtMarket,c);
Else
if var2 > var3 && crossdown(var1,var2)
Then sell("e",AtMarket,c);
if gap > 갭1 && crossdown(var1,var2)
Then sell("f",AtMarket,c);
상세한 설명 부탁드립니다 atlimit 는 슬리피지 0.05 atmarket 은
슬리피지 0.03 이 맞는지요 ? 아니면 똑같이 주어야 하는지요 ?
감사합니다
2017-06-05
131
글번호 110173