커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3379
글번호 230811
답변완료
분할 차트
한 화면에 차트 분할해서 여러개의 옵션을 띄워 놓고
어느 한 옵션에서 매매 신호가 발생했으면 다른 옵션에서는 신호가 발생하지 않게 하고 싶습니다.
차트는 분,틱봉의 금일분만 적용을 하여 당일 차트만 사용했습니다.
가령
if crossup(c,ma(5)) && GetOpenOrderInitialMargin(GetAccount(3)) == 0 then { buy("b",OnClose, def,1); }
이렇게 만든다면 어느 한 차트에서 자동매매가 이루어 졌다면 위탁증거금이 바뀌기 때문에
다른 분할 차트에서는 신호가 나오지 않아야 정상이 아닌가요.
잔고 함수는 실시간 함수니까 적용이 되야 되는데 실제 매매에서는 제어가 안되고 다른 차트에서도 주문 신호가 발생하네요.
뭐가 문제인지 확인 좀 해주세요.
2020-05-22
1200
글번호 139076
답변완료
매수/매도 포지션에서 청산조건을 다르게 하기
안녕하세요 ^^
1) 매수포지션
- 맨 마지막에 진입한 가격 - LTR 만큼 하락하면 LX
- 위의 조건을 충족하지 않으면 익일 시가청산
2) 매도포지션
- 맨 마지막에 진입한 가격 + STR 만큼 상승하면 SX
- 위의 조건을 충족하지 않으면 당일 매도
상기 조건을 입력하고 싶은데요, 전략을 시뮬레이션 한 결과 거래내역을 보면 매수포지션에서 LX 주문은 잘 들어가는데. ES주문은 전혀 되지 않는걸로 나오고 있습니다. 즉, 모든 LX 주문조건을 충족하지 않으면 익일 시가청산으로 주문이 들어가야 하는데 모두 당일 종가청산이 됩니다.
이 문제를 어떻게 해결할 수 있을까요??
IF MarketPosition == 0 THEN {
IF H < L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1);
IF L > S1 AND NEXTBARSDATE == SDATE THEN Sell("S1",ATSTOP,S1);
}
IF MarketPosition== 1 AND STIME <154000 THEN {
if highest(h,BarsSinceEntry) < L1 + LTR*0.5 Then
buy("L2",ATSTOP,L1 + LTR * 0.5);
if highest(h,BarsSinceEntry) < L1 + LTR Then
buy("L3",ATSTOP, L1 + LTR);
}
IF MarketPosition == 1 then {
if NextBarSdate == SDATE Then
ExitLong("LX",AtStop,LatestEntryPrice(0)-LTR);
IF NextBarSdate != SDATE Then
ExitLong("EL",ATMARKET);
}
IF MarketPosition == -1 AND STIME < 154000 Then {
IF Lowest(L,BarsSinceEntry) > S1 - STR * 0.5 Then
SELL("S2",ATSTOP, S1 - STR * 0.5);
IF Lowest(L,BarsSinceEntry) > S1 - STR Then
SELL("S3",ATSTOP, S1- STR);
IF NextBarSdate == SDATE Then
ExitShort("SX",ATSTOP,LatestEntryPrice(0) + STR); else SetStopEndofday();
}
2020-05-22
1202
글번호 139074
답변완료
문의드립니다!
안녕하세요!
아래 수식에서 조건만족시 음성신호 대신 세로선이 발생되도록 부탁드립니다
* 옵션챠트에 3개의 별도 행사가를 설정하여 보고있는데요
이 각 행사가마다 각각 조건 만족시 모두 세로선이 발생되었으면합니다
즉, 1번 행사가와 이 조건이 만족시 세로선 발생
2번 행사가와 이 조건이 만족시 세로선 발생
3번 행사가와 이 조건이 만족시 세로선 발생
색상과 두께는 각각 조정이 가능하도록 부탁드립니다
감사합니다!
---------------------------------------------------------------------------
var : cond1(false,data1),cond2(false,data1);
plot1(data1(highD(0)),"data1고가");
plot2(data1(LowD(0)),"data1저가");
cond1 = data1(highD(0))-data2(highD(0)) <= PriceScale*10;
cond2 = data1(LowD(0))-data2(lowD(0)) <= PriceScale*10;
if Cond1 == true and cond1[1] == false Then
PlaySound("C:₩예스트레이더₩data₩Sound₩point.wav");
if Cond2 == true and cond2[1] == false then
PlaySound("C:₩예스트레이더₩data₩Sound₩point.wav");
2020-05-22
1190
글번호 139073
2wnwn 님에 의해서 삭제되었습니다.
2020-05-22
19
글번호 139072
답변완료
문의드립니다~~
안녕하세요~~
단기: 6일이평
중기: 20일이평
매수:
종가<최저값(avg(c,5),30) And 단기/ 중기*100 > 95 ~~ <100
(30일 기간중에 최저의 5일이평보다 종가가 작고 And 단기 중기 이격도가 95~100 이상
매수청산:
단기/ 중기 *100 > 150 또는
종가>최고값(avg(c,10),50) And 단기/ 중기(60) * 100 > 100
(중기 60일전)
매도:
종가>최고값(avg(c,5),30) And 단기/ 중기*100 < 95 ~~ >100
(30일 기간중에 최고의 5일이평보다 종가가 크고 And 단기 중기 이격도가 95~100 이하
매도청산:
단기/ 중기 *100 < 150 또는
종가>최저값(avg(c,10),50) And 단기/ 중기(60) * 100 < 100
(중기 60일전)
자동실행 부탁드립니다~~
2020-05-22
888
글번호 139071
답변완료
피봇수식 수정 부탁드립니다.
아래의 수식은 피봇분봉을 이용하여 각각의 선을 돌파하면 매수
이탈하면 매도되도록 작성하였습니다.
5개의 선의 사이사이에 중간값으로 추가로 매매되도록 하고 싶습니다.
예를들어서 (Pivot + R1)/2를 하면 중간값이 나올거도 같은데
가능할런지요?? 가능하다면 수정에 도움을 주시길 희망합니다.
- 아 래 -
Pivot = (DayHigh(1)+DayLow(1)+DayClose(1))/3;
R1 = 2*Pivot-DayLow(1);
R2 = Pivot+DayHigh(1)-DayLow(1);
S1 = 2*Pivot-DayHigh(1);
S2 = Pivot-DayHigh(1)+DayLow(1);
if crossup(C,R2+PriceScale*n) Then
T = 5;
if crossup(C,R1+PriceScale*n) Then
T = 4;
if crossup(C,Pivot+PriceScale*n) Then
T = 3;
if crossup(C,S1+PriceScale*n) Then
T = 2;
if crossup(C,S2+PriceScale*n) Then
T = 1;
if CrossDown(C,R2-PriceScale*n) Then
T = -5;
if CrossDown(C,R1-PriceScale*n) Then
T = -4;
if CrossDown(C,Pivot-PriceScale*n) Then
T = -3;
if CrossDown(C,S1-PriceScale*n) Then
T = -2;
if CrossDown(C,S2-PriceScale*n) Then
T = -1;
if Tcond == true and Xcond == false then
{
if T != T[1] and
T >= 0 and T[1] <= 0 Then
Buy("매수");
if T != T[1] and
T <= 0 and T[1] >= 0 Then
Sell("매도");
}
2020-05-21
867
글번호 139070
답변완료
질문드립니다.
heiken ashi차트의 시고저종 계산식은 검색을 통해서 알고 있습니다. 그런데 heiken ashi차트에서 양봉과 음봉을 가르는 비교기준이 무엇인지 질문드립니다. 일반봉차트의 비교방식처럼 시가와 종가 비교만으로 했을 때는 제대로 표현되지 않아서 질문드립니다.
2020-05-21
1062
글번호 139069
답변완료
문의 드립니다.
시스템 처음 해 보는데요.
기본적인 질문이지만 부탁드립니다.
if MarketPosition == 1 Then
{
if(CrossDown(var2,var3)) Then // 청산
{
ExitLong("BX");
}
}
if MarketPosition == -1 Then
{
if(CrossUp(var2,var3)) Then // 청산
{
ExitShort("SX");
}
}
if var2 > var3 Then
{
buy("B");
SetStopLoss(PriceScale*losscut,PointStop);
}
if var2 < var3 Then
{
sell("S");
SetStopLoss(PriceScale*losscut,PointStop);
}
이렇게 해서 10분봉 으로 전략실행을 시키면 "BX" 나 "SX"가 찍히면서 매도, 매수 주문이
실행 됩니다.
보시면 아시겠지만 BX 나 SX는 청산주문인데요.
신규주문은 "B" 나 "S" 가 찍히거든요.
시스템을 실행시키고 신규주문부터 체결되도록 하는 방법이 있을까요.
2020-05-21
908
글번호 139068
답변완료
67529번 재문의
항상 수식 작성에 도움을 주셔서 감사 드립니다.
위 그림과 같이 수정해 주신 수식을 적용해 보았습니다만...
여전히 매수구간에서 매수신호와 청산 신호가 표시 되지 않고 있습니다.
매도구간과 똑같이 매수구간에서도 매수신호 화살표와 매수청산 표시가 나타나도록
수정 부탁드립니다.
> 예스스탁 님이 쓴 글입니다.
안녕하세요
예스스탁입니다.
시가포함 이평계산에 오류가 있어 수정했습니다.
아래식으로 적용해 보시기 바랍니다.
input : sto1(12),sto2(6),sto3(6),P1(3),P2(5);
var : stok(0),stod(0),mav1(0),mav2(0);
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
if MarketPosition >= 0 and stok < stod and mav1 < mav2 then
{
PlaySound("D:₩해외선물₩사운드₩매도신호발생1.wav");
if (NextBarOpen+AccumN(c,P2-1))/P2 > mav2 Then
sell("s",AtMarket);
}
if MarketPosition == -1 and (stok > stod or (mav1 >= mav2)) Then
{
PlaySound("D:₩해외선물₩사운드₩trailingstop매수주문전송문장.wav");
ExitShort("sx");
}
if MarketPosition <= 0 and stok > stod and mav1 > mav2 then
{
PlaySound("D:₩해외선물₩사운드₩매수신호발생1.wav");
if (NextBarOpen+AccumN(c,P2-1))/P2 < mav2 Then
Buy("b",AtMarket);
}
if MarketPosition == 1 and (stok < stod or (mav1 <= mav2)) Then
{
PlaySound("D:₩해외선물₩사운드₩trailingstop매도주문전송문장.wav");
ExitLong("bx");
}
2020-05-21
1083
글번호 139067