커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4682
글번호 230811
답변완료
복리투자 처음4번은 안함
Input : shortPeriod(5), longPeriod(20) ;
Var : value(0),vol(0);
if MarketPosition != 0 Then{
if PositionProfit < 0 Then
Vol = min(80,MaxContracts*2);
Else
vol = 1;
}
if MarketPosition == 0 Then{
if PositionProfit(1) < 0 Then
Vol = min(80,MaxContracts(1)*2);
Else
vol = 1;
}
value = OSCP(shortPeriod, longPeriod);
If CrossUP(value, 0) Then
Buy("b",OnClose,def,vol);
If CrossDown(value,-0) Then
Sell("s",OnClose,def,vol);
# 추적청산
input : AtrMult(6), AtrPeriod(6);
var : AtrVal(0), posHigh(0), posLow(0);
# ATR 추적청산
ATRVal = ATR(AtrPeriod) * AtrMult;
PosHigh = Highest(H,BarssinceEntry+2);
PosLow = Lowest(L,BarsSinceEntry+2);
If MarketPosition == 1 and C < ma(c,20) Then
sell("ATR1", AtStop, PosHigh - ATRVal,Vol);
If MarketPosition == -1 and C > ma(c,20) Then
buy("ATR2", AtStop, PosLow + ATRVal,Vol);
If MarketPosition == 0 and C > ma(C,20) Then
sell("ATR3", AtStop, Highest(H,BarsSinceExit(1)+1) - ATRVal,Vol);
If MarketPosition == 0 and C < ma(C,20) Then
buy("ATR4", AtStop, Lowest(L,BarsSinceExit(1)+1) + ATRVal,Vol);
위수식에서
처음4번 손실이 지난후부터 계속복리입니다.
즉처음4번후부터 복리가시작됨니다.쭉계속복리
목표가후복귀
감사합니다.
2016-02-05
121
글번호 95203
답변완료
손실두번시 복리
Input : shortPeriod(5), longPeriod(20) ;
Var : value(0),vol(0);
if MarketPosition != 0 Then{
if PositionProfit < 0 Then
Vol = min(80,MaxContracts*2);
Else
vol = 1;
}
if MarketPosition == 0 Then{
if PositionProfit(1) < 0 Then
Vol = min(80,MaxContracts(1)*2);
Else
vol = 1;
}
value = OSCP(shortPeriod, longPeriod);
If CrossUP(value, 0) Then
Buy("b",OnClose,def,vol);
If CrossDown(value,-0) Then
Sell("s",OnClose,def,vol);
# 추적청산
input : AtrMult(6), AtrPeriod(6);
var : AtrVal(0), posHigh(0), posLow(0);
# ATR 추적청산
ATRVal = ATR(AtrPeriod) * AtrMult;
PosHigh = Highest(H,BarssinceEntry+2);
PosLow = Lowest(L,BarsSinceEntry+2);
If MarketPosition == 1 and C < ma(c,20) Then
sell("ATR1", AtStop, PosHigh - ATRVal,Vol);
If MarketPosition == -1 and C > ma(c,20) Then
buy("ATR2", AtStop, PosLow + ATRVal,Vol);
If MarketPosition == 0 and C > ma(C,20) Then
sell("ATR3", AtStop, Highest(H,BarsSinceExit(1)+1) - ATRVal,Vol);
If MarketPosition == 0 and C < ma(C,20) Then
buy("ATR4", AtStop, Lowest(L,BarsSinceExit(1)+1) + ATRVal,Vol);
위수식에서
손실이 두번발생때마다 복리를합니다 두번손실.또두번손실.또두번손실...
즉 손실한번을 두번으로바꿔주세요
목표가후복귀
감사합니다.
2016-02-05
127
글번호 95202
답변완료
부탁드립니다.
안녕하세요?
해외에서는 엘리어트 파동을 이용한 매매가 활발하게 이루어지고 있고 HTS에 ADD on Program도 많이 있습니다. 그래서 국내서도 구할 수 있나 찾아보았으나 찾을 수가 없었고 그나마 유사한 것으로 아래의 것을 찾았으나 바로 사용할 수가 없어서코딩을 좀 부탁드립니다.
장기변동율과 단기변동율을 바꾸어 볼 수 있게 코딩 부탁드리구요, 시간이 걸리는 일을 부탁드려서 미안합니다.
명절 잘 보내시기 바랍니다.
감사합니다.
===================================================================================
1) 고점과 저점 정의
고점조건 = 고가가 저점에서 장기변동률 이상 상승했고
저점이후고가보다 클 때;
저점조건 = 저가가 고점에서 장기변동률 이상 하락했고
고점이후저가보다 작을 때;
If 고점조건 만족 Then
{
저점이후고가 = 고가;
고점이후저가 = 0;
}
If 저점조건 만족 Then
{
고점이후저가 = 저가;
저점이후고가 = 0;
}
2) 고점인지 저점인지 판단
전환점구분을 null값으로 초기화;
If 고점조건과 저점조건 동시 만족 Then
{
If 1번 고점 < 고가 and 1번 저점 > 저가 Then
전환점구분 = “고저점”;
Else If 1번 고점 < 고가 Then
전환점구분 = “고점”;
Else If 1번 저점 > 저가 Then
전환점구분 = “저점”;
}
Else If 고점조건만 만족 Then
전환점구분 = “고점”;
Else If 저점조건만 만족 Then
전환점구분 = “저점”;
3) 고점 또는 저점일 때 처리
If 전환점구분 <> null Then
{
3-1) 고점이면서 저점일 때
If 전환점구분 == “고저점” Then
{
If 직전 전환점구분 == “고점” Then
{
1번 고점 = 고가;
전환점구분 = “저점”;
보조지표 1번 고점 = 보조지표 1번 저점 이후의 최고가를
for문으로 search;
}
Else If 직전 전환점구분 == “저점” Then
{
1번 저점 = 저가;
전환점구분 = “고점”;
보조지표 1번 저점 = 보조지표 1번 고점 이후의 최저가를
for문으로 search;
}
}
If 전환점구분 <> 직전 전환점구분 Then
{
3-2) 고점일 때 처리
If 전환점구분 == “고점” Then
{
3번 고점 = 2번 고점;
2번 고점 = 1번 고점;
1번 고점 = 고가;
보조지표 3번 고점 = 보조지표 2번 고점;
보조지표 2번 고점 = 보조지표 1번 고점;
보조지표 1번 고점 = 보조지표 1번 저점 이후의 최고가를
for문으로 search;
}
3-3) 저점일 때 처리
If 전환점구분 == “저점” Then
{
3번 저점 = 2번 저점;
2번 저점 = 1번 저점;
1번 저점 = 저가;
보조지표 3번 저점 = 보조지표 2번 저점;
보조지표 2번 저점 = 보조지표 1번 저점;
보조지표 1번 저점 = 보조지표 1번 고점 이후의 최저가를
for문으로 search;
}
}
If 전환점구분 == 직전 전환점구분 and
((전환점구분 == “고점” and 1번 고점 < 고가) or
(전환점구분 == “저점” and 1번 저점 > 저가)) Then
{
3-4) 연속 고점일 때 처리
If 전환점구분 == “고점” Then
{
1번 고점 = 고가;
보조지표 1번 고점 = 보조지표 1번 저점 이후의 최고가를
for문으로 search;
}
3-5) 연속 저점일 때 처리
If 전환점구분 == “저점” Then
{
1번 저점 = 저가;
보조지표 1번 저점 = 보조지표 1번 고점 이후의 최저가를
for문으로 search;
}
}
}
4) 종목 보합일 때 보조지표 처리
Else //전환점구분이 null 즉 주가가 고점과 저점사이에 보합 상태
{
If 직전 전환점구분 == “고점” and
보조지표 1번 고점 < 보조지표 값 Then
보조지표 1번 고점 = 보조지표 값;
If 직전 전환점구분 == “저점” and
보조지표 1번 저점 > 보조지표 값 Then
보조지표 1번 저점 = 보조지표 값;
}
5) 단기고점과 단기저점 정의
단기고점조건 = 고가가 저점보다 단기변동률 이상 상승했고
저점이후단기고가보다 클 때;
단기저점조건 = 저가가 고점보다 단기변동률 이상 하락했고
고점이후단기저가보다 작을 때;
If 단기고점조건 만족 Then
{
저점이후단기고가 = 고가;
고점이후단기저가 = 0;
}
If 단기저점조건 만족 Then
{
고점이후단기저가 = 저가;
저점이후단기고가 = 0;
}
6) 단기고점인지 단기저점인지 판단
단기전환점구분을 null 값으로 초기화;
If 단기고점조건과 단기저점조건 동시 만족 Then
{
If 1번 고점 < 고가 Then
단기전환점구분 = “고점”;
Else If 1번 저점 > 저가 Then
단기전환점구분 = “저점”;
}
Else If 단기고점조건만 만족 Then
단기전환점구분 = “고점”;
Else If 단기저점조건만 만족 Then
단기전환점구분 = “저점”;
If 단기전환점구분 == “고점” 또는 “저점” and
단기전환점구분 <> 직전 전환점구분 Then
{
매수선 = 고가;
매도선 = 저가;
}
7) 단기고점이면 매수 다이버전스 판단
If 단기전환점구분 == “고점” Then
{
If 2번 저점 > 1번 저점 and
보조지표 2번 저점 < 보조지표 1번 저점 Then
매수선에서 stop 주문(“일반 매수 다이버전스”);
If 2번 저점 < 1번 저점 and
보조지표 2번 저점 > 보조지표 1번 저점 Then
매수선에서 stop 주문(“역 매수 다이버전스”);
If 2번 저점과 1번 저점의 차이가
1번 저점의 0.005 보다 작고 and
보조지표 2번 저점 < 보조지표 1번 저점 Then
매수선에서 stop 주문(“과장 매수 다이버전스”);
If 3번 저점 > 1번 저점 and
2번 저점 > 1번 저점 and
보조지표 3번 저점 < 보조지표 1번 저점 and
보조지표 1번 저점 < 보조지표 2번 저점 Then
매수선에서 stop 주문(“3중 매수 다이버전스”);
}
8) 단기저점이면 매도 다이버전스 판단
If 단기전환점구분 == “저점” Then
{
If 2번 고점 < 1번 고점 and
보조지표 2번 고점 > 보조지표 1번 고점 Then
매도선에서 stop 청산주문(“일반 매도 다이버전스”);
If 2번 고점 > 1번 고점 and
보조지표 2번 고점 < 보조지표 1번 고점 Then
매도선에서 stop 청산주문(“역 매도 다이버전스”);
If 2번 고점과 1번 고점의 차이가
1번 고점의 0.005 보다 작고 and
보조지표 2번 고점 > 보조지표 1번 고점 Then
매도선에서 stop 청산주문(“과장 매도 다이버전스”);
If 3번 고점 < 1번 고점 and
2번 고점 < 1번 고점 and
보조지표 3번 고점 > 보조지표 1번 고점 and
보조지표 1번 고점 > 보조지표 2번 고점 Then
매도선에서 stop 청산주문(“3중 매도 다이버전스”);
}
[출처] 최소변동률 지그재그(zigzag) 파동을 이용한 전략식(1~2)|작성자 수식지왕
2016-02-05
259
글번호 95201
답변완료
수고많이 하셨습니다. 복많이 받으세요^^
* 지난한해 많은 도움에 고개 숙여 감사 드림니다.
* 새해에도 하시는 모든일 모두 소원 성취하시고 댁내 모두 모두 건강하십시요^^
* 고맙습니다. ^.^
2016-02-05
130
글번호 95200
답변완료
문의 드립니다
1)
지표값이 3일간만 차트에 그려지게 해서 보고 십습니다
당일치만 보는데는 아래와 같이 하면 되는 걸로 아는데
3일치만 보고자 한다면 어떻게 하는지 알고 싶습니다
if CurrentDate == sdate then{
수식
}
2) 그리고
현재 봉으로 부터 1000개 봉부터만 지표가 그려지게 하는 방법은 있는지요
3) 데이타 값을 주간의 경우 0.05 단위로 선물이 움직 입니다
에스엔피의 경우는 0.25 단위로 움직 입니다.
이와같이 상품에 따라서 틱 단위가 다른데 상품에 따라 틱단위를 1단위로 변수값으로 정하고 사용할수 없을까요.
현재 제가 사용하는 시스템이 각 삼품에 따라 달리 변수값을 정해 줘야하는데 이렇게 변수값을 틱단위을 1로 통합해서 만들수 있다면 차트를 하나로 통합해서 해외든 국선이든 같이 사용할수 있을것 같아서 입니다
새해에는 더욱더욱 복 많이 받으세요
2016-02-05
125
글번호 95199
답변완료
부탁드립니다.
다른 진입신호를 허용하여 누적진입이 되는 경우에
마지막 진입신호가 "b9"이었다면
C>var1이 될 때 "b9"진입분만 청산시키고자 할 때 어떻게 표시해야 하는지요.
2016-02-05
130
글번호 95198
세발낚지 님에 의해서 삭제되었습니다.
2016-02-05
23
글번호 95197
답변완료
현재 분봉설정을 읽어오는 변수가 있나요?
이를테면 5분봉으로 보고 있을때와 30분봉으로 보고 있을때, 1일봉으로 보고 있을때 다른 전략 및 강조를 적용하고자 하는데 그러려면 현재 봉설정을 읽어오는 변수가 필요합니다. 그런 변수가 있나요?
2016-02-05
104
글번호 95196
답변완료
문의드립니다.
Input : shortPeriod(5), longPeriod(20);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
# 매수/매도청산
If CrossUP(value1, value2) and value1 - Value2 > 1 Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) and Value2 - Value1 < -1 Then
{
Sell();
}
골드크로스혹은 데드크로스 후 단기이평과 장기이평의 간격이 1이상 되는 경우 매매한다는
수식이 필요합니다.어떤 식으로 작성해야 하나요?
Input : shortPeriod(5), longPeriod(20);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
# 매수/매도청산
If CrossUP(value1, value2) then
var1 = 1;
# 매도/매수청산
If CrossDown(value1, value2) Then
var1 = -1;
if var1 == 1 and value1 - value2 > 1 then
buy();
if var1 == -1 and value2 - value1 < -1 then
sell();
이런식으로 작성하면 될것 같긴한데 크로스업다운하는 것이 여러개이상일경우 중복되어 식이 너무 많아지고 중복저장 및 식이 길어져서 그러는데요.간소화해서 크로스업다운한 value1 value2의 간격이 1이상벌어질경우 매매한다는 식을 하나의 if then문으로 작성하려면
어떻게 해야하나요?답변 부탁드립니다.수고하세요^^
2016-02-05
105
글번호 95195