커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3453
글번호 230811
새벽에 님에 의해서 삭제되었습니다.
2020-03-11
6
글번호 136794
답변완료
부탁 드립니다
수고 합니다
식좀 부탁합니다
이평선 20 이평선 고가 저가
이평선 60 이평선
이렇게 사용합니다
매수 조건 -- 60 이평선을 돌파해야하고
이평선으로 3개로 볼때 골드 데드가 아닌고요
제일 위선(60 이평선)을 종가상 돌파하고 다음봉이 종가상 위에 있으면 매수
손절 조건 -- 진입한 선 기준(60 이편선) 종가상 이평선을 이탈이나오고
다음봉이 종가상 전봉(일봉전)보다 낮으면 손절
청산 조건 -- 30틱 이상 수익이 나온다음 20 이평선 저가을 종가상 이탈시 익절입니다
30틱 아래는 손절로 대응합니다
재매수 조건 -- 60 이평선이 20이평선 고가 저가 아래있고
20 이평선으로 종가상 돌파하면 매수
재매수 손절 -- 20 이평선 저가를 이탈시 손절
단 매수청산했다고 바로 매도를 들어가면 않되요()
2020-03-11
266
글번호 136793
답변완료
수식 작성 부탁드립니다.
다음 조건의 수식 작성을 부탁드립니다.
1. 거래 종목인 주지표는 선물이며, 거래는 매일 오후 3시에 한번 만 함.
2. 보조지표1은 '거래 직전일 코스피 외인 순매수 금액'이며, 보조지표2는 '거래 직전일 코스피 개인 순매수 금액'임. 보조지표 3은 '거래 직전일 코스닥 외인 순매수 금액'임
3. 거래 시점에서 보조지표 1이 +면 1000만원(기준금액의 1.0배로 작성해도 무방) 매수함.
3. 거래 시점에서 보조지표 1과 2 모두 +면 1500만원(기준금액의 1.5배로 작성해도 무방) 매수함.
4. 거래 시점에서 보조지표 1, 2, 3, 모두 +면 2000만원(기준금액의 2.0배로 작성해도 무방) 매수함
5. 청산은 거래 다음 날 오후 3시 10분에 무조건 청산함.
* 보조지표는 거래 당일의 순매수 금액이 아니라 '거래 전날'의 순매수 금액입니다.
* 청산시점은 거래 당일이 아닌 거래 다음 날 오후 3시 10분입니다.
2020-03-11
271
글번호 136792
답변완료
Data2 질문 드립니다.
Data2를 제가 직접 적어서 수정해봤는데
Data2가 제대로 적용이 안되는 것 같습니다.
수정 가능하시면 수정 부탁 드리며,
시간상 수정이 불가능하시면 방법이라도 부탁드리겠습니다.
부탁드립니다.
감사합니다.
Input:변동률(0.01),레벨(1),익절틱수(20),손절틱수(15);
Var:행(0,data1),열(0,data1),고점(1,data1),저점(-1,data1),신규(1,data1),연장(2,data1),연속(3,data1),삼선(4,data1),cnt(0,data1),
고라인기울기(0,data1),고라인시작(0,data1),고라인끝(0,data1),
저라인기울기(0,data1),저라인시작(0,data1),저라인끝(0,data1),
시작일(0,data1),시작시각(0,data1),v1(0,data1),val1(0,data1),val2(0,data1);
Array:고[10,44](0,data1),저[10,44](0,data1), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime
최종상태[5](0,data1),처리구분[5](0,data1),TL[3](0,data1),TL1[2](0,data1),고0[10,4](0,data1),저0[10,4](0,data1),결과리턴[8](0,data1);
//=========================================================//
If 레벨 <= 4 Then
{
v1 = 레벨 * 10;
val1 = data1(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분));
If 최종상태[레벨] == 고점 Then
{
If 처리구분[레벨] == 신규 Then
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
If 처리구분[레벨] == 연장 Then
TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
If 처리구분[레벨] == 연속 Then
{
TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
}
If 처리구분[레벨] == 삼선 Then
{
TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]);
TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
}
}
If 최종상태[레벨] == 저점 Then
{
If 처리구분[레벨] == 신규 Then
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
If 처리구분[레벨] == 연장 Then
TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
If 처리구분[레벨] == 연속 Then
{
TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
}
If 처리구분[레벨] == 삼선 Then
{
TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]);
TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
}
}
}
Else
{
Alert("4레벨까지만 가능합니다!!");
}
//=========================================================//
cnt = cnt + 1;
If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then
{
For 행 = 1 To 10
{
For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달
고0[행,열] = 고[행,v1 + 열];
저0[행,열] = 저[행,v1 + 열];
}
}
val2 = data1(YHS_Channel(고0,저0,결과리턴));
If val2 == 1 Then { // 추세대가 형성되었다면
시작일 = 결과리턴[0];
시작시각 = 결과리턴[1];
고라인기울기 = 결과리턴[2];
고라인시작 = 결과리턴[3];
고라인끝 = 결과리턴[4];
저라인기울기 = 결과리턴[5];
저라인시작 = 결과리턴[6];
저라인끝 = 결과리턴[7];
If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록
TL_SetEnd(TL1[0],sDate,sTime,고라인끝);
} Else {
TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝);
TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE));
TL_SetSize(TL1[0],3);
}
If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then {
TL_SetEnd(TL1[1],sDate,sTime,저라인끝);
} Else {
TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝);
TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE));
TL_SetSize(TL1[1],3);
}
}
}
Var:행2(0,data2),열2(0,data2),고점2(1,data2),저점2(-1,data2),신규2(1,data2),연장2(2,data2),연속2(3,data2),삼선2(4,data2),cnt2(0,data2),
고라인기울기2(0,data2),고라인시작2(0,data2),고라인끝2(0,data2),
저라인기울기2(0,data2),저라인시작2(0,data2),저라인끝2(0,data2),
시작일2(0,data2),시작시각2(0,data2),v12(0,data2),val12(0,data2),val22(0,data2);
Array:고2[10,44](0,data2),저2[10,44](0,data2), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime
최종상태2[5](0,data2),처리구분2[5](0,data2),TL2[3](0,data2),TL12[2](0,data2),고02[10,4](0,data2),저02[10,4](0,data2),결과리턴2[8](0,data2);
//=========================================================//
If 레벨 <= 4 Then
{
v1 = 레벨 * 10;
val1 = data2(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분));
If 최종상태[레벨] == 고점 Then
{
If 처리구분[레벨] == 신규 Then
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
If 처리구분[레벨] == 연장 Then
TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
If 처리구분[레벨] == 연속 Then {
TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
}
If 처리구분[레벨] == 삼선 Then {
TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]);
TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
}
}
If 최종상태[레벨] == 저점 Then
{
If 처리구분[레벨] == 신규 Then
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
If 처리구분[레벨] == 연장 Then
TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
If 처리구분[레벨] == 연속 Then
{
TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
}
If 처리구분[레벨] == 삼선 Then
{
TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]);
TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
}
}
}
Else
{
Alert("4레벨까지만 가능합니다!!");
}
//=========================================================//
cnt = cnt + 1;
If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then
{
For 행 = 1 To 10
{
For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달
고0[행,열] = 고[행,v1 + 열];
저0[행,열] = 저[행,v1 + 열];
}
}
val2 = data1(YHS_Channel(고0,저0,결과리턴));
If val2 == 1 Then { // 추세대가 형성되었다면
시작일 = 결과리턴[0];
시작시각 = 결과리턴[1];
고라인기울기 = 결과리턴[2];
고라인시작 = 결과리턴[3];
고라인끝 = 결과리턴[4];
저라인기울기 = 결과리턴[5];
저라인시작 = 결과리턴[6];
저라인끝 = 결과리턴[7];
If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록
TL_SetEnd(TL1[0],sDate,sTime,고라인끝);
} Else {
TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝);
TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE));
TL_SetSize(TL1[0],3);
}
If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then {
TL_SetEnd(TL1[1],sDate,sTime,저라인끝);
} Else {
TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝);
TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE));
TL_SetSize(TL1[1],3);
}
}
If (cnt = 0) and (cnt2 > 0 and cnt2 < (레벨 + 1) * 20) Then
{
고라인끝2 = 고라인끝2 + 고라인기울기2;
저라인끝2 = 저라인끝2 + 저라인기울기2;
If (max(고라인끝,저라인끝) >= data1(C)) and (data1(c) >= min(고라인끝,저라인끝)) and (CrossUp(data2(C), max(고라인끝2, 저라인끝2)))
Then
Buy();
}
If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 = 0) Then
{
고라인끝 = 고라인끝 + 고라인기울기;
저라인끝 = 저라인끝 + 저라인기울기;
If (CrossUp(data1(C), max(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2))
Then
Buy();
}
If (cnt = 0) and (cnt2 > 0 and cnt2 < (레벨 + 1) * 20) Then
{
고라인끝2 = 고라인끝2 + 고라인기울기2;
저라인끝2 = 저라인끝2 + 저라인기울기2;
If (CrossDown(data1(C), Min(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2))
Then
Sell();
}
If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 = 0) Then
{
고라인끝 = 고라인끝 + 고라인기울기;
저라인끝 = 저라인끝 + 저라인기울기;
If (max(고라인끝,저라인끝) >= data1(C)) and (data1(c) >= min(고라인끝,저라인끝)) and (CrossDown(data2(C), max(고라인끝2, 저라인끝2)))
Then
Sell();
}
}
If (cnt = 0) and (cnt2 = 0) Then {
If (CrossUp(data1(C), Min(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2))
or (CrossUp(data2(C), Min(고라인끝2,저라인끝2)) and max(고라인끝,저라인끝) >= data1(c) and data1(c) >= min(고라인끝,저라인끝))
Then
Buy();
}
If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 > 0) and (cnt2 < (레벨 + 1) * 20) Then {
고라인끝 = 고라인끝 + 고라인기울기;
저라인끝 = 저라인끝 + 저라인기울기;
고라인끝2 = 고라인끝2 + 고라인기울기2;
저라인끝2 = 저라인끝2 + 저라인기울기2;
If (CrossDown(data1(C), Max(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2))
or (CrossDown(data2(C), Max(고라인끝2,저라인끝2)) and max(고라인끝,저라인끝) >= data1(c) and data1(c) >= min(고라인끝,저라인끝))
Then
Sell();
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
2020-03-11
292
글번호 136791
답변완료
수식수정요청
안녕하세요 늘 도움 감사드립니다.
다름이아니라 아래의 수식에서 양봉 음봉 시가에 선이 다 표시가 되어 나옵니다
하여 음봉 고점에 선이 표시되도록 수정부탁드립니다
input : 기간(30),k(0.0002);
var : cnt(0),bc(0),bo(0),sc(0),so(0);
var1 = Highest(H,기간)*(1+k);
var2 = Highest(H,기간);
var3 = Lowest(L,기간)*(1+k);
var4 = Lowest(L,기간);
bc = 0;
bo = 0;
sc = 0;
so = 0;
for cnt = 0 to 기간-1
{
if C[cnt] > O[cnt] and (bc == 0 or (bc > 0 and c[cnt] > bc)) Then
{
bc = c[cnt];
bo = O[cnt];
}
if C[cnt] < O[cnt] and (sc == 0 or (sc > 0 and c[cnt] < sc)) Then
{
sc = c[cnt];
so = O[cnt];
}
}
plot1(var1);
plot2(var2);
plot3(var3);
plot4(var4);
plot5(bo);
plot6(so);
2020-03-11
293
글번호 136784
답변완료
수정 부탁드립니다.
Data2 의 지표를 적용하려면 시간이 많이 걸린다고 하셔서
시간이 많이 걸릴 것 같은 부분은 제가 직접 작업을 했는데 오류가 있습니다.
진입 조건 첫 번째와 네 번째 Then, 마지막 스탑로스에서 오류가 나는데
수정 부탁 드립니다.
감사합니다.
////////////////////////////////////////////////////////////////////////////////
Input:변동률(0.01),레벨(1),익절틱수(20),손절틱수(15);
Var:행(0,data1),열(0,data1),고점(1,data1),저점(-1,data1),신규(1,data1),연장(2,data1),연속(3,data1),삼선(4,data1),cnt(0,data1),
고라인기울기(0,data1),고라인시작(0,data1),고라인끝(0,data1),
저라인기울기(0,data1),저라인시작(0,data1),저라인끝(0,data1),
시작일(0,data1),시작시각(0,data1),v1(0,data1),val1(0,data1),val2(0,data1);
Array:고[10,44](0,data1),저[10,44](0,data1), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime
최종상태[5](0,data1),처리구분[5](0,data1),TL[3](0,data1),TL1[2](0,data1),고0[10,4](0,data1),저0[10,4](0,data1),결과리턴[8](0,data1);
//=========================================================//
If 레벨 <= 4 Then {
v1 = 레벨 * 10;
val1 = data1(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분));
If 최종상태[레벨] == 고점 Then {
If 처리구분[레벨] == 신규 Then
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
If 처리구분[레벨] == 연장 Then
TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
If 처리구분[레벨] == 연속 Then {
TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
}
If 처리구분[레벨] == 삼선 Then {
TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]);
TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
}
}
If 최종상태[레벨] == 저점 Then {
If 처리구분[레벨] == 신규 Then
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
If 처리구분[레벨] == 연장 Then
TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
If 처리구분[레벨] == 연속 Then {
TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
}
If 처리구분[레벨] == 삼선 Then {
TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]);
TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
}
}
} Else {
Alert("4레벨까지만 가능합니다!!");
}
//=========================================================//
cnt = cnt + 1;
If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then {
For 행 = 1 To 10 {
For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달
고0[행,열] = 고[행,v1 + 열];
저0[행,열] = 저[행,v1 + 열];
}
}
val2 = data1(YHS_Channel(고0,저0,결과리턴));
If val2 == 1 Then { // 추세대가 형성되었다면
시작일 = 결과리턴[0];
시작시각 = 결과리턴[1];
고라인기울기 = 결과리턴[2];
고라인시작 = 결과리턴[3];
고라인끝 = 결과리턴[4];
저라인기울기 = 결과리턴[5];
저라인시작 = 결과리턴[6];
저라인끝 = 결과리턴[7];
If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록
TL_SetEnd(TL1[0],sDate,sTime,고라인끝);
} Else {
TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝);
TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE));
TL_SetSize(TL1[0],3);
}
If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then {
TL_SetEnd(TL1[1],sDate,sTime,저라인끝);
} Else {
TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝);
TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE));
TL_SetSize(TL1[1],3);
}
Var:행2(0,data2),열2(0,data2),고점2(1,data2),저점2(-1,data2),신규2(1,data2),연장2(2,data2),연속2(3,data2),삼선2(4,data2),cnt2(0,data2),
고라인기울기2(0,data2),고라인시작2(0,data2),고라인끝2(0,data2),
저라인기울기2(0,data2),저라인시작2(0,data2),저라인끝2(0,data2),
시작일2(0,data2),시작시각2(0,data2),v12(0,data2),val12(0,data2),val22(0,data2);
Array:고2[10,44](0,data2),저2[10,44](0,data2), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime
최종상태2[5](0,data2),처리구분2[5](0,data2),TL2[3](0,data2),TL12[2](0,data2),고02[10,4](0,data2),저02[10,4](0,data2),결과리턴2[8](0,data2);
//=========================================================//
If 레벨 <= 4 Then {
v1 = 레벨 * 10;
val1 = data2(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분));
If 최종상태[레벨] == 고점 Then {
If 처리구분[레벨] == 신규 Then
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
If 처리구분[레벨] == 연장 Then
TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
If 처리구분[레벨] == 연속 Then {
TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
}
If 처리구분[레벨] == 삼선 Then {
TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]);
TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
}
}
If 최종상태[레벨] == 저점 Then {
If 처리구분[레벨] == 신규 Then
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
If 처리구분[레벨] == 연장 Then
TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
If 처리구분[레벨] == 연속 Then {
TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
}
If 처리구분[레벨] == 삼선 Then {
TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1],
저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]);
TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1],
고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]);
TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1],
저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]);
}
}
} Else {
Alert("4레벨까지만 가능합니다!!");
}
//=========================================================//
cnt = cnt + 1;
If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then {
For 행 = 1 To 10 {
For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달
고0[행,열] = 고[행,v1 + 열];
저0[행,열] = 저[행,v1 + 열];
}
}
val2 = data1(YHS_Channel(고0,저0,결과리턴));
If val2 == 1 Then { // 추세대가 형성되었다면
시작일 = 결과리턴[0];
시작시각 = 결과리턴[1];
고라인기울기 = 결과리턴[2];
고라인시작 = 결과리턴[3];
고라인끝 = 결과리턴[4];
저라인기울기 = 결과리턴[5];
저라인시작 = 결과리턴[6];
저라인끝 = 결과리턴[7];
If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록
TL_SetEnd(TL1[0],sDate,sTime,고라인끝);
} Else {
TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝);
TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE));
TL_SetSize(TL1[0],3);
}
If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then {
TL_SetEnd(TL1[1],sDate,sTime,저라인끝);
} Else {
TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝);
TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE));
TL_SetSize(TL1[1],3);
}
If (cnt = 0) and (cnt2 > 0 and cnt2 < (레벨 + 1) * 20) Then {
고라인끝2 = 고라인끝2 + 고라인기울기2;
저라인끝2 = 저라인끝2 + 저라인기울기2;
If (max(고라인끝,저라인끝) >= data1(C)) and (data1(c) >= min(고라인끝,저라인끝)) and (CrossUp(data2(C), max(고라인끝2, 저라인끝2))
Then
Buy();
}
If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 = 0) Then {
고라인끝 = 고라인끝 + 고라인기울기;
저라인끝 = 저라인끝 + 저라인기울기;
If (CrossUp(data1(C), max(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2))
Then
Buy();
}
If (cnt = 0) and (cnt2 > 0 and cnt2 < (레벨 + 1) * 20) Then {
고라인끝2 = 고라인끝2 + 고라인기울기2;
저라인끝2 = 저라인끝2 + 저라인기울기2;
If (CrossDown(data1(C), Min(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2))
Then
Sell();
}
If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 = 0) Then {
고라인끝 = 고라인끝 + 고라인기울기;
저라인끝 = 저라인끝 + 저라인기울기;
If (max(고라인끝,저라인끝) >= data1(C)) and (data1(c) >= min(고라인끝,저라인끝)) and (CrossDown(data2(C), max(고라인끝2, 저라인끝2))
Then
Sell();
}
If (cnt = 0) and (cnt2 = 0) Then {
If (CrossUp(data1(C), Min(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2))
or (CrossUp(data2(C), Min(고라인끝2,저라인끝2)) and max(고라인끝,저라인끝) >= data1(c) and data1(c) >= min(고라인끝,저라인끝))
Then
Buy();
}
If (cnt > 0) and (cnt < (레벨 + 1) * 20) and (cnt2 > 0) and (cnt2 < (레벨 + 1) * 20) Then {
고라인끝 = 고라인끝 + 고라인기울기;
저라인끝 = 저라인끝 + 저라인기울기;
고라인끝2 = 고라인끝2 + 고라인기울기2;
저라인끝2 = 저라인끝2 + 저라인기울기2;
If (CrossDown(data1(C), Max(고라인끝,저라인끝)) and max(고라인끝2,저라인끝2) >= data2(c) and data2(c) >= min(고라인끝2,저라인끝2))
or (CrossDown(data2(C), Max(고라인끝2,저라인끝2)) and max(고라인끝,저라인끝) >= data1(c) and data1(c) >= min(고라인끝,저라인끝))
Then
Sell();
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
2020-03-11
265
글번호 136783
답변완료
문의 합니다..
2. input : Period1(9),Period2(5),Period3(5),Period4(5);
var : stok(0),stod(0);
Stok = AccumN(C-lowest(L,Period1),Period2)/AccumN((highest(H,Period1)-lowest(L,Period1)),Period2)* 100;
Stod = ema(stok,Period4);
1. if MarketPosition == -1 and
data1 ( CrossUp(Sigma,-ss1)) Then
Buy("b");
1. 위 수식에서 매수 신호나고 5봉후 매수조건이돼게 수정 부탁드리고
2. 위 슬로우 스톡이 크로스 업돼면 전체 Buy 신호가나오게 부탁드립니다,
2020-03-11
254
글번호 136782
답변완료
문의드립니다.
트레이딩 뷰를 참고하고있습니다.
하기 수식을 예스로 변환부탁드립니다.
( 참고 : https://www.tradingview.com/script/ibq1TYLX-BB-AO-STRAT/ )
strategy(shorttitle="BB+AO STRAT", title="BB+AO STRAT", overlay=true)
// === BACKTEST RANGE ===
FromMonth = input(defval = 6, title = "From Month", minval = 1)
FromDay = input(defval = 1, title = "From Day", minval = 1)
FromYear = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth = input(defval = 1, title = "To Month", minval = 1)
ToDay = input(defval = 1, title = "To Day", minval = 1)
ToYear = input(defval = 9999, title = "To Year", minval = 2014)
// Bollinger Bands Inputs
bb_use_ema = input(false, title="Use EMA for Bollinger Band")
bb_length = input(5, minval=1, title="Bollinger Length")
bb_source = input(close, title="Bollinger Source")
bb_mult = input(2.0, title="Base Multiplier", minval=0.5, maxval=10)
// EMA inputs
fast_ma_len = input(2, title="Fast EMA length", minval=2)
// Awesome Inputs
nLengthSlow = input(34, minval=1, title="Awesome Length Slow")
nLengthFast = input(5, minval=1, title="Awesome Length Fast")
// Breakout Indicator Inputs
bb_basis = bb_use_ema ? ema(bb_source, bb_length) : sma(bb_source, bb_length)
fast_ma = ema(bb_source, fast_ma_len)
// Deviation
dev = stdev(bb_source, bb_length)
bb_dev_inner = bb_mult * dev
// Upper bands
inner_high = bb_basis + bb_dev_inner
// Lower Bands
inner_low = bb_basis - bb_dev_inner
// Calculate Awesome Oscillator
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
// Calculate direction of AO
AO = xSMA1_SMA2>=0? xSMA1_SMA2 > xSMA1_SMA2[1] ? 1 : 2 : xSMA1_SMA2 > xSMA1_SMA2[1] ? -1 : -2
// === PLOTTING ===
// plot BB basis
plot(bb_basis, title="Basis Line", color=red, transp=10, linewidth=2)
// plot BB upper and lower bands
ubi = plot(inner_high, title="Upper Band Inner", color=blue, transp=10, linewidth=1)
lbi = plot(inner_low, title="Lower Band Inner", color=blue, transp=10, linewidth=1)
// center BB channel fill
fill(ubi, lbi, title="Center Channel Fill", color=silver, transp=90)
// plot fast ma
plot(fast_ma, title="Fast EMA", color=black, transp=10, linewidth=2)
// Calc breakouts
break_down = crossunder(fast_ma, bb_basis) and close < bb_basis and abs(AO)==2
break_up = crossover(fast_ma, bb_basis) and close > bb_basis and abs(AO)==1
// Show Break Alerts
plotshape(break_down, title="Breakout Down", style=shape.arrowdown, location=location.abovebar, size=size.auto, text="Sell", color=red, transp=0)
plotshape(break_up, title="Breakout Up", style=shape.arrowup, location=location.belowbar, size=size.auto, text="Buy", color=green, transp=0)
// === ALERTS ===
strategy.entry("L", strategy.long, when=(break_up and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.close("L", when=(break_down and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
// === /PLOTTING ===
barcolor(AO == 2 ? red: AO == 1 ? green : blue )
// eof
2020-03-11
405
글번호 136781
답변완료
주식 시스템 문의 드립니다
안녕하세요
항상 빠른 답변 감사합니다.
시스템 매수 진입 조건
장시작후 전일고가를 돌파후 하락 or 근접 후 하락 매수 진입금지
시초가는 전일고가 아래 있으며
전일저가를 하회하고 돌파 하거나 or 봉의 시가가 전일저가를 터치하면
매수한다.
청산은
매수진입 후 50%수량 5%이익실현
전일고가 돌파 나머지수량 이익실현 매매종료
손절은
전일저가 3% 하락시 50% 손절
전일저가 5% 하락시 나머지 손절
그럼 좋은 하루 되세요
2020-03-11
325
글번호 136780