커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4317
글번호 230811
답변완료
질문드립니다
안녕하십니까?
다음지표식을 씨스템식으로 바꿔주세요 그런데 매수신호는 지표식이완성된 그봉이아닌 그 다음봉에 발생하록 해주세요 감사합니다
var : sindex1(0), sindex2(0), Lindex1(0), Lindex2(0);
value1 = stochasticsD(12,5,5);
Condition1 = value1 > value1[1] and value1[1] <= value1[2];
Condition2 = L > L[1] and L[1] <= L[2];
sindex1 = MRO(Condition1,15,1); // stochasticsD의 최근 저점이 발생한 시점의 현재로부터 index
sindex2 = MRO(Condition1,15,2); // stochasticsD의 직전 저점이 발생한 시점의 현재로부터 index
Lindex1 = MRO(Condition2,15,1); // 저가의 최근 저점이발생한 index
Lindex2 = MRO(Condition2,15,2); // 저가의 직전 저점이 발생한 index
if
value1[sindex1+1] > value1[sindex2+1] and //stochastics의 최근저점값이 직전저점값보다크고
L[Lindex1+1] < L[Lindex2+1] and //저가의 최근저점저점값이 직전저점값보다 작고
Condition1 and //저가의 상승반전이 발생했고
lowest(L,5) == lowest(L,15) //최근 5개봉의 최저가가 최근 15개 봉의 최저가이면
then
var1 = 1;
else
var1 = 0;
plot1(var1);
if var1 == 1 Then
PlaySound("C:₩WRFutures₩YesGlobalPro₩data₩Sound₩GAudio_Call.wav");
2017-11-03
174
글번호 113867
답변완료
수식문의드립니다...
아래수식은 파동선 지표식인데요 이 파동선 고점 -30틱을 crossdown하면 매도
파동선 저점 +30틱을 crossup하면 매수하는 시스템식 부탁드립니다 미리감사드립니다.
input : 텍스트소수점자리수(1);
Var:jjjjj(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0),Tx(0),trnd(0),tx22(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For jjjjj = 0 To 9
{
barArr[jjjjj] = barArr[jjjjj] + 1;
}
Condition1 = Highest(H,26) == H and lastHiVal <> H;
Condition2 = Lowest(L,26) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
// 전환점구분 null값으로 초기화;
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 jjjjj = 8 downto 1
{
valArr[jjjjj+1] = valArr[jjjjj];
barArr[jjjjj+1] = barArr[jjjjj];
turnPntArr[jjjjj+1] = turnPntArr[jjjjj];
}
}
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
{
Tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],NumToStr(valArr[2],텍스트소수점자리수));
Text_SetStyle(tx,0,2);
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
if turnPntArr[1][0] == "Lo" Then
trnd = -1;
if turnPntArr[1][0] == "hi" Then
trnd = 1;
}
}
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Text_Delete(tx22);
tx22 = Text_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],NumToStr(valArr[1],텍스트소수점자리수));
TL_SetSize(TL1[1],0);
TL_SetColor(TL1[1],BLACK);
2017-11-03
157
글번호 113866
답변완료
문의요~
2
Input : 당일손실틱수(200);
Var : N1(0),dayPl(0),당일손실(0),Xcond(false);
당일손실 = PriceScale*당일손실틱수;
if Bdate != Bdate[1] Then{
Xcond = false;
N1 = NetProfit;
}
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbl",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
if Xcond == false and 매수진입조건 Then{
buy("b");
}
if Xcond == false and 매도진입조건 Then{
sell("s");
}
if MarketPosition == 1 then{
ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then{
ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts));
}
if (sdate != sdate[1] and stime >= 020000) or
(sdate == sdate[1] and stime > 020000 and stime[1] < 020000) Then{
if MarketPosition == 1 Then
ExitLong("bx");
if MarketPosition == -1 Then
ExitShort("sx");
}
어제문의한 당일손실제한200틱인데요~ 수익도200틱제한으로 추가 부탁드릴게요 식을 이해를 못해서 수정을 못하겠습니다~ 위식에서 간단히 주석설명도 부탁드립니다. 감사합니다~
특히 N1 = NetProfit; //(청산종결된모든거래의손익금액) 이렇게 선언을 했는데
daypl = NetProfit-N1; 여기서는 daypl은 무조건 0이 나오는게 아닌가요
특히 이부분이 이해가 어렵습니다~
2017-11-03
150
글번호 113865
답변완료
문의드립니다
안녕하세요.
지표수식을 부탁드립니다
1) 특정한 가격대를 입력하여 피보나치수열의선을 만들고 싶습니다
ex) 최고값 55.00 최저값 51.00 경우
1) 최고값선
2) 95.00 선
3) 88.60 선
4) 76.40 선
5) 61.80 선
6) 50.00 선
7) 38.20 선
8) 23.60 선
9) 11.40 선
10) 5.00 선
11) 최저값선
___________________________________________________________________
2) 조건의 선이 만들어지면( 최고값/ 95.00 /88.60 / 76.40/ 61.80/ 50.00/ 38.20/ 23.60/
11.40/ 5.00/ 최저값) 선위에 가격대를 표기하여주시면 감사하겠습니다
항상건강하시고 행복하세요~
2017-11-03
157
글번호 113864
답변완료
분봉 차트에 틱 이평선이나 지표를 추가할수있나요??
제목 그대로입니다.
타주기 data2에 지표를 따로 지정하기 힘들다고 하여
분봉차트에 틱차트 지표를 적용시키고 싶습니다.
답변 부탁드립니다
감사합니다.
2017-11-03
163
글번호 113863
답변완료
cci 시스템
항상감사드립니다
아래조건식을 시스템으로 구현하고 싶습니다
/*********************************/
Input : Period5(80),Period6(40);
var : CCIv80(0),CCIs80(0);
CCIv80 = CCI(Period5);
CCIs80 = ema(CCIv80,Period6);
/*********************************/
Input : Period7(20),Period8(10);
var : CCIv20(0),CCIs20(0);
CCIv20 = CCI(Period7);
CCIs20 = ema(CCIv20,Period8);
/********************************/
1_시스템식
ccis80<0 인상태에서 두번째 crossup(ccis20,ccis80) 이면 매수진입 b1
(첫번째,두번째 crossup이 ccis80<0 이고 연속해서 발생해야함)
ccis80>0 인상태에서 두번째 crossdown(ccis20,ccis80)이면 매도진입 s1
(첫번째,두번째 crossdown이 ccis80>0 이고 연속해서 발생해야함)
2_시스템
crosssup(ccis20,ccis80) 이 연속3회 발생시 매수 b2
crossdown(ccis20,ccis80)이 연속3회 발생시 매도 s2
3_시스템
첫번째 crossup(ccis20,ccis80) 위치 < 두번째 crossup(ccis20,ccis80) 위치 이고
crossup이 연속해서 나오면 b3
첫번째 crossdown(ccis20,ccis80) 위치 > 두번째 crossdown(ccis20,ccis80) 위치이고
crossdown이 연속해서 나오면 s3
감사합니다
2017-11-03
187
글번호 113862
답변완료
문의합니다
아래 시스템 수식(VR)입니다 이수식을 지표로 전환하여 주시기 바랍니다
감사합니다
Input : Period(20);
Var : value(0);
value = VR(Period);
# 매수/매도청산
If CrossUP(value, 100) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value, 300) Then
{
Sell();
}
2017-11-02
157
글번호 113860
답변완료
시작시간 초기화
아래 수식의 시간조절로는 단순히 시작시간만 변경됩니다.
input에서 시간을 입력하면
090000부터 계산은 초기화하고
입력한 시간부터 장시작으로 인식하는 수식으로 변경 바랍니다.
항상 고맙습니다.
************************************
input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000) ;
var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0),V1(0);
if Bdate != Bdate[1] Then{
T1 = TotalTrades;
E1 = 0;
}
if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then
LL = L;
if L < LL Then
LL = L;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{
if E1 == 0 and C >= LL+PriceScale*B1 and C[1] < LL+PriceScale*B1 Then{
E1 = 1;
H1 = H;
i1 = index;
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
#저가가 시작봉종가보다 클때만 눌림체크
if L >= V1 and L <= H1-PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and L < V1 Then{
E1 = 0;
LL = L;
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then{
E1 = 0;
LL = L;
}
if L < LL Then
LL = L;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{
if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{
E1 = 1;
H1 = H;
i1 = index;
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
#저가가 시작봉종가보다 클때만 눌림체크
if L >= V1 and L <= H1-PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and L < V1 Then{
E1 = 0;
LL = L;
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{
buy("b2");
}
}
if MarketPosition == 1 Then{
if entry >= 1 then{
if CurrentContracts > CurrentContracts[1] Then{
EH = H;
E1 = 0;
}
if H > EH Then{
EH = H;
E1 = 0;
}
if E1 == 0 and C <= EH-PriceScale*X1 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then{
if entry >= 1 then{
if CurrentContracts > CurrentContracts[1] Then{
EH = H;
E1 = 0;
}
if H > EH Then{
EH = H;
E1 = 0;
}
if E1 == 0 and C <= EH-PriceScale*X2 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{
exitlong("bx2");
E1 = 0;
}
}
}
2017-11-02
172
글번호 113852
답변완료
수식 문의
안녕하세요
하기 수식 구현 부탁드립니다.
ADX 라인이 아래에 위치하고 있으며,
DP/DM 라인이 ADX 위에 있을때 만 적용됩니다.
상기 상태에서 가격이 볼린져 밴드 하단에 닿으면 매수 진입
상기 상태에서 가격이 볼린져 밴드 상단에 닿으면 매도 진입하는 수식 부탁드립니다.
감사합니다
2017-11-02
158
글번호 113846