커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
2550
글번호 230811
답변완료
스윙 차트
안녕하세요 어느덧 2024년도 절반이 갑니다. 항상 건강하십쇼
일봉에서 스윙 차트를 만들고 싶습니다.
각각의 스윙 포인트는 아래와 같습니다.
a. 거래량 이동평균선 20일선> 60일선 조건을 만족할 때 가장 높았던 가격 값 <--스윙 하이 (고점)
b. 거래량 이동평균선 20일선 < 60일선 조건을 만족할때 가장 낮았던 가격 값 <-- 스윙 로우 (저점)
각 스윙 포인트들은 각 이평이 반대 방향 크로스가 났을때 확정되는 걸로 부탁드립니다.
또한, vari1이라는 변수에 각 스윙포인트 값들이 저장되게 해주세요.
ex) vari1[1] <-- 전 스윙 포인트 값. vari[2] 전 전 스윙포인트 값
2024-06-26
864
글번호 180977
회원 님에 의해서 삭제되었습니다.
2024-06-26
0
글번호 180975
답변완료
다시 질문 좀 드립니다.
87857번 다시 질문 드려봅니다.
if Tcond == true and Trade == true Then
{
if MarketPosition <= 0 and 조건1+조건2+조건3+조건4 then
Buy("b2",OnClosE,DeF,진입수량2);
If MarketPosition <= 0 and 조건1+조건2+조건3+조건5
Buy("b3",OnClosE,DeF,진입수량1);
if MarketPosition <= 0 and 조건1+조건2+조건3
Buy("b",OnClosE,DeF,진입수량1);
if MarketPosition == 1 and IsEntryName("b3") == true and MaxContracts == 1 Then
{
if 조건1+조건2+조건3+조건4
Buy("b4",OnClosE,DeF,진입수량1);
}
}
알려주신 대로 수정하였더니 “b4”가 진입이 안되고 “b2”+“b”가 동시에 3계약 진입해 버립니다. “B”진입식 위에 else를 삽입하면 “b4”가 진입은 되는데 역시 . “b2”+“b”가 동시에 3계약 진입해 버립니다.
요청사항은
“b2”가 진입되면 “b”은 진입 안되게 하면서, “b4”진입조건이 되면 “b4”가 진입할 수 있게 변경 좀 부탁드립니다.(최대 보유포지션 2계약)
2024-06-26
781
글번호 180974
답변완료
지표 부탁합니다
예스에서 Chaikin Money Flow (CMF)을 구현할 수 있는지요?
1.자금 흐름 승수 (MFM):
MFM = (종가−저가)−(고가−종가)/고가−저가
2.자금 흐름 거래량 (MFV):
MFV = MFM ×거래량
3. CMF:
첨부 파일 참조
​ 여기서 𝑁 은 기간 (보통 20 또는 21일)입니다.
해석:
CMF > 0: 매수 압력이 우세한 축적을 나타냅니다.
CMF < 0: 매도 압력이 우세한 분배를 나타냅니다.
참고로 CMF를 계산하는 Python 코드입니다
import pandas as pd
# 예제 데이터프레임: ['고가', '저가', '종가', '거래량']
data = {
'High': [125, 127, 130, 128, 131],
'Low': [120, 122, 123, 124, 126],
'Close': [124, 126, 129, 127, 130],
'Volume': [1000, 1100, 1200, 1300, 1400]
}
df = pd.DataFrame(data)
# 자금 흐름 승수 계산
df['MFM'] = ((df['Close'] - df['Low']) - (df['High'] - df['Close'])) / (df['High'] - df['Low'])
# 자금 흐름 거래량 계산
df['MFV'] = df['MFM'] * df['Volume']
# 3일 기간 동안의 Chaikin Money Flow 계산 (예제)
cmf_period = 3
df['CMF'] = df['MFV'].rolling(window=cmf_period).sum() / df['Volume'].rolling(window=cmf_period).sum()
print(df[['High', 'Low', 'Close', 'Volume', 'MFM', 'MFV', 'CMF']])
2024-06-26
960
글번호 180973
답변완료
문의드립니다.
아래 수식에
청산 수긱 추가 부탁드립니다.
매수 청산: 진입봉의 저가를 하향 돌파시
매도 청산: 진입봉의 고가를 상향 돌파시.
if MarketPosition <= 0 and CrossUp(H,H[1]) and H[1] == highest(H,5)[1] Then
Buy();
if MarketPosition >= 0 and CrossDown(L,L[1]) and L[1] == lowest(L,5)[1] Then
Sell();
2024-06-26
852
글번호 180972
답변완료
수식수정
아래는 어제 작성해주신 수식입니다.
여기에 1봉전에 200이평(단순)돌파(가격/물량조건 추가)를 or로 추가하고 싶습니다.
A=avg(c,200);
Crossup(C, A) and C>C(1)*1.05 and
((V>V(1)*5) or (V(1)>V(2)*5))
즉,
- 1봉전에 RSI(20)<64에서 200이평돌파(가격/물량조건 추가) or 아래(13지수이평이
선형스팬기준선돌파)가 발생,
- and 0봉전 RSI(20)>64
마지막으로 부탁드립니다.
==========================================================================
INPUT : shortPeriod(9),midPeriod(26),longPeriod(52),이평(13),RSIP(20);
VAR : 선행1(0),선행2(0),고점(0),저점(0),A(0),B(0),R(0);
선행1=(highest(high,shortPeriod)+lowest(low,shortPeriod)+highest(high,midPeriod)+lowest(low,midPeriod))/4;
선행2=(highest(high,longPeriod)+lowest(low,longPeriod))/2;
고점 = Highest(선행1,25);
저점 = lowest(선행1,25);
IF 선행1<선행2 TheN
A=저점;
B = EMA(C, 이평);
Condition1 = CrossUp(B,A);
R = RSI(RSIP);
IF Condition1[1] == true and R[1] < 64 and R > 64 TheN
Find(1);
2024-06-26
1003
글번호 180971
답변완료
수식수정 부탁드립니다.
안녕하세요.
더위가 찾아오는 요즈음 무탈하시길 빕니다.
이번에 요청드릴 사항은 다음 수식을 수정하여 진입조건이 "ADX 값이 var1 >= 25 이면서 또한 ADX 값이 상승추세"일때 진입하며, 일목균형표 상 양의 구름대일때는 매수진입만, 음의 구름대일때는 매도만 진입되도록 부탁드립니다.
input : 거래시간 (1), 시작시간 (160000), 끝시간 (045500),익절틱수 (36),손절틱수 (15);
input : ADXP(9),CCIP1(50),CCIP2(14);
Var: HH(0), LL(0), HHH(0), LLL(0), FK(0), Condition3(false);
if 거래시간 == 1 then
condition3 = (stime>=시작시간 or stime<=끝시간 );
Else if 거래시간 == 2 then
condition3 = (stime>=시작시간 and stime<=끝시간 );
Else
condition3 = true;
var1 = adx(ADXP);
var2 = cci(CCIP1);
var3 = cci(CCIP2);
if MarketPosition == 0 and TotalTrades == TotalTrades[1] and
Condition3 == true and
var1 >= 25 and (CrossUp(var2,100)) and
var3 > 0 Then
buy();
if MarketPosition == 0 and TotalTrades == TotalTrades[1] and
Condition3 == true and
var1 >= 25 and (CrossDown(var2,-100)) and
var3 < 0 Then
sell();
if MarketPosition == 1 Then{
LL = Floor((highest(H,BarsSinceEntry) - EntryPrice)/(PriceScale*손절틱수 ));
ExitLong("bx",AtStop,(EntryPrice-(PriceScale*손절틱수 ))+(PriceScale*손절틱수 )*LL);
}
if MarketPosition == -1 Then{
HH = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*손절틱수 ));
ExitShort("sx",AtStop,(EntryPrice+(PriceScale*손절틱수))-(PriceScale*손절틱수 )*HH);
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
if stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간 ) Then{
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
#매수진입가격은 신호봉 저가-1틱
if MarketPosition == 1 and CurrentContracts > CurrentContracts[1] Then
Text_New(EntryDate,EntryTime,L[BarsSinceEntry]-PriceScale*3,NumToStr(EntryPrice,2));
#매도진입가격은 신호봉 고가+1틱
if MarketPosition == -1 and CurrentContracts > CurrentContracts[1] Then
Text_New(EntryDate,EntryTime,H[BarsSinceEntry]+PriceScale*3,NumToStr(EntryPrice,2));
#매수청산가격은 신호봉 고가+1틱
if TotalTrades > TotalTrades[1] and MarketPosition(1) == 1 Then
Text_New(ExitDate(1),Exittime(1),H[BarsSinceExit(1)]+PriceScale*3,NumToStr(ExitPrice(1),2));
#매도청산가격은 신호봉 저가-1틱
if TotalTrades > TotalTrades[1] and MarketPosition(1) == -1 Then
Text_New(ExitDate(1),Exittime(1),L[BarsSinceExit(1)]-PriceScale*3,NumToStr(ExitPrice(1),2));
2024-06-26
1114
글번호 180969
답변완료
문의 드립니다.
매수신호가 1개 봉에서 한번 발생할 수 있도록 부탁드립니다.
input : 시작일(20240501);
var1 = ma(c,1);
if MarketPosition == 0 and sdate >= 시작일 Then
Buy("b1",AtStop,var1);
if MarketPosition == 1 and sdate >= 시작일 Then
{
Buy("b2",AtLimit,EntryPrice*0.98);
Buy("b3",AtLimit,EntryPrice*0.96);
Buy("b4",AtLimit,EntryPrice*0.94);
Buy("b5",AtLimit,EntryPrice*0.93);
Buy("b6",AtLimit,EntryPrice*0.90);
Buy("b7",AtLimit,EntryPrice*0.88);
Buy("b8",AtLimit,EntryPrice*0.86);
}
SetStopProfittarget(3,PercentStop);
2024-06-26
1150
글번호 180968
답변완료
문의드립니다.(87721번 재질문)
안녕하세요.
작성해 주신 수식을 지표식으로 만들어서 적용했는데, 차트에 추세선이 표시가 안돼서 다시 문의드립니다.
sdn을 골라서 기준봉(1, 2022,03.02) 및 추세선이 그려져야하는 추가봉(4개)를 수기로 그려서 첨부했습니다.
가온전선도 첨부했는데 지표식을 적용하면 기준봉(2023.05.09) 등에서 수직선이 표시가 됩니다.
많은 도움 주셔서 항상 감사드립니다.
즐거운 하루 보내세요.
2024-06-26
930
글번호 180967