커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6138
글번호 230811
답변완료
수식 수정 부탁드립니다.
안녕하십니까
수식 수정 부탁드립니다.
만들어 주신 수식 조건 입니다.
--------------------------------------------------------------------------------
ㅇ 매수 : 1. 당일 시가 형성이 플러스, 전일 종가 대비 마이너스 10% 이내에서 시작
AND
2. 당일 첫 캔들이 양봉이면 매수(1분봉이나 3분봉에 적용)
2가지 조건 모두 만족하면 매수
ㅇ 매도 : 1. 매수 후 첫번째 음봉
OR
2. 현재가가 고점대비 2% 이상 하락
2가지 조건중 하나라도 만족하면 매도
if Bdate != Bdate[1] and
DayOpen <= Dayclose(1)*1.10 and DayOpen >= Dayclose(1)*0.90 and
C > O Then
buy();
if MarketPosition == 1 Then
{
if C < O Then
ExitLong();
ExitLong("bx",AtStop,Highest(H,BarsSinceEntry)*0.98);
}
------------------------------------------------------------------------------
위 수식 매수 조건 중
당일 첫 캔들 조건은 그대로 유지하고,
장 중이라도 시스템 적용 시점을 기준으로 첫 캔들이 양봉일 경우 매수 할 수있게 추가 가능한지 검토 부탁드립니다.
예를 들어 10시 30분경 시스템을 적용하였으면 10시 30분 기준 첫 캔들이 양봉일 경우 매수 하게 하고 싶습니다.
두가지 조건이 불가능하다면 장중 시스템 적용시점을 기준으로 첫캔들에 매수 신호가 나갈수있게 수정 부탁드립니다.
감사합니다.
2022-03-22
917
글번호 157377
음훼훼훼 님에 의해서 삭제되었습니다.
2022-03-22
9
글번호 157376
답변완료
문의 드립니다.
매수 조건
당일 시가를 기준으로 주가가 시가 위에 있고
MACD오실레이터 12 26 9가 0선 아래서 위로 돌파 시 매수 진입
청산은 오실레이터 막대가 전 막대보다 짧아지면 매도 청산하고
손절은 0선 아래로 돌파 시 매도 청산완료
매도 조건
당일 시가를 기준으로 주가가 시가 아래에 있고
MACD오실레이터 12 26 9가 0선 위에서 아래로 돌파 시 매도 진입
청산은 오실레이터 막대가 전 막대보다 길어지면 매수 청산하고
손절은 0선 위로 돌파 시 매수 청산완료
부탁드립니다.
2022-03-22
892
글번호 157375
답변완료
수식 문의 드립니다.
질문번호 76457 관련입나다.
아래 수식을 적용하여 보니
지그재그챠트 고점에서 가격과 진폭(고저차)수치가
캔들과 겹쳐 잘 안보여서
캔들 고점위에서 가격은 안보이게 하고
진폭(고저차)수치만 보이게 하는 수식을 부탁드립니다.
.
nput:length(12),글자크기(20);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),
Text1(0),처리구분("");
Array:고점[10,2](0),저점[10,2](0); //가격,위치
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then
처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then
처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],
sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2)
+NewLine+NumToStr((고점[1,1]-저점[1,1]),2));
Text_SetStyle(Text1, 3, 3);
Text_SetSize(text1,글자크기);
}
}
If 처리구분 == "저점처리" Then
{
lastLoVal = L;
If 저점[1,2] < 고점[1,2] then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],
sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2)
+NewLine+NumToStr((고점[1,1]-저점[1,1]),2));
Text_SetStyle(Text1, 3, 3);
Text_SetSize(text1,글자크기);
}
}
TL_SetSize(TL1,3);
TL_SetColor(TL1,lgreen);
2022-03-22
969
글번호 157374
답변완료
알람 선을 마우스로 조정할 수 있는 지 여쭙니다
반갑습니다. 전문가 님.
현재 예스 트레이더 차트에 조악하게 자작한 알람을 사용하고 있는데요
숫자를 일일이 입력해 알람 선을 조정하는 방식이라 다소 번거롭습니다.
그냥 차트에서 알람 선을 마우스로 드래그(끌기)해서 위 아래로 조정할 수 있는지, 조정할 수 있다면 어떻게 해야 하는 지 궁금합니다.
미리 감사하다는 말 드리고 싶습니다.
2022-03-22
978
글번호 157373
답변완료
수식 문의 드립니다.
안녕하세요
키움 수식입니다.
예스스팟으로 변환 한번 해보려고 하는데 아직 실력이 없어서 변환이 무리 인것 같아 도움요청 드립니다.
볼린저 상하단 돌파시 매수 매도 1차 진입 하고 Ntick 떨어지거나 오를경우 하나더 진입하는 수식입니다.
2차 진입 후 더 떨어지거나 오를 경우 추가로 3차진입을 하나 더 변수로 추가 하고 싶습니다. 더불어 주문수량을 2개이든 3개이든 변수로 넣고 싶습니다.
바쁘시겠지만 수식 작성 부탁드립니다.
감사합니다.
// 매수진입 [BuyA : Bolinger Band[20,2] 저가<=하한밴드, ]
[IOG = True]
param : BuyA_Leng(20) // 이동평균기간
, BuyA_DV(2) // 표준편차
, BuyA_ChoiceType(2) // 상한, 중간, 하한밴드 선택
, BB_Back(0)
, Ntick(100)
;
Var : TickSize( 0 );
TickSize = OneTick * PriceScale; // 호가 단위
if MarketPosition > 0 And c < EntryPrice - TickSize * Ntick And EntryPrice>0 Then Buy("B2");
if MarketPosition < 0 And c > EntryPrice + TickSize * Ntick And EntryPrice>0 Then Sell("S2");
var : BuyA_PriceVar(0), BuyA_Price1(0), BuyA_Price2(0), BuyA_Price3(0), BuyA_V3(0), BuyA_Result(FALSE);
BuyA_PriceVar = (High+Low+Open)/3;
BuyA_Price1 = BollBandUpUser(BuyA_PriceVar, BuyA_Leng, BuyA_DV);
BuyA_Price2 = SMA(BuyA_PriceVar, BuyA_Leng);
BuyA_Price3 = BollBandDownUser(BuyA_PriceVar, BuyA_Leng, BuyA_DV);
If BuyA_ChoiceType = 0 Then // 상한밴드 선택
Begin
BuyA_V3 = BuyA_Price1;
End
Else
If BuyA_ChoiceType = 1 Then // 중간밴드 선택
Begin
BuyA_V3 = BuyA_Price2;
End
Else // 하한밴드 선택
Begin
BuyA_V3 = BuyA_Price3;
End;
BuyA_Result = FALSE;
IF C <= BuyA_V3 Then
BuyA_Result = TRUE;
if ( BuyA_Result[BB_Back] ) And !IsEntryName("B1")
Then
Begin
Buy("B1");
End;
/////////////////////////////////////////////////////////////////////////////
// 매도진입 [SellA : Bolinger Band[20,2] 고가>=상한밴드, ]
[IOG = True]
param : SellA_Leng(20) // 이동평균기간
, SellA_DV(2) // 표준편차
, SellA_ChoiceType(0) // 상한, 중간, 하한밴드 선택
;
var : SellA_PriceVar(0), SellA_Price1(0), SellA_Price2(0), SellA_Price3(0), SellA_V3(0), SellA_Result(FALSE);
SellA_PriceVar = (High+Low+Open)/3;
SellA_Price1 = BollBandUpUser(SellA_PriceVar, SellA_Leng, SellA_DV);
SellA_Price2 = SMA(SellA_PriceVar, SellA_Leng);
SellA_Price3 = BollBandDownUser(SellA_PriceVar, SellA_Leng, SellA_DV);
If SellA_ChoiceType = 0 Then // 상한밴드 선택
Begin
SellA_V3 = SellA_Price1;
End
Else
If SellA_ChoiceType = 1 Then // 중간밴드 선택
Begin
SellA_V3 = SellA_Price2;
End
Else // 하한밴드 선택
Begin
SellA_V3 = SellA_Price3;
End;
SellA_Result = FALSE;
IF C >= SellA_V3 Then
SellA_Result = TRUE;
if ( SellA_Result[BB_Back] ) And !IsEntryName("S1")
Then
Begin
Sell("S1");
End;
2022-03-22
1399
글번호 157367
답변완료
재문의드립니다.
식이 복잡하므로 조금씩 부탁드립니다.
차트에 3분봉을 띄우고 3분봉으로 매수매도를 합니다.
3분봉에서 기준선을 2개 만드는데요.
일봉기준으로 기준선을 만듭니다.
일봉에서
가장 최근에 음봉이 발생하면 이 때의 최근 음봉을 음봉1 이라 하고 종가를 b 라 하고
가장 최근 음봉 보다 이전에 발생한 음봉들을 관찰하고
최근 음봉 종가 b < 이전에 발생한 음봉2의 종가
동시에 최근 음봉 시가 < 이전에 발생한 음봉2의 시가
를 만족하는 이전의 음봉2을 찾는 것입니다
.
그 음봉을 찾았으면 대음봉을 만드는데요. 종가는 당연히
최근 음봉 종가 b 가 되고요
시가는 음봉2의 시가가 대음봉 시가가 됩니다.
이렇게 대음봉 몸통이 만들어 졌으면 몸통의 1/2 즉 몸통의 절반가격을 대음봉 기준선B
라고 합니다
기준선 B 까지 수식을 부탁드립니다.
제가 일봉과 분봉을 결합시키는 것을 모르겠어요.
수고에 감사드립니다.
2022-03-22
1022
글번호 157366
회원 님에 의해서 삭제되었습니다.
2022-03-23
141
글번호 157365
답변완료
76429 글 다시 확인 좀 요청 드립니다.
* 전일 해주신 수식 작성했으나 별표가 안 찍힙니다.
아래 내용 문법에 맞는지 확인 좀 부탁 드립니다.
##매수통합
Condition1 = CrossUp(var55-0.6, mid ) ;
Condition2 = CrossUp(var55-0.6, Lmav) and c > ma(L,5) ;
Condition3 = CrossUp(LRLv - PriceScale*23 , var80 - PriceScale*13) and value17 < -20 ;
Condition4 = CrossUp(LRLv-PriceScale*20,var81-PriceScale*14) AND value8 < -0.001 ;
Condition5 = CrossUp(LRLv - PriceScale*23 , var80 - PriceScale*13) ;
Condition6 = CrossUp(LRLv1 - PriceScale*23 ,var93 - PriceScale*16) AND L < MA(C,230) and value17 < -28 ;
Condition7 = CrossUp(LRLv-PriceScale*20,var81-PriceScale*11) AND StoD2<30 AND LRLv92-PriceScale*23 > LRLv91-PriceScale*23 AND StoD4 < 30 AND Value65 > -0.008 ;
Condition8 = CrossUp(LRLv - PriceScale*20 ,var81 - PriceScale*14) AND value8 < -0.001 and value17 < -28 ;
if //dayindex() >= 2 and
CountIf(Condition1==true,bw) >= 1 and
CountIf(Condition2==true,bw) >= 1 and
CountIf(Condition3==true,bw) >= 1 and
CountIf(Condition4==true,bw) >= 1 and
CountIf(Condition5==true,bw) >= 1 and
CountIf(Condition6==true,bw) >= 1 and
CountIf(Condition7==true,bw) >= 1 and
CountIf(Condition8==true,bw) >= 1 and
(Condition1 == true or Condition2 == true or Condition3 == true or Condition4 == true or Condition5 == true or Condition6 == true or Condition7 == true or Condition8 == true ) Then {Tx03 = Text_New(sdate,stime,MA(L,5)-3.0 ,"★"); Text_SetStyle(Tx03,2,2); Text_SetColor(Tx03, RGB(0,50,200) ); Text_SetSize(Tx03,26); }
* 항상 고맙습니다. 수고하십시요.
2022-03-22
957
글번호 157364