커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6138
글번호 230811
답변완료
매도 수식 확인 좀 부탁 드립니다.
* 수식이 안되는데 수정 좀 부탁 드립니다.
매수후 이익 구간이 3~5% 면 2프로 이하 매도 5~10%면 8프로 이하매도
10~15% 는 12프로 이하 매도 15~30은 14매도 입니다.
if MarketPosition == 1 Then {
if highest(H,BarsSinceEntry) >= EntryPrice*1.03 and highest(H,BarsSinceEntry) < EntryPrice*1.05 Then ExitLong("3%" ,AtStop, EntryPrice*1.02, "" , Floor(CurrentContracts),1);
if highest(H,BarsSinceEntry) >= EntryPrice*1.05 and highest(H,BarsSinceEntry) < EntryPrice*1.10 Then ExitLong("9%" ,AtStop, EntryPrice*1.08, "" , Floor(CurrentContracts),1);
if highest(H,BarsSinceEntry) >= EntryPrice*1.10 and highest(H,BarsSinceEntry) < EntryPrice*1.15 Then ExitLong("12%" ,AtStop, EntryPrice*1.12, "" , Floor(CurrentContracts),1);
if highest(H,BarsSinceEntry) >= EntryPrice*1.15 and highest(H,BarsSinceEntry) < EntryPrice*1.30 Then ExitLong("15%" ,AtStop, EntryPrice*1.14, "" , Floor(CurrentContracts),1);
if highest(H,BarsSinceEntry) < EntryPrice*1.03 and Lowest(H,BarsSinceEntry) < EntryPrice*0.97 Then ExitLong("손해1",AtLimit, EntryPrice*0.99, "" , Floor(CurrentContracts),1); }
2018-06-13
186
글번호 119713
답변완료
수식문의
안녕하세요
하기 답변 잘 받았습니다. 감사합니다.
그런데, 신호가 잘 작동되지 않습니다.
data 2 종가가 볼린져 상단을 돌파했는데, 신호는 변경되지 않습니다.
하단도 마찬가지 입니다.
검토 부탁드립니다.
감사합니다.
---------------------------------------
안녕하세요
예스스탁입니다.
data2의 조건을 data2종가가 크로스 하는 것으로 변경했습니다.
수식의 동작은 기본차트 기준입니다.
기본차트봉이 완성될때 그때 참조데이터(data2)의 완성봉 기준으로
조건체크해서 신호가 발생합니다.
Input : Period(20), MultiD(2);
var : BBmd1(0,data1),BBup1(0,data1),BBdn1(0,data1);
var : BBmd2(0,data2),BBup2(0,data2),BBdn2(0,data2);
BBmd1 = data1(ma(C,Period));
BBup1 = data1(BollBandUp(Period,MultiD));
BBdn1 = data1(BollBandDown(Period,MultiD));
BBmd2 = data2(ma(C,Period));
BBup2 = data2(BollBandUp(Period,MultiD));
BBdn2 = data2(BollBandDown(Period,MultiD));
IF MarketPosition == 1 and bbmd1 < bbmd1[1] and bbmd2 < bbmd2[1] then
{
if data1(CrossDown(c,bbmd1)) or data2(crossup(c,bbup2)) Then
sell("bs");
}
IF MarketPosition == -1 and bbmd1 > bbmd1[1] and bbmd2 > bbmd2[1] then
{
if data1(Crossup(c,bbmd1)) or data2(CrossDown(c,bbdn2)) Then
buy("sb");
}
즐거운 하루되세요
> softtoug 님이 쓴 글입니다.
> 제목 : 수식문의
>
안녕하세요
하기 답변 주신 수식에서 않되는 부분이 있어서 문의 드립니다.
매수의 경우 data 2 의 볼린져 밴드 상단을 cross over했을경우 청산이 되지 않습니다.
매도의 경우 data 2 의 볼린져 밴드 하단을 cross down했을경우 청산이 되지 않습니다.
data 1 이 큰 시간봉이고 (60분) data 2 가 작은 시간봉입니다.(30분)
봉완성 진입 문제로 적용이 되지 않는지요?
검토 부탁드립니다.
감사합니다.
안녕하세요
예스스탁입니다.
Input : Period(20), MultiD(2);
var : BBmd1(0,data1),BBup1(0,data1),BBdn1(0,data1);
var : BBmd2(0,data2),BBup2(0,data2),BBdn2(0,data2);
BBmd1 = data1(ma(C,Period));
BBup1 = data1(BollBandUp(Period,MultiD));
BBdn1 = data1(BollBandDown(Period,MultiD));
BBmd2 = data2(ma(C,Period));
BBup2 = data2(BollBandUp(Period,MultiD));
BBdn2 = data2(BollBandDown(Period,MultiD));
IF MarketPosition == 1 and bbmd1 < bbmd1[1] and bbmd2 < bbmd2[1] then
{
if CrossDown(c,bbmd1) or crossup(c,bbup2) Then
sell("bs");
}
IF MarketPosition == -1 and bbmd1 > bbmd1[1] and bbmd2 > bbmd2[1] then
{
if Crossup(c,bbmd1) or CrossDown(c,bbdn2) Then
sell("bs");
}
즐거운 하루되세요
> softtoug 님이 쓴 글입니다.
> 제목 : 수식문의
> 안녕하세요
하기 수식 부탁드립니다.
1.
현재 매수 상태입니다.
data 1 과 data 2 의 볼린져 이평이 전봉대비 하락하고 있으며,
data1 의 볼린져 이평을 터치하거나, data 2 의 볼린져 상단을 터치하면
- 두가지중 한가지라도 성립이 되면-
매도로 스위칭하여 진입하는 수식 부탁드립니다.
data 2 의 볼린져 이평이 전봉대비 상승하고 있으면, 진입하지 않습니다.
2.
현재 매도 상태입니다.
data 1 과 data 2 의 볼린져 이평이 전봉대비 상승하고 있으며,
data 1 의 볼린져 이평을 터치하거나, data 2 의 볼린져 하단을 터치하면
- 두가지중 한가지라도 성립이 되면-
매수로 스위칭하여 진입하는 수식 부탁드립니다.
data 2 의 볼린져 이평이 전봉대비 하락하고 있으면, 진입하지 않습니다.
감사합니다.
2018-06-13
199
글번호 119712
답변완료
4등분선
국내선물(해외선물)에서 당일 고가와저가 생성시 마다 실시간으로 4등분선으로 챠트에 나타내고 싶은데요 부탁드립니다,감사합니다
2018-06-13
223
글번호 119711
답변완료
문의드립니다.
50봉이내 최고점을 돌파하면 매수진입
50봉이내 최저점을 깨면 매도진입
감사합니다.
2018-06-13
201
글번호 119710
답변완료
안녕하세요.
다음식을 양선 음선 교차시 시스템식(화살표)으로 만들어 주세요.
input : Period(10);
var : Counter(0), Lowval(0), Highval(0), DownVel(0),UpVel(0), DnAroon(0),UpAroon(0) ;
Lowval= Lowest(Low, Period+1);
Highval = Highest(High, Period+1);
For counter= 0 To Period {
If Low[counter] == Lowval Then
DownVel = counter;
If High[counter] == highval Then
UpVel = counter;
}
DnAroon = 100*(Period-DownVel)/Period;
UpAroon = 100*(Period-UpVel)/Period;
Plot1(DnAroon, "Aroon Dn");
Plot2(UpAroon, "Aroon Up");
plotbaseline1(100,"강세 100");
plotbaseline2(0,"약세 0");
2018-06-13
176
글번호 119709
답변완료
주간 일봉 SMI를 분봉에 표시
주간 일봉의 SMI를 복합 분봉에서 표시하려고 아래와 같은 식을 만들었습니다.
그러나 그래프가 일봉 그래프와 많이 다르게 나옵니다.
어디가 잘못 된 것인지 모르겠습니다.
한번 봐 주시기 부탁드립니다.
감사합니다.
# ===<<< 분봉 차트에서 일봉 시고저종 계산 >>>===========================================
Arrays : 일봉_시가[100](0), 일봉_고가[100](0), 일봉_저가[100](0), 일봉_종가[100](0);
Variables : cnt(0);
# ===<<< 주간장 시작 (09:00) >>>===
If (sDate[1] != sDate And 080000 <= sTime) Or
(sDate[1] == sDate And sTime[1] < 080000 And 080000 <= sTime) Then Begin
# ---< 일봉_시고저종[1] 이동 >---
For cnt = 99 DownTo 1 Begin
일봉_시가[cnt] = 일봉_시가[cnt-1]; 일봉_고가[cnt] = 일봉_고가[cnt-1];
일봉_저가[cnt] = 일봉_저가[cnt-1]; 일봉_종가[cnt] = 일봉_종가[cnt-1];
End;
# ---< 일봉_시고저종[0] 초기값 입력 >---
일봉_시가[0] = Open; 일봉_고가[0] = High;
일봉_저가[0] = Low; 일봉_종가[0] = Close;
End;
# ===<<< 주간장 (09:00-15:45) >>>>===
If 080000 <= sTime And sTime < 180000 then Begin
If 일봉_고가[0] < High Then 일봉_고가[0] = High;
If 일봉_저가[0] > Low Then 일봉_저가[0] = Low;
일봉_종가[0] = Close;
End;
# ===<<< 분봉 차트에서 일봉 SMI 계산 >>>=========================================
Arrays : SMI_Var1[50](0), SMI_Var2[50](0), SMI_Var3[50](0), SMI_Var4[50](0), SMI_Var5[50](0), SMI_Var6[50](0), SMI_Var7[50](0);
Variables : 기간1(13), 기간2(25), 기간3(2);
Variables : 기간_고가(0), 기간_저가(0);
Variables : ep1(0), ep2(0), ep3(0);
# ===<<< 주간장 시작 (09:00) >>>===
If (sDate[1] != sDate And 080000 <= sTime) Or
(sDate[1] == sDate And sTime[1] < 080000 And 080000 <= sTime) Then Begin
# ---< 스토케스틱[1] 이동 >---
For cnt = 49 DownTo 1 Begin
SMI_Var1[cnt] = SMI_Var1[cnt-1];
SMI_Var2[cnt] = SMI_Var2[cnt-1];
SMI_Var3[cnt] = SMI_Var3[cnt-1];
SMI_Var4[cnt] = SMI_Var4[cnt-1];
SMI_Var5[cnt] = SMI_Var5[cnt-1];
SMI_Var6[cnt] = SMI_Var6[cnt-1];
SMI_Var7[cnt] = SMI_Var7[cnt-1];
End;
# ---< 기간중고저가 초기값 입력 >---
기간_고가 = 일봉_고가[0];
기간_저가 = 일봉_저가[0];
End;
# ===<<< 주간장 (09:00-15:45) >>>===
If 080000 <= sTime And sTime < 180000 then Begin
For cnt = 1 to 기간1-1 Begin
If 기간_고가 < 일봉_고가[cnt] Then 기간_고가 = 일봉_고가[cnt];
If 기간_저가 > 일봉_저가[cnt] Then 기간_저가 = 일봉_저가[cnt];
End;
# ---<<< SMI 계산 >>>---
ep1 = 2/(기간1+1);
ep2 = 2/(기간2+1);
ep3 = 2/(기간3+1);
SMI_Var1[0] = Close - (기간_고가+기간_저가)/2;
SMI_Var2[0] = SMI_Var1[0] * ep2 + SMI_Var2[1] * (1-ep2);
SMI_Var3[0] = SMI_Var2[0] * ep3 + SMI_Var3[1] * (1-ep3);
SMI_Var4[0] = 기간_고가-기간_저가;
SMI_Var5[0] = SMI_Var4[0] * ep2 + SMI_Var5[1] * (1-ep2);
SMI_Var6[0] = (SMI_Var5[0] * ep3 + SMI_Var6[1] * (1-ep3))/2;
SMI_Var7[0] = SMI_Var3[0] / SMI_Var6[0] * 100;
End;
If SMI_Var7[1] < SMI_Var7[0] Then Plot1(SMI_Var7[0],"SMI_Var7", RED);
Else If SMI_Var7[1] > SMI_Var7[0] Then Plot1(SMI_Var7[0],"SMI_Var7", BLUE);
Else Plot1(SMI_Var7[0],"SMI_Var7",BLACK);
PlotBaseLine1( 40,"과열", Red);
PlotBaseLine2( 0," 0",GRAY);
PlotBaseLine3(-40,"침체",Blue);
2018-06-13
188
글번호 119708
답변완료
부탁 드립니다.
1)수식을 함수로 변환시켜 실행 시키고 싶습니다.
예)TL1=함수명(length);
2)예를 들어
length(100)을 입력 하려면 Array:valArr[100](0)등과 같이 수정 해야 하는곳이 있는지요?
3)함수식을 배포버전으로 저장 하고 싶습니다.
미리 감사 드립니다.
Input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Highest(H,length) == H and lastHiVal <> H;
Condition2 = Lowest(L,length) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}}
TL_SetSize(TL1,0);
TL_SetColor(TL1,green);
2018-06-14
213
글번호 119707
답변완료
모멘텀 스코어 계산
안녕하세요. 모멘텀스코어를 계산하고 계산한 스코어의 이평선을 계산해서 3이평선이 12이평선 보다 높은 경우에 매수하고, 3이평선이 12이평선보다 낮으면 매도를 하고 싶은데요.
Var : m1(0), m2(0), m3(0), m4(0);
Var : m5(0), m6(0), m7(0), m8(0);
Var : m9(0), m10(0), m11(0), m12(0);
var : MoMS(0);
If C-C[1] > 0 Then
m1 = 1;
If C-C[2] > 0 Then
m2 = 1;
If C-C[3] > 0 Then
m3 = 1;
If C-C[4] > 0 Then
m4 = 1;
If C-C[5] > 0 Then
m5 = 1;
If C-C[6] > 0 Then
m6 = 1;
If C-C[7] > 0 Then
m7 = 1;
If C-C[8] > 0 Then
m8 = 1;
If C-C[9] > 0 Then
m9 = 1;
If C-C[10] > 0 Then
m11 = 1;
If C-C[11] > 0 Then
m11 = 1;
If C-C[12] > 0 Then
m12 = 1;
MoMS = (m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11+m12);
value1 = ma(MoMS, 3);
value2 = ma(MoMS, 12);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
Sell();
}
이렇게 했는데 제대로 작동을 안하는데 어떻게 수정해야 될까요?
2018-06-13
212
글번호 119706
답변완료
다시문의드림니다
안녕하세요..글번호58169.제가설명을잘못해서요..다시문의드림니다.죄송합니다...
첩부한사진의흰색라인은 글번호48820 수식이구요.
검정색라인의 수식을 부탁드림니다.
1.직고라인..양봉의종가에서 -10틱이탈되면 양봉의종가가격에서 라인발생해서
다음직고라인이 발생될때까지 그려지게요.
2.직저라인..음봉의종가에서 +10틱돌파되면 음봉의종가가격에서 라인발생해서
다음직저라인이 발생될때까지 그려지게요.
3.중심라인..직고와직저의 중심값라인발생해서 다음라인이발생될깨까지 그려지게요.
수고하세요...꾸벅
2018-06-13
266
글번호 119705