커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7485
글번호 230811
답변완료
지표식 문의
안녕 하세요.
옵션 시스템매매를 구현코져 아래와 같이 질문드리오니 바쁘신가운데라도 답변하여
주시오면 감사하겠습니다.
먼저 예를 들겠습니다.
<예1>콜옵션 252의 당일최저점이 2.25라고 가정하면
1차고점 : 2.25*1.2125 = 2.72 (2.728125인데 소수점 2자리미만은 절사)
<예2>풋옵션 252의 당일최고점이 2.25 라면
1차저점 : 2.25*0.6185 = 1.39 (1.391625인데 소수점 2자리미만은 절사)
위와같은 방법으로
<콜옵션> 은
1차고점 : 당일최저점*1.2125= ( ) 빨강색 수평선으로 표시
2차고점 : 당일최저점*1.3212= ( ) "
3차고점 : 당일최저점*1.5596= ( ) "
4차고점 : 당일최저점*1.7214= ( ) "
5차고점 : 당일최저점*2.2354= ( ) "
(1-5차 고점은 콜옵션만해당)
***그리고 당일고점이나 저점과는 상관없이 고정된 숫자로
1.25, 2.5, 5.0, 7.5 수치에는 파랑색(blue) 수평선으로 나타나게 하여주시고
굵기는 위의선보다 한단계 더굵은 2번선으로 하여주시고
<풋옵션> 은
1차저점 : 당일최고점*0.6185= ( ) 파랑색수평선으로 표시
2차저점 : 당일최고점*0.4326= ( ) "
3차저점 : 당일최고점*0.3254= ( ) "
(1-3차 저점 은 풋옵션만해당)
***당일고점이나 저점과는 상관없이 고정된 수치로
1.25, 2.5, 5.0, 7.5 수치에는 빨강색(red) 수평선으로 나타나게 하여 주시고
굵기는 위의 선보다 굵은 2번선으로 하여주시면 감사하겠습니다.
분봉차트에 당일고점과 저점이 상하로 변화함에따라
수평선도 자동으로 상하로 변동되게 하고져 합니다
바쁘신데 수고를 끼처드려 송구 스럽습니다.
그리고 지표식을 차트에 적용하는 방법좀 간단히 부탁 드립니다.
건강하시고 날마다 웃음이 넘쳐나는 화목한 가정이 되시길 기원합니다.
이메일 : jdk365@naver.com
2014-11-02
496
글번호 79993
답변완료
문의드립니다.
항상 도움 주셔서 감사합니다.
스탑로스에 대해 문의 드립니다.
문1) 일단 정상적으로 매수 매도 청산 로직에
맨 하단에 스탑로스를 코딩하였습니다.
스탑로스 코딩 위치는 상단 또는 중간에 코딩 해도 되나요?
아니면 보통 맨 하단에 코딩하는게 맞나요?
문2) 매수, 매도 청산이 "목표수익청산" 청산 이후
재진입은 스탑로스 폭을 다르게 하고 싶습니다.
if 문을 사용해서 다르게 스탑로스가 가능한가요?
문3) 스탑로스 대신에 가격조건으로 스탑로스를 하려고
했지만 어떻게 해야할지 모르겠습니다.
이 부분에 대한 오류 수정 부탁드립니다.
예문 참조 부탁드립니다.
좋은 아이디어 부탁드립니다.
문4) 해외 통화선물인데 시간설정에 대해 청산이 되지 않습니다.
성능보고서 상에는 당일 청산이 되어 있는데 실제로는 청산이
안되었습니다.
또 11월1일(토요일) 새벽에는 성능보고서 뿐만 아니라
실제 청산 자체가 안되었습니다.
거래종목은 유로FX입니다.
왜 그런것일까요?
예문)
거래종목:유로FX매매
시간: 7시부터~익일 6시까지
거래계약수 : 1계약
input : 손절(20), 수익(20) ,재진입손절(10), 재진입수익(10);
var : 이평5(0), 이평10(0), 이평20(0) ;
이평5 = ma(c,5);
이평10 = ma(c,10);
이평20 = ma(c,20);
#거래시간
if sTime >= 070000 or stime < 060000 Then {
# 매매
if MarketPosition == 0 then # 매수
if crossup(이평5,이평10) then
buy("buy");
if MarketPosition == 0 and isexitname("StopProfitTarget") == true then # 매수재진입
if crossup(이평5,이평20) then
buy("buy2");
if MarketPosition == 1 then # 매수청산
if crossdown(이평5,이평10) then
exitlong("ext");
if MarketPosition == 1 and IsEntryName("buy2") == true then #재진입청산
ExitShort("buy_Loss",AtStop,EntryPrice-PriceScale*10); # 이부분이 로직오류
ExitShort("buy_profit",AtStop,EntryPrice+PriceScale*10);
if crossdown(이평5,이평20) then
exitlong("ext2");
-------------------------------------------------------------------------------
if MarketPosition == 0 then # 매도
if crossdown(이평5,이평10) then
sell("sell");
if MarketPosition == 0 and isexitname("StopProfitTarget") == true then # 매도재진입
if crossdown(이평5,이평20) then
sell("sell2");
if MarketPosition == -1 then # 매도청산
if crossup(이평5,이평10) then
exitshort("out");
if MarketPosition == -1 and IsEntryName("sell2") == true then #재진입청산
ExitShort("sell_Loss",AtStop,EntryPrice+PriceScale*10); # 이부분 로직오류
ExitShort("sell_profit",AtStop,EntryPrice-PriceScale*10);
if crossdown(이평5,이평20) then
exitlong("out2");
# 거래시간 종료
}
# 포지션 청산
if stime == 060000 or (stime > 060000 and stime[1] < 060000) Then{
ExitLong("매수청산");
ExitShort("매도청산");
}
# 스탑로스
SetStopProfittarget(수익,PointStop);
SetStopLoss(손절,PointStop);
# 프로그램 중간에 재진입 청산로직이 생각이 안나서 맨하단에 스탑로스를 다르게
코딩해 보았습니다.
if isentryname("buy2") == true or isentryname("sell2") == true then{
SetStopProfittarget(10,PointStop);
SetStopLoss(10,PointStop);
{
else {
SetStopProfittarget(20,PointStop);
SetStopLoss(20,PointStop);
}
문5) 스탑로스를 위와 같이 코딩하는게 맞는지요?
if문 사용시 스탑로스가 미치는 범위는 어디까지 인가요?
문6) 재진입 청산로직에 대해 아래와 같이 가격조건으로 청산하거나
스탑로스 if문을 써서 재진입은 다르게 스탑로스 하고 싶습니다.
아랜)
ExitShort("SLoss",AtStop,EntryPrice-PriceScale*10);
ExitShort("Sprof",AtStop,EntryPrice+PriceScale*10);
문7) 위 예문에 대해 로직이나 플로우에 틀린부분이 있으면
수정 부탁드립니다.
한번에 많은 질문을 드려 죄송합니다.
도움 부탁드립니다.
2014-11-02
199
글번호 79992
답변완료
부탁드립니다
38453 중국선물 상하한가청산 관련 상세한 답변 감사합니다
종목별로 상한가를 입력하여 적용하면 되는거죠 ?
ExitLong("선물매수하한청산",AtStop,BP-int(BP*(Per/100)/PriceScale)*0.05);
에서 // BP, 0.05 // 설명부탁드립니다 ..
다음은 시스스템보안 설정에관해서 여쭤보고싶습니다
비밀번호 설정은 다른사람이전략을열어못보는 용도로 알고잇습니다
다른사람이로직을 뺴가도 초기설정만료일 지나면 사용불가능한거죠 ?
시스템로직이 제 컴퓨터에서만 작동할수잇는 방법은 없나요 .. 다른사람이 뺴가면 다른컴퓨터에서 사용자체가 불가능하게요 ..
이용자 설정은 어떤 작용을 하나요 ?
시급히 대안이 필요한 상황이여서 완벽한 시스템보안 솔루션부탁드립니다 ...
수고해주세요
감사합니다
2014-11-01
205
글번호 79991
답변완료
신호가 발생하지 않는 시스템식 오류수정 부탁드립니다.
안녕하세요 다음과 같은 매매식을 만들었는데 오류수정 부탁드립니다.
Input: EntryStart(93000), EntryClose(143000), MaxTradeN(1), ExpiryDay(0);
Var: Counter(0);
// General Variables
// 전역 변수를 선언한다
// 현재의 매매횟수, 장종료시간, 진입필터와 트리거, 청산트리거 등
Var: NthTrade(0), EndOfDay(150400);
Var: LongFilter(False), ShortFilter(False), GeneralFilter(False);
Var: LongTrigger(False), ShortTrigger(False), xLongTrigger(False), xShortTrigger(False);
//Initialization
//초기화
// 새로운 하루가 시작된다
If DayIndex == 0 || BarIndex == 0 Then {
If ExpiryDay == 1 Then {
EndOfDay = 144900;
}
NthTrade = 0;
}
// What to Do before TradingBarIndex
If sTime < EntryStart Then {
GeneralFilter = False;
}
// What to Do while Trading
Else If sTime>=EntryStart && sTime<=EntryClose Then {
GeneralFilter = True;
}
// What to Do after Last Entry
// 신규진입이 거절된 이후 시간에 해야 할 일들을 정리한다
// 잔여 포지션의 청산 관련
Else {
GeneralFilter = False;
}
// 기본 진입조건의 검증
// 분봉 상태에서 거래횟수 제한을 검증한다
GeneralFilter = GeneralFilter && DataCompress == 2 && NthTrade < MaxTradeN;
// ENTRY
// 기본적인 진입환경이 만족되면 진입을 위한 작업을 개시한다
// 선물 1계약 기준
If MarketPosition == 0 && GeneralFilter Then {
// Filter Verification
// 진입필터의 적용
LongFilter = data2(c)<0 and data3(c)<0 and data4(c)>0 ;
ShortFilter = data2(c)>0 and data3(c) >0 and data4(c)<0;
// 진입과 동시에 매매횟수 증가
If LongFilter && LongTrigger Then {
Buy("B",AtMarket); NthTrade = NthTrade+1;
}
If ShortFilter && ShortTrigger Then {
Sell("S",AtMarket); NthTrade = NthTrade+1;
}
}
// EXIT
//Else If MarketPosition != 0 Then
//(
// Long Exit
// 매수 포지션의 청산 규칙 적용
If MarketPosition == 1 and (data2(c)>0 or data3(c)>0 or data4(c)<0) Then {
ExitLong();
}
// Short Exit
// 매도 포지션의 청산 규칙 적용
If MarketPosition == -1 and (data2(c)>0 or data3(c)>0 or data4(c)<0) Then {
ExitShort();
}
//}
// End of Day
// 어쨌든 당일 청산
SetStopEndofday(EndOfDay);
2014-11-01
215
글번호 79988
강조식을 알고 싶습니다.
var1 = H-L;
var2 = C-L;
var3 = var2/var1*100;
plot1(var3);
var4 = Text_New(sdate,stime,H+PriceScale,NumToStr(var3,2));
Text_SetStyle(var4,2,2);
위의 식이 일봉의 캔들에서 고가와 저가의 폭에서 종가의 위치를 비율로 표시하는 식으로 알고 있는데....
텍스트가 아닌 점으로 표시하는 식으 알고 싶습니다.
var3 이 0 <= ,25 >= 면 빨강색
25 <= , 50 >= 면 주황색
50 <= , 75 >= 면 노랑색
75<= , 100 >= 면 녹색 을 표시하고 싶습니다....
부탁드립니다.
2014-11-01
151
글번호 79987
답변완료
ReferenceError : 엑셀 파일에 연결할 수 없습니다??
스팟에서....
var Data = [];
var Current = [];
function Main_OnStart()
{
Main.MessageLog("현재가, 시가총액 데이터 불러오기");
Start = 0;
}
for( i=2; i<=152; i++)
{
Data[i] = Excel.GetData(1,"A"+i);
}
for( i=2; i<=152; i++)
{
Current[i] = Data[i].current;
}
for( i=2; i<=152; i++)
{
SetData(1,"B"+i,Current[i]);
Excel.Save();
}
13번째 줄에서 ReferenceError : 엑셀 파일에 연결할 수 없습니다.
라고 나오는데 뭐가 문제인지 모르겠습니다.ㅠㅠ
2014-11-01
244
글번호 79986
답변완료
1일 1회 매수 제한
"하루에 1회만 매수 가능"
"당일 신규매수는 당일 오전 11시06분 까지만 가능"
코딩해 주세요.
2014-11-03
145
글번호 79985
답변완료
문의
for 문에서 변수가 순차적으로 증가할때는 정상작동하는데
큰 수에서 작은 수로 역순으로 지정하면 안되는것 같습니다
가령 지표식
var : i(0);
for i = 1 to 5 {
print("c:₩test.txt","%.f",i);
}
2014-08-24 15:00:00 1
2014-08-24 15:00:00 2
2014-08-24 15:00:00 3
2014-08-24 15:00:00 4
2014-08-24 15:00:00 5
2014-08-25 15:00:00 1
2014-08-25 15:00:00 2
2014-08-25 15:00:00 3
2014-08-25 15:00:00 4
2014-08-25 15:00:00 5
이런식으로 출력이 되는데
var : i(0);
for i = 5 to 1 step -1 {
print("c:₩test.txt","%.f",i);
}
로 하면 아무것도 출력되지 않음
step -1 부분을 지워도 마찬가지임
어디가 잘못된 것인지 알려주시면 감사하겠습니다
2014-10-31
161
글번호 79984
hjkang철인 님에 의해서 삭제되었습니다.
2014-11-03
9
글번호 79983