커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3490
글번호 230811
답변완료
문의드립니다.
주식 거래 시 특정 조건 만족 시 미리 매수/매도를 걸어놓는 형태로 매매를 하려고 하는데
수식 부탁드려 봅니다.
감사합니다.
예) 1분봉 거래 시 시가에서 가격이 하락하다가 9시 30분에 5500원까지 하락할 때,
5000원 및 4500원에 분할로 미리 매수를 걸어 놓는 방법.
(조건 만족 시점에는 매수 가격에 도달하지 않고 미래 시점(10시에 5000원, 10시 30분에 4500원 등) 도달한다고 가정)
2021-03-03
838
글번호 146749
답변완료
alert 정수형 출력
alert("%.2f ",C);
C=102.24 일때 102로 출력되게 하려면 어떻게 하면 되나요 ?
수고하세요
2021-03-03
729
글번호 146746
답변완료
수정부탁드립니다
안녕하세요.
아래식에서 파동의시작을 국내선물 장시작시간부터 계산되고 종료후에는 초기화되어
익일장은 또 새롭게 계산되는식으로 수정하면 좋겠습니다,
도움 부탁드립니다.
input : af(0.02), maxAF(0.2),크기(0);
input : 텍스트출력(1);
var : T(0),HH(0),LL(0),HD(0),HT(0),LD(0),LT(0),TL1(0),TL2(0),cnt(0),count(0);
var : HH1(0),LL1(0),HD1(0),HT1(0),LD1(0),LT1(0),DarkGray(0);
var : ni(0),nP(0),nN(0),tx1(0),tx2(0),hi(0),li(0);
var1 = CSar(af,maxAF);
if crossup(c,var1) Then
{
T = 1;
HH = H;
HD = sdate;
HT = stime;
Hi = Index;
HH1 = HH[1];
HD1 = HD[1];
HT1 = HT[1];
if LL > 0 Then
{
ni = Hi-Li+1;
nP = CountIf(C>O,ni);
nN = CountIf(C<O,ni);
if 텍스트출력 == 1 then
{
Tx1 = Text_New(HD,HT,HH,NumToStr(ni,0)+"("+NumToStr(nP,0)+","+NumToStr(nN,0)+")");
Text_SetStyle(tx1,2,1);
Text_SetColor(tx1,MAGENTA);
Text_SetSize(tx1,크기);
}
}
}
if CrossDown(c,var1) Then
{
T = -1;
LL = L;
LD = sdate;
LT = stime;
Li = Index;
LL1 = LL[1];
LD1 = LD[1];
LT1 = LT[1];
if HH > 0 Then
{
ni = Li-Hi+1;
nP = CountIf(C>O,ni);
nN = CountIf(C<O,ni);
if 텍스트출력 == 1 then
{
Tx2 = Text_New(LD,LT,LL,NumToStr(ni,0)+"("+NumToStr(nP,0)+","+NumToStr(nN,0)+")");
Text_SetStyle(tx2,2,0);
Text_SetColor(tx2,BLUE);
Text_SetSize(tx2,크기);
}
}
}
if T == 1 then
{
if H > HH Then
{
HH = H;
HD = sdate;
HT = stime;
HI = Index;
ni = Hi-Li+1;
nP = CountIf(C>O,ni);
nN = CountIf(C<O,ni);
if 텍스트출력 == 1 then
{
Text_Delete(tx1);
Tx1 = Text_New(HD,HT,HH,NumToStr(ni,0)+"("+NumToStr(nP,0)+","+NumToStr(nN,0)+")");
Text_SetStyle(tx1,2,1);
Text_SetColor(tx1,MAGENTA);
Text_SetSize(tx1,크기);
}
}
}
if T == -1 then
{
if L < LL Then
{
LL = L;
LD = sdate;
LT = stime;
Li = Index;
ni = Li-Hi+1;
nP = CountIf(C>O,ni);
nN = CountIf(C<O,ni);
if 텍스트출력 == 1 then
{
Text_Delete(tx2);
Tx2 = Text_New(LD,LT,LL,NumToStr(ni,0)+"("+NumToStr(nP,0)+","+NumToStr(nN,0)+")");
Text_SetStyle(tx2,2,0);
Text_SetColor(tx2,BLUE);
Text_SetSize(tx2,크기);
}
}
}
2021-03-03
765
글번호 146744
답변완료
문의
리버스거래 수식이며 피라미딩은 max 3개입니다.
문의1)
b1-b2-b3-s1-s2-s3-b1-b2-b3...이런 패턴을 예상했으나
이러한 패턴을 포함하여
b1-b2-b3-s2-s3-s3-b3-b1-b2...처럼
뒤집을 때 s1보다 s2가 먼저 진입하며
피라미딩도 s2-s3-s3 처럼 s3가 중복되는 진입도 있으며
피라미딩 순서도 b3-b1-b2 처럼 순차적이 아닌 경우도 있습니다.
요청내용
첫째, 포지션을 뒤집을 때는 b1이나 s1부터 시작되고
둘째, s2-s3-s3 에서 s3 가 두번 들어가는데 동일 진입명은 피라미딩에서 제외하고
셋째, b1-b2-b3나 s1-s2-s3 처럼 순차적으로 피라미딩이 되게 수식을 수정하여 주십시요.
************************************************************************************
input:이평1(35),이평2(105),이평3(75),이평4(95);
input:이평5(15),이평6(10),이평7(70),이평8(10);
input:이평9(5),이평10(10),이평11(55),이평12(30);
var : v1(0,data2),v2(0,data2);
var : v3(0,data3),v4(0,data3);
var : v5(0,data2),v6(0,data2);
var : v7(0,data3),v8(0,data3);
var : v9(0,data2),v10(0,data2);
var : v11(0,data3),v12(0,data3);
v1 = data2(ma(C,이평1));
v2 = data2(ma(C,이평2));
v3 = data3(ma(C,이평3));
v4 = data3(ma(C,이평4));
v5 = data2(ma(C,이평5));
v6 = data2(ma(C,이평6));
v7 = data3(ma(C,이평7));
v8 = data3(ma(C,이평8));
v9 = data2(ma(C,이평9));
v10 = data2(ma(C,이평10));
v11 = data3(ma(C,이평11));
v12 = data3(ma(C,이평12));
if MarketPosition <= 0 and CrossUp(v1,v2) or CrossUp(v3,v4) Then
BuY("b1");
if MarketPosition == 1 and MaxEntries == 1 and CrossUp(v5,v6) or CrossUp(v7,v8) Then
BuY("b2");
if MarketPosition == 1 and MaxEntries == 2 and CrossUp(v9,v10) or CrossUp(v11,v12) Then
buy("b3");
if MarketPosition >= 0 and CrossDown(v1,v2) or CrossDown(v3,v4) Then
Sell("s1");
if MarketPosition == -1 and MaxEntries == 1 and CrossDown(v5,v6) or CrossDown(v7,v8) Then
Sell("s2");
if MarketPosition == -1 and MaxEntries == 2 and CrossDown(v9,v10) or CrossDown(v11,v12) Then
Sell("s3");
2021-03-03
734
글번호 146743
답변완료
청산식 설명좀 부탁합니다
안녕하세요 아래는 제가 쓰는 매수청산식중에 하나인데요
얼마전에 "익일 3시15분이후까지 청산이 안되면 그이후 강제청산"식을 추가해 달라고했더니
if sDate > EntryDate and sTime >= 151500 Then
ExitLong("bx");
이렇게 넣어주셨더라고요
혹시 식 설명좀 부탁드려도될까요?
왜 저식이 매수당일이 아닌 익일 3시 15분까지 청산이 안되면 강제청산이 되는 식인지요
if MarketPosition == 0 and 진입조건 Then
{
Buy("A1.3");
#진입과 동시에 셋팅되서 진입봉 다음봉만 익절/손절감시해 신호 발생
ExitLong("A1.3.11",AtLimit,C*1.16,"A1.3");
ExitLong("A1.3.31",AtStop,C*0.99,"A1.3");
}
if MarketPosition == 1 Then
{
#A1.3진입
if CurrentContrActs > CurrentContrActs[1] And LAtestEntryNAme(0) == "A1.3" Then
{
A1.3Price = LAtestEntryPrice(0);
A1.3high = H;
}
if A1.3high > 0 And H > A1.3high Then
A1.3high = H;
if A1.3Price > 0 Then
{
ExitLong("A1.3.1",AtLimit,A1.3Price*1.16,"A1.3");
if A1.3high >= A1.3Price*1.01 Then
ExitLong("A1.3.2",AtStop,A1.3high*0.93,"A1.3");
ExitLong("A1.3.3",AtStop,A1.3Price*0.99,"A1.3");
}
if sDate > EntryDate and sTime >= 151500 Then
ExitLong("bx");
}
2021-03-03
699
글번호 146742
답변완료
지표
예를들어
10시 시가선
11시 시가선
12시 시가선
이런식으로 각 시간마다 시가선을
우측연장으로 표현하고 시가가 올라가면 올라가는 계단형식으로 표현하고
내려가면 반대로 표현이 가능한지요.(현재가도 추가 부탁합니다)
가능하다면
지표속성에서 변수로 시간을 조정할수 있게 해주시고요
차트표시에 나타나서 체우기를 할수 있게 부탁 드립니다.
2021-03-03
763
글번호 146741
답변완료
시그널메이커를 예스로요~
안녕하세요?
시그널메이커에서 예스로 이사중입니다.꼭좀 변환 부탁드립니다.^^
input : Exit_PT(200),Exit_LPT(200),BuyProfit(150),SellProfit(150),StopTick(100);
var :SP(0);
Params : TradingStartTime1(090000),TradingEndTime1(045400);
var : Today_P( 0 ), Pre_NetProfit( 0 ), ProfitPoint( 0 ),LossPoint(0), myOpenProfit(0),TickPoint(0);
Params : FastPeriod(92), SlowPeriod(109), SignalPeriod(85);
SP = SignalPosition;
TickPoint = OneTick * PriceScale;
V0 = MACD(C, FastPeriod, SlowPeriod);
V1 = XAverage(V0, SignalPeriod);
if Time = 090000 Or (Time >= 090000 And (Time[1] < 090000 Or Date<>date[1])) Then
Begin
ProfitPoint = 0;
Today_P = 0;
Pre_NetProfit = NetProfit[1];
condition99 = false;
condition88 = false;
End;
Today_P = NetProfit - Pre_NetProfit; // 하루 누적 수익
myOpenProfit = OpenPositionProfit;
If (Today_P + myOpenProfit) >= (Exit_PT * TickPoint ) Then
condition99 = true;
If (Today_P + myOpenProfit) <= (-Exit_LPT * TickPoint) Then
condition88 = true;
if TradingStartTime1 < TradingEndTime1 Then
Begin
If TradingStartTIME1 <= TIME And TIME <= TradingEndTIME1 Then COND44 = True
Else COND44 = False;
End
Else
Begin
If TradingStartTIME1 <= TIME Or TIME <= TradingEndTIME1 Then COND44 = True
Else COND44 = False;
End;
If Cond44 = False Then
Begin
if SP <> 0 Then
Begin
ExitLong("마감 매수 청산",OnClose,def,def,CurrentContracts);
ExitShort("마감 매도 청산",OnClose,def,def,CurrentContracts);
End;
Cond44 = False;
End;
ProfitPoint = Exit_PT * TickPoint? - Today_P - myOpenProfit;
LossPoint = Exit_LPT * TickPoint + Today_P + myOpenProfit;
if 1 = Sp then
Begin
ExitLong("매수 익절마감", Atlimit, close + ProfitPoint);
ExitLong("매수 손절마감", AtStop, close - LossPoint);
ExitLong("매수 청산", Atlimit, EntryPrice + BuyProfit * TickPoint );
End
Else if -1 = Sp then
Begin
ExitShort("매도 익절마감", Atlimit, close - ProfitPoint);
ExitShort("매도 손절마감", AtStop, close + LossPoint);
ExitShort("매도 청산", Atlimit, EntryPrice - SellProfit * TickPoint );
End;
//지정한 시간대에만 거래
if Cond44 And false = condition99 And false = condition88 Then
Begin
if CrossUp(V0,V1) Then
Buy("매수")
Else if CrossDown(V0,V1) Then
Sell("매도");
End;
SetStopLoss(StopTick * TickPoint * currentcontracts ,pointstop);
//Trailing 적용하기
Params : up_price1(135), dn_price1(100), up_price2(100), dn_price2(80),up_price3(50), dn_price3(1);
var : TickSize(0);
TickSize = OneTick * PriceScale;
If MaxContractProfit < TickSize * (up_price1 + 10) Then SetStopTrailing(TickSize * dn_price1, TickSize * up_price1)
Else if MaxContractProfit < TickSize * (up_price2 + 10) Then setstopTrailing(TickSize * dn_price2, TickSize * up_price2)
Else SetStopTrailing(TickSize * dn_price3, TickSize * up_price3);
2021-03-02
772
글번호 146740
답변완료
부탁합니다
안녕하세요
시스템식좀 부탁합니다
이평선 5 10 20 40 60 사용합니다
매수 --- 이평선 40 60 이 같거나 40 이평선이 60 보다 크고
5 일 이평선이 10 일 이평선보다 크고 음봉때 매수
추가매수 --- 20 이평선 또는 40 이평선이 각도가 살아있고 터치하고 아래꼬리가
발생하면 매수
손절 -- 60 이평선 이탈시 손절
반대 매도도 부탁합니다
2021-03-02
784
글번호 146718
답변완료
추가 식좀 부탁합니다
안녕하세요
추가 식좀 부탁합니다
매수 매도 진입청산 색상을 이용합니다
1 진입 해서 20틱 이상 수익이 발생하지 않고
손절은 되지 않았으나 진입 가격을 이탈하고 다시 회복하면 진입가 3틱 이상에서 청산
2 진입 해서 30틱 이상 수익이 발생하고 내려오면 진입가 5틱 이상에서 청산
3 진입 해서 60틱 이상 수익이 발생하고 내려오면 20틱 이상에서 청산
4 300틱 이상 수익나면 포지션 완전청산
5 특정이평선 (예 60이평선) 매수시 아래에 있으면 완전청산 200틱
매수시 위에 있으면 완전청산 50틱
6 특정이평선이 (예 60이평선) 연속 4봉 올라가면 손절
반대식도 부탁합니다
이 기능들은 변수 에서 처리 할수 있겠금 부탁합니다
2021-03-03
1320
글번호 146716