커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1515
글번호 230811
답변완료
수식 변환부탁드립니다.
키움 신호수식 전환 부탁드립니다.
해당 조건만족시 ▲ 신호 발생하게
수식변경 부탁드립니다.
도움 감사합니다~
A=sum(avg(c,40,1)*1.3<=C
and avg(거래대금/C, 40,1)*6<=avg(거래대금/C,2)
and avg(((h-l)/((h+l)/2)),40,1)*1.5<=avg(((h-l)/((h+l)/2)),2)
and C(1)<C);
B=valuewhen(1,A(1)!=A,C);
if(A(1)-A(11)>=1,B(1)<C and A(1)!=A,0)
2023-08-07
1289
글번호 171297
회원 님에 의해서 삭제되었습니다.
2023-08-07
0
글번호 171296
답변완료
추세선 이용 가능 할까요?
* 더운날씨에 수고 많습니다.
* 아래 수식에서
1.상선 과 하선에 가격을 좀 넣어 주십시요,
2.네모 박스 추세선을 굵기(3정도)하고 색상을 LIME 로 지정하는 수식 좀 부탁드립니다.
* 그리고 추세선을 이용 하여 대각선으로 줄긋기 가능 한가요?
즉 사각형 네모 박스의 대각선이 필요 합니다.
* 가로 대각선, 세로대각선 두개로 해주셔도 됨니다.
## 아래 수식
input : P(5);
var : box(0);
if H > highest(H,P-1)[1] and L < Lowest(L,P-1)[1] Then
{
box = Box_New(sDate[P-1],sTime[P-1],highest(H,P),sDate,sTime,lowest(L,P));
Box_SetColor(box,Blue);
}
* 매번 많은 도움에 고맙습니다.
2023-08-07
1291
글번호 171270
답변완료
양봉 종가 매수 다음날 시가매도 수식 부탁드립니다.
제가 만든 수식으로는
#매수
if MarketPosition ==0 and o<c Then Buy("b");
#청산
if MarketPosition == 1 and NextBarSdate != sdate Then
ExitLong("bx1",atmarket);
이상하게 매수후 2일뒤에 청산되는 거처럼 나옵니다.
일봉상 양봉 종가 매수, 다음날 시가 매도 수식부탁드립니다.
2023-08-07
1334
글번호 171267
답변완료
식 추가변경 부탁드립니다.
안녕하세요 아래 식 추가변경부탁드립니다.
1.
아래식은
매수 발생- 손절 발생(익절 발생)
하면 더이상 매매가 안되도록 되어있는데
2.
추가변경 부탁드리는 부분은
손절 발생시(익절 발생은 해당되지않음)
손절한 당일에만
한번 더 같은 설정가에 매수 발생 (익일에는 매수 발생 안됨)
매수 발생되었으면 손절or익절 발생(당일부터 발생, 손절or 익절가가 될때까지)
부탁드립니다.
-------------------------------------------------------------------
input : 날짜(20230302),매수가격(1000),익절가격(1200),손절가격(800);
if NextBarSdate >= 날짜 Then
{
if NextBarSdate != sDate Then
{
if MarketPosition == 0 and TotalTrades == 0 and NextBarOpen <= 매수가격 Then
Buy("b1",AtStop,매수가격);
}
Else
{
if MarketPosition == 0 and TotalTrades == 0 and DayHigh < 매수가격 Then
Buy("b",AtStop,매수가격);
}
if MarketPosition == 1 Then
{
ExitLong("bp",AtLimit,익절가격);
ExitLong("bl",AtStop,손절가격);
}
}
2023-08-07
1145
글번호 171266
답변완료
문의 드립니다
input:p1(48),Rsi변동폭(20);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),Rsi파동선(0),방향(0),RsiV(0),Rsi추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0);
RsiV =RSI(P1);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
Rsi고Bar[j] = Rsi고Bar[j] + 1;
Rsi저Bar[j] = Rsi저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then
{
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
Else
Rsi고Bar[0] = Rsi고Bar[0] + 1;
If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then
{
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
Else
Rsi저Bar[0] = Rsi저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If Rsi저[0][1] + Rsi변동폭 > RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승;
If Rsi고[0][1] - Rsi변동폭 < RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
Rsi저[j+1] = Rsi저[j];
Rsi저Bar[j+1] = Rsi저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
Rsi고[j+1] = Rsi고[j];
Rsi고Bar[j+1] = Rsi고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If Rsi고[1] < Rsi고[0] &&
Rsi고[0][1] - Rsi변동폭 <= RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 > RsiV Then
{
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If Rsi저[1] > Rsi저[0] &&
Rsi저[0][1] + Rsi변동폭 >= RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 < RsiV Then
{
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
If Rsi파동선[1] != Rsi파동선 Then{
if 방향 == 하락 and Rsi파동선 >= 65 then
sell();
if 방향 == 상승 and Rsi파동선 <= 35 then
buy();
}
----------------------
위 수식어에 추가 하고자 합니다.
1. 이동평균선 300선 위에서 매도 신호는 매수로 전환
2. 이동평균선 300선 아래에서 매수 신호는 매도로 전환
3. 익절 100틱 손절 100틱
4. 위 수식어를 해외선물에 적용하고 있습니다.
중복체결로 계약수가 늘어 나는데 수식어나 설정하는 별도의 방법이 있는지
문의 드립니다.
2023-08-08
959
글번호 171265
답변완료
수식문의
수고하십니다.
아래수식으로 30분기준,검색기간 500봉으로 검색하였는데 검색이 안됩니다.
수정 또는 조언 부탁드립니다
Input : DayPeriod(20),P1(60),P2(120),NC(12), Mult(1.01),SV(100000);//Nc=60일선과 120일선 사이의 횡보캔들 수
Var : T(0),S(0),Cnt(0),Sum(0),Dayma(0);
Sum = 0;
For cnt = 0 to Dayperiod-1
{
Sum = Sum + DayClose(Cnt);
}
Dayma = Sum/DayPeriod;
Var1 = Ma(C,P1);
Var2 = Ma(C,P2);
if CrossDown(C,Var1) Then
{
T = 1;
if Var1 > Var2 and T[1] == -1 and Index <= S+NC and C >= DayClose(1)*Mult and
C > Dayma and C>O and DayVolume(0)>SV Then
Find(1);
}
if CrossDown(c,var1) Then
{
T = -1;
S = Index;
}
if T == -1 and C < Var2 Then
T = -2;
2023-08-07
751
글번호 171264
답변완료
해외선물 긴급상황
나스닥 골드 오일... 호가창과 캔들이 따로놀아요.....
호가는 정상 / 캔들은 멈춰있어요
도와주세요
껐다켜도 안되네요
2023-08-07
738
글번호 171263
답변완료
다른 신호 손절개별로
안녕하세요.
아래와 같이 알려주신대로 다른 신호에 대한 손절을 구분해서 문제없이 사용해오고 있었는데,
두 신호가 동시에 발생해서 진입하게 되는 경우 각각 손절이 작동하지 않는것을
발견했습니다. latestEntryName이 애매해져서 그런거 같은데,
다르게 구분하는 방법이 없을까요?
----------------------------------------------------------
if CurrentContracts > CurrentContracts[1] or MarketPosition != MarketPosition[1] Then
{
if LatestEntryName(0) == "A" Then
var6 = LatestEntryPrice(0);
if LatestEntryName(0) == "B" Then
var7 = LatestEntryPrice(0);
}
if var6 > 0 Then
ExitShort("A손절",AtStop,var6*(1+cut_s1/100),"A");
if var7 > 0 Then
ExitShort("B손절",AtStop,var7*(1+cut_s2/100),"B");
2023-08-07
755
글번호 171262