커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4502
글번호 230811
답변완료
확인 요청 드립니다.
< 61567번 글>
* 전일 해주신 로직이 반영이 안되어 다시 부탁 드립니다. <그림참조>
아래 처럼 변경 적용 했는데 제가 의도 했던거랑 안되네요.
다시 한번 부탁 드립니다.
* <그림1> 처럼 목표수익이 30틱 나면 그후에
두가지 경우가 발생 합니다.
MarketPosition ==1경우 (BUY()매수로 수익 경우)
목표수익 30틱후 10틱이 줄어 20틱 이하로 수익이 줄어 들면 매도A
목표수익 30틱후 수익이 늘어 나면서 5일선이 20일선 크로스다운 하면 매도B
MarketPosition == -1 경우 (SELL() 매도로수익 경우) ▶ 그림2 경우 입니다.
목표수익 30틱후 10틱이 줄어 20틱 이하로 수익이 줄어 들면 매도C
목표수익 30틱후 수익이 늘어 나면서 5일선이 20일선 크로스업하면 매도D <그림2>
로직이 필요 합니다.
부탁좀 드리겠습니다.
<제가 적용한 로직>
if MarketPosition == 1 then{ ExitLong("30만원달성1",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
{ if c < o and c<ma(c,5) then exitlong("bx");} }
if MarketPosition == -1 then{ExitShort("30만원달성2",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts));
{ if c > o and c>ma(c,5) then ExitShort("sx"); } }
로직 수정좀 부탁 드리겠습니다.
######### 지난번 글 < 61567번 글> ###############
안녕하세요
예스스탁입니다.
1
var : T(0);
var1 = ma(c,5) ;
var2 = ma(c,20) ;
if crossup(var1,var2) then
{
var3 = highest(H,50);
var4 = lowest(L,50);
T = 1;
if var3 >= var4+PriceScale*30 Then
T = 2;
}
if CrossDown(var1,var2) then
{
var3 = highest(H,50);
var4 = lowest(L,50);
T = -1;
if var3 >= var4+PriceScale*30 Then
T = -2;
}
if T == 2 and crossup(c,var3) Then
buy();
if T == -2 and CrossDown(c,var4) Then
sell();
2
if MarketPosition == 1 Then
{
ExitLong("목표30만원달성1",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
if c < o and c<ma(c,5) then
exitlong("bx");
}
if MarketPosition == -1 Then
{
ExitShort("목표30만원달성2",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts));
if c > o and c>ma(c,5) then
ExitShort("sx");
}
즐거운 하루되세요
2019-03-06
216
글번호 126755
답변완료
수식 문의드립니다.
안녕하세요
61546에 대해서 추가로 답변 문의 드렸습니다.
확인 부탁드립니다.
ㅠㅠ
2019-03-05
193
글번호 126754
답변완료
수식문의요
수식1
이평 = ma(c,기간,종류);
이평고점=valuewhen(1,crossdown(이평,이평(1)),이평(1));
이평저점=valuewhen(1,crossup(이평,이평(1)),이평(1));
if(이평>(이평저점+이평저점*비율)and 이평>이평(1),ma(c,기간,종류),이평고점);
수식2
이평 = ma(c,기간,종류);
이평고점=valuewhen(1,crossdown(이평,이평(1)),이평(1));
이평저점=valuewhen(1,crossup(이평,이평(1)),이평(1));
if(이평<(이평저점-이평저점*비율)and 이평<이평(1),ma(c,기간,종류),이평고점);
수식3
이평 = ma(c,기간,종류);
이평고점=valuewhen(1,crossdown(이평,이평(1)),이평(1));
이평저점=valuewhen(1,crossup(이평,이평(1)),이평(1));
if(이평>(이평저점+이평저점*비율) and 이평>이평(1),ma(c,기간,종류)-오프셋,0);
수식4
이평 = ma(c,기간,종류);
이평고점=valuewhen(1,crossdown(이평,이평(1)),이평(1));
이평저점=valuewhen(1,crossup(이평,이평(1)),이평(1));
if(이평<(이평저점-이평저점*비율) and 이평<이평(1),ma(c,기간,종류)+오프셋,0);
기간 20
종류 삼각
비율 0.1
오프셋 0.1
예스로 변경부탁드립니다 감사합니다
2019-03-05
218
글번호 126752
답변완료
수식변경 요청드립니다.
안녕하세요. 요청드릴 사항은
아래 수식은 진입 시 3개가 진입되며 수익청산 시 순차적으로 원하는 익절값에 따라 청산되도록 되어 있습니다. 이것을 진입 시 3개의 물량이 동시에 진입하여 익절틱수1에 도달하여 1개의 물량이 수익청산될 때 나머지 2개의 물량을 본절로 추적손절매 되도록 요청드립니다.
input : 거래시간 (1), 시작시간 (220000), 끝시간 (045000),익절틱수1(10),익절틱수2(15),익절틱수3(20),손절틱수 (15);
Input : 전환선기간 (5), 기준선기간1(26), 기준선기간2(1), 선행스팬2기간(52), short(12), long(26), sig(9),BBP(120), 당일누적손실틱수 (100);
Var : MACDv(0), MACDsig(0),macdosc(0), Condition3(false);
var : 전환선 (0), 기준선1(0), 기준선2(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0), Xcond(false),N1(0),daypl(0),당일누적손실 (0);
var1 = MACD(short, long);
var2 = ema(MACDv,sig);
var3 = ma(C,BBP);
전환선 = (Highest(High, 전환선기간 ) + Lowest(Low, 전환선기간 )) / 2;
기준선1 = (Highest(High, 기준선기간1 ) + Lowest(Low, 기준선기간1 )) / 2;
기준선2 = (Highest(High, 기준선기간2 ) + Lowest(Low, 기준선기간2 )) / 2;
선행스팬1 = (전환선 [25] + 기준선2 [25]) / 2 ;
선행스팬2 = (Highest(High, 선행스팬2기간 )[25] + Lowest(Low, 선행스팬2기간 )[25]) / 2;
if 거래시간 == 1 then
condition3 = (stime>=시작시간 or stime<=끝시간);
Else if 거래시간 == 2 then
condition3 = (stime>=시작시간 and stime<=끝시간);
Else
condition3 = true;
if 거래시간 == 1 or 거래시간 == 2 then
{
if (sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간) Then
{
Xcond = false;
N1 = NetProfit;
}
}
else
{
if Bdate != Bdate[1] Then
{
Xcond = false;
N1 = NetProfit;
}
}
당일누적손실 = PriceScale*당일누적손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbl",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
# 매수/매도청산
if MarketPosition == 0 and
TotalTrades == TotalTrades[3] and
Xcond == false and
Condition3 == true and var3 > var3[1] and var1 > var2 and 전환선 > 기준선1 and crossup(C,전환선 ) and C > O Then
{
Buy("b",OnClose,def,3);
ExitLong("bp1.",atlimit,C+PriceScale*익절틱수1,"",1,1);
ExitLong("bp2.",atlimit,C+PriceScale*익절틱수2,"",1,1);
ExitLong("bp3.",atlimit,C+PriceScale*익절틱수3);
}
# 매도/매수청산
if MarketPosition == 0 and TotalTrades == TotalTrades[3] and
Xcond == false and
Condition3 == true and var3 < var3[1] and var1 < var2 and 전환선 < 기준선1 and CrossDown(C,전환선 ) and C < O Then
{
Sell("s",OnClose,def,3);
ExitShort("sp1.",atlimit,C-PriceScale*익절틱수1,"",1,1);
ExitShort("sp2.",atlimit,C-PriceScale*익절틱수2,"",1,1);
ExitShort("sp3.",atlimit,C-PriceScale*익절틱수3);
}
if MarketPosition == 1 Then{
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*익절틱수1 then
ExitLong("bp1",atlimit,EntryPrice+PriceScale*익절틱수1,"",1,1);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*익절틱수2 then
ExitLong("bp2",atlimit,EntryPrice+PriceScale*익절틱수2,"",1,1);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*익절틱수3 then
ExitLong("bp3",atlimit,EntryPrice+PriceScale*익절틱수3);
}
if MarketPosition == -1 Then{
if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*익절틱수1 Then
ExitShort("sp1",atlimit,EntryPrice-PriceScale*익절틱수1,"",1,1);
if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*익절틱수2 Then
ExitShort("sp2",atlimit,EntryPrice-PriceScale*익절틱수2,"",1,1);
if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*익절틱수3 Then
ExitShort("sp3",atlimit,EntryPrice-PriceScale*익절틱수3);
}
SetStopLoss(PriceScale*손절틱수,PointStop);
if stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간 ) Then{
if MarketPosition == 1 Then
ExitLong("bx");
if MarketPosition == -1 Then
ExitShort("sx");
}
if MarketPosition == 1 then
{
ExitLong("dbl",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then
{
ExitShort("dsl",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts));
}
2019-03-05
206
글번호 126751
답변완료
수식 확인부탁 드립니다.
아래 수식을 예스스탁에 사용 할수 있도록 변경 및 이상 여부 확인 부탁 드립니다.
Params : Period1(2), Period2(10);
Params : Period3(3), Period4(15);
Params : Period5(5), Period6(20);
Params : Period10(14), SignalPeriod(9), BaseLine(30);
Vars : entryVol(0), ExBlockCOND(False), blockCond(True);
Vars : TickSize(0);
Ticksize = onetick * pricescale;
V1 = wAverage(C, Period1);
v2 = triAverage(C, Period2);
V3 = wAverage(C, Period3);
v4 = triAverage(C, Period4);
V5 = wAverage(C, Period5);
v6 = triAverage(C, Period6);
V10 = ADXApplied(Period10);
V11 = BaseLine;
Cond10 = CrossUp(V10 , SignalPeriod);
If Baseline < V10 Then Cond11 = true
Else Cond11 = False;
If pPrice > 0 And v1 > v2 Then
Begin
If pPrice < cPrice And CrossuP(v3, v4) And Cond10 and Cond11 Then Buy("B")
Else If pPrice > cPrice And CrossUp(V5 , V6) And Cond10 and Cond11 Then Buy("B2");
End;
If CurrentContracts = entryVol And (False = ExBlockCOND) And (H < EntryPrice + (7 * TickSize)) Then
ExitLong("청산1", Atlimit, EntryPrice + (7 * TickSize), DEF, 1);
2019-03-05
198
글번호 126750
eze 님에 의해서 삭제되었습니다.
2019-03-05
33
글번호 126748
답변완료
지표 추가
61564번 1추가조건;5일선 상승,하락시 화살표시 부탁드립니다
2019-03-05
151
글번호 126738
eze 님에 의해서 삭제되었습니다.
2019-03-05
0
글번호 126736
답변완료
지표 수정 추가 부탁드립니다
그림과 같이 녹색선이 표현 됬으면 좋겠습니다
그림에서는 녹색선이지만 실제 표현은 검정 점선이었으면 좋겠습니다
점선 길이도 조정 할수 있게 해주시면 좋겠구요
점선이 생기는 시점에 수치 숫자 표시도 됬으면 좋겠습니다
분홍선 빨간선 수식은 밑에 올렸습니다
input : P1(5),P2(20);
var16 = ma(C,P1);
var17 = ma(C,P2);
if var16 > var16[1] Then
value21 = var16;
if var16 < var16[1] Then
value22 = var16;
if var17 > var17[1] Then
value31 = var17;
if var17 < var17[1] Then
value32 = var17;
if abs(var16-value21) >= PriceScale*6 Then
{
value41 = value21;
}
if value41 > 0 Then
plot1(value41);
if abs(var16-value22) >= PriceScale*6 Then
{
value42 = value22;
}
if value42 > 0 Then
plot2(value42);
2019-03-05
199
글번호 126726