커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4508
글번호 230811
답변완료
문의 드립니다
input : 시작시간(090000),종료시간(0);
input : Period20(36),Period30(30),Period120(120),Period180(180),Period240(240),Period480(480),
Period960(960),Period60(60),Period10(10),Period7(7),Period144(144),Period100(100);
input : 익절틱수1(250),손절틱수1(100),익절틱수2(250),손절틱수2(200),익절틱수3(200),손절틱수3(200),익절틱수4(200),손절틱수4(200),익절틱수5(200),손절틱수5(200);
var : mav15(0),mav20(0),mav30(0),mav120(0),mav180(0),mav240(0),mav480(0),mav960(0),mav60(0),
mav10(0),mav7(0),mav144(0),mav100(0),Bxcond(false),Sxcond(false);
var : Tcond(false);
var : T(0);
var : BE1(0),BE2(0),BE3(0),BE4(0),BE5(0);
var : SE1(0),SE2(0),SE3(0),SE4(0),SE5(0);
input : ntime1(6),P1(8),P2(16),P4(64),P5(128),P6(256);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
var : sum1(0),sum11(0),sum12(0),sum13(0),mav1(0),mav11(0),mav12(0),mav13(0);
var : sum2(0),sum21(0),sum22(0),sum23(0),mav2(0),mav21(0),mav22(0),mav23(0);
var : sum3(0),sum31(0),sum32(0),sum33(0),mav3(0),mav31(0),mav32(0),mav33(0);
var : sum4(0),sum41(0),sum42(0),sum43(0),mav4(0),mav41(0),mav42(0),mav43(0);
var : sum5(0),sum51(0),sum52(0),sum53(0),mav5(0),mav51(0),mav52(0),mav53(0);
var : sum6(0),sum61(0),sum62(0),sum63(0),mav6(0),mav61(0),mav62(0),mav63(0);
Array : C1[500](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime1;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
for cnt = 1 to 499
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = C;
if C1[P6+3] > 0 then
{
sum1 = 0;
sum11 = 0;
sum12 = 0;
sum13 = 0;
sum2 = 0;
sum21 = 0;
sum22 = 0;
sum23 = 0;
sum3 = 0;
sum31 = 0;
sum32 = 0;
sum33 = 0;
sum4 = 0;
sum41 = 0;
sum42 = 0;
sum43 = 0;
sum5 = 0;
sum51 = 0;
sum52 = 0;
sum53 = 0;
sum6 = 0;
sum61 = 0;
sum62 = 0;
sum63 = 0;
for cnt = 0 to P6-1
{
if cnt < P1 then
{
sum1 = sum1+C1[cnt];
sum11 = sum11+C1[cnt+1];
sum12 = sum12+C1[cnt+2];
sum13 = sum13+C1[cnt+3];
}
if cnt < P2 then
{
sum2 = sum2+C1[cnt];
sum21 = sum21+C1[cnt+1];
sum22 = sum22+C1[cnt+2];
sum23 = sum23+C1[cnt+3];
}
if cnt < P3 then
{
sum3 = sum3+C1[cnt];
sum31 = sum31+C1[cnt+1];
sum32 = sum32+C1[cnt+2];
sum33 = sum33+C1[cnt+3];
}
if cnt < P4 then
{
sum4 = sum4+C1[cnt];
sum41 = sum41+C1[cnt+1];
sum42 = sum42+C1[cnt+2];
sum43 = sum43+C1[cnt+3];
}
if cnt < P5 then
{
sum5 = sum5+C1[cnt];
sum51 = sum51+C1[cnt+1];
sum52 = sum52+C1[cnt+2];
sum53 = sum53+C1[cnt+3];
}
if cnt < P6 then
{
sum6 = sum6+C1[cnt];
sum61 = sum61+C1[cnt+1];
sum62 = sum62+C1[cnt+2];
sum63 = sum63+C1[cnt+3];
}
}
mav1 = sum1/P1;
mav11 = sum11/P1;
mav12 = sum12/P1;
mav13 = sum13/P1;
mav2 = sum2/P2;
mav21 = sum21/P2;
mav22 = sum22/P2;
mav23 = sum23/P2;
mav3 = sum3/P3;
mav31 = sum31/P3;
mav32 = sum32/P3;
mav33 = sum33/P3;
mav4 = sum4/P4;
mav41 = sum41/P4;
mav42 = sum42/P4;
mav43 = sum43/P4;
mav5 = sum5/P5;
mav51 = sum51/P5;
mav52 = sum52/P5;
mav53 = sum53/P5;
mav6 = sum6/P6;
mav61 = sum61/P6;
mav62 = sum62/P6;
mav63 = sum63/P6;
}
}
mav15 = ma(c, Period15);
mav20 = ma(c, Period20);
mav30 = ma(c, Period30);
mav120 = ma(c, Period120);
mav180 = ma(c, Period180);
mav240 = ma(c, Period240);
mav480 = ma(c, Period480);
mav960 = ma(c, Period960);
mav60 = ma(c, Period60);
mav10 = ma(c, Period10);
mav7 = ma(c, Period7);
mav144 = ma(c, Period144);
mav100 = ma(c, Period100);
if (sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and (Stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간))) Then
{
Tcond = True;
BXcond = false;
SXcond = false;
}
if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if TotalTrades > TotalTrades[1] then
{
BXcond = false;
SXcond = false;
if (IsExitName("bl",0) == true or IsExitName("bp",0) == true or IsExitName("bx",1) == true or IsExitName("bx",1) == true) Then
BXcond = true;
if (IsExitName("sl",0) == true or IsExitName("sp",0) == true or IsExitName("sx",1) == true or IsExitName("sx",1) == true) Then
SXcond = true;
}
if Tcond == true then
{
if MarketPosition <= 0 and Bxcond == false and
mav33 < mav32 and mav32 < mav31 and mav31 < mav3 Then
{
buy("매수1",OnClose,def,1);
}
if MarketPosition == 1 Then
{
if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then
{
if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then
buy("매수2",OnClose,def,1);
}
Else
{
if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then
buy("매수2-1",OnClose,def,1);
}
if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then
{
if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then
buy("매수3",OnClose,def,1);
}
Else
{
if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then
buy("매수3-1",OnClose,def,1);
}
if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then
{
if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then
buy("매수4",OnClose,def,1);
}
Else
{
if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then
buy("매수4-1",OnClose,def,1);
}
if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then
{
if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then
buy("매수5",OnClose,def,1);
}
Else
{
if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then
buy("매수5-1",OnClose,def,1);
}
}
if MarketPosition == 1 Then
{
if (mav33 > mav32 and mav32 > mav31 and mav31 > mav3) Then
exitlong("수청산1",OnClose,def,"매수1");
if (mav13 > mav12 and mav12 > mav11 and mav11 > mav1) or (mav33 > mav32 and mav32 > mav31 and mav31 > mav3) Then
{
exitlong("수청산2",OnClose,def,"매수2");
exitlong("수청산3",OnClose,def,"매수3");
exitlong("수청산4",OnClose,def,"매수4");
exitlong("수청산5",OnClose,def,"매수5");
}
if (mav15[3] > mav15[2] and mav15[2] > mav15[1] and mav15[1] > mav15) or (mav13 > mav12 and mav12 > mav11 and mav11 > mav1) Then
{
exitlong("수청산2-1",OnClose,def,"매수2-1");
exitlong("수청산3-1",OnClose,def,"매수3-1");
exitlong("수청산4-1",OnClose,def,"매수4-1");
exitlong("수청산5-1",OnClose,def,"매수5-1");
}
if CurrentContracts > CurrentContracts[1] and MaxEntries == 1 Then
BE1 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 2 Then
BE2 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 3 Then
BE3 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 4 Then
BE4 = LatestEntryPrice(0);
if CurrentContracts > CurrentContracts[1] and MaxEntries == 5 Then
BE5 = LatestEntryPrice(0);
if MaxEntries >= 1 Then
{
ExitLong("bp1",atlimit,BE1+PriceScale*익절틱수1,"매수1");
ExitLong("bl1",AtStop,BE1-PriceScale*손절틱수1,"매수1");
}
if MaxEntries >= 2 then
{
ExitLong("bp2",atlimit,BE2+PriceScale*익절틱수2,"매수2");
ExitLong("bl2",AtStop,BE2-PriceScale*손절틱수2,"매수2");
}
if MaxEntries >= 3 then
{
ExitLong("bp3",atlimit,BE3+PriceScale*익절틱수3,"매수3");
ExitLong("bl3",AtStop,BE3-PriceScale*손절틱수3,"매수3");
}
if MaxEntries >= 4 then
{
ExitLong("bp4",atlimit,BE4+PriceScale*익절틱수4,"매수4");
ExitLong("bl4",AtStop,BE4-PriceScale*손절틱수4,"매수4");
}
if MaxEntries >= 5 then
{
ExitLong("bp5",atlimit,BE5+PriceScale*익절틱수5,"매수5");
ExitLong("bl5",AtStop,BE5-PriceScale*손절틱수5,"매수5");
}
}
많은 도움에 먼저 감사드립니다
매수조건 만족시 매수진입후
추가진입을 2가지로 진입 후 진입별 청산을 만들어 보았습니다
수식작성이 맞은지 검토하여 주시면 고맙겠습니다
아울러 청산별 익절 및 손절을 수정하여 주시면 고맙겠습니다
감사합니다
2019-03-20
359
글번호 127205
답변완료
함수요청
안녕하세요?
아래의 전략에서 수정하고자 합니다.
상승출발시 현재가가 전일 종가 이탈 완성시 익봉 시가에 매수진입,
하락출발시 현재가가 전일 종가 돌파 완성시 익봉 시가에 매도진입
if sdate != sdate[1] Then
SetStopEndofday(053000);
if bdate != bdate[1] then
{
SetStopEndofday(0);
if O > C[1] Then
buy("b",AtMarket);
if O < C[1] Then
sell("s",AtMarket);
}
2019-03-19
353
글번호 127202
답변완료
식 재문의드립니다.
안녕하세요, 식 문의드립니다.
앞전에 문의드린식인데 잘 적용되지 않아 다시 문의드립니다.
c번 하루에 한번만 진입하여야하는데 계속하여 진입합니다.
(17일 진입과 청산이 이뤄졌으면 더이상 진입하지 않고
18일에 조건이 맞으면 진입과 청산이 한번 이뤄집니다)
이부분입니다.
처음진입과 청산은 잘 적용되는데 진입청산이후
같은날 수없는 자리에서 진입과 청산이 발생됩니다.
1.
17일 (09:00~15:30) 분사이에 진입 청산(손절)이 1번 이뤄졌다면
더이상 진입하지 않고 끝내고
다음날 18일 (09:00~15:30) 사이에
설정한 가격이 맞을시( 또는 변경한 가격조건이 맞을시)
진입 청산(손절)이 1번 발생되고
동일하게 더이상 진입되지 않습니다.
조건이 맞으면 1일 1진입,청산(손절)이 이뤄지도록 부탁드리며
2.
진입후 청산(손절)조건이 되지 않아 이뤄지지 않으면
15:15에 청산(손절)되도록 부탁드립니다.
감사합니다.
------------------------------------------------------------
안녕하세요
예스스탁입니다.
input : upprice(99),dnPrice(81),price(100),lossprice(90),Profitprice(110),vol(1);
if MarketPosition == 0 then
{
if NextBarSdate != sdate and upprice >= NextBarOpen and NextBarOpen >= dnprice Then
buy("b1",AtStop,price,vol);
if NextBarSdate == sdate and upprice >= dayopen and dayopen >= dnPrice Then
buy("b2",AtStop,price,vol);
}
if MarketPosition == 1 then
{
ExitLong("bx1",atlimit,Profitprice);
ExitLong("bx2",AtStop,lossprice);
}
즐거운 하루되세요
> 스누피독 님이 쓴 글입니다.
> 제목 : 식문의드립니다.
>
안녕하세요, 식문의드립니다.
작동이 잘안되서 다시 문의드립니다.
b번 진입시 바로 특정가격에 들어가지 않고 해당봉 종가에 진입합니다.
(청산,손절은 바로 적용되는듯 합니다)
c번 하루에 한번만 진입하여야하는데 계속하여 진입합니다.
(17일 진입과 청산이 이뤄졌으면 더이상 진입하지 않고
18일에 조건이 맞으면 진입과 청산이 한번 이뤄집니다)
5분봉으로 설정하겠습니다. 확인부탁드립니다.
-----------------------------------------------------
안녕하세요
예스스탁입니다.
input : upprice(99),dnPrice(81),price(100),lossprice(90),Profitprice(110),vol(1);
if upprice >= dayopen and dayopen >= dnPrice and C > price Then
{
buy("b",OnClose,def,vol);
}
if MarketPosition == 1 then
{
ExitLong("bx1",atlimit,Profitprice);
ExitLong("bx2",AtStop,lossprice);
}
즐거운 하루되세요
> 스누피독 님이 쓴 글입니다.
> 제목 : 식 문의드립니다.
>
안녕하세요 , 식 문의 드립니다.
앞전 문의드린 내용이 잘 적용이 되지 않아 재 문의드립니다.
a.
분봉상 적용하며 장시작(09:00)때의 가격이
시작가 99~81원 사이면 작동
시작가 80~0원 사이면 작동을 하지 않고
b.
작동하는 가격범위(99~81원)사이에서 시작할시
특정가격 100원 설정시 100원에 닫는순간 바로 시장가 주문
c.
청산가격 110원 설정시 닫는순간 시장가 주문
손절가격 90원 설정시 닫는순간 시장가 주문
하루에 한번만 진입과 청산(손절)이 발생하도록 부탁드립니다.
d.진입수량 설정
2019-03-19
359
글번호 127200
답변완료
종목검색 질문입니다.
0봉전 후행스팬 > 주가
0봉전 주가 > 기준선
그리고 키움증권 수식인데
K=Stochasticsslow(p1,p2);
D=eavg(K,p2);
a1=crossdown(k,d);
x1=valuewhen(1,a1,L);
x2=Valuewhen(1,a1,H);
x2
이고 저기서 p1=12, p2=5
종가가 위 수식위에 있는 것을 종목검색으로 찾고 싶습니다.
2019-03-19
394
글번호 127199
답변완료
지표 좀 요청 드립니다
* 많은 도움에 고맙습니다.
1번 : 이평선에 20틱 더하는식좀 알려 주십시요.
var1 = ma(c,20) + 2.0 ;
이렇게 하니까 이상한데서 매매가 됩니다. 도와주십시요.
▶이평선 가격 + 20틱
2번 : 최고수익대비 50% 수익감소시 청산인데 50% 를 10틱으로 변경좀 해주십시요.
var : maxv(0),minv(0);
if MarketPosition == 1 Then { maxv = highest(H,BarsSinceEntry);
if maxv >= EntryPrice+PriceScale*10 and maxv < EntryPrice+PriceScale*20
Then ExitLong("bx1",AtStop,maxv-(maxv-EntryPrice)*0.5); }
▶50% 부분을 10틱으로 수식 변경요청 드립니다.
3번 : 양봉평균값 과 음봉평균값 그래프 좀 부탁드립니다.
100봉중 양봉종가 의 전체합 나누기 양봉겟수
100봉중 음봉종가 의 전체합 나누기 음봉겟수
보합은 제외한 수식 하나
보합은 양봉으로 포함한 수식 하나
두개경우 좀 요청 드립니다.
# 아래는 공부하면서 해보았는데 봉 카운트 적용 부분이 어렵내요 .....
input: p(100) ;
var: 양봉합(0), 응봉합(0);
양봉합=(0);
음봉합=(0);
var1 = ma(c,p);
var2 = sum(양봉합)/양봉겟수 ;
var3 = sum(음봉합)/음봉겟수 ;
Plot1(var2);
Plot2(var3);
저는 잘 안되네요...죄송합니다
* 고맙습니다.
2019-03-20
385
글번호 127198
답변완료
문의 드립니다.
안녕하세요 아래 지표는 다이버젼스 지표로
적용을 해 보니 첨부한 그림과 같이 하락 다이버젼스 발생시
macd 선이 macd signal선을 하락 돌파하기 전에
다이버젼스가 발생되었다고 선이 표시 됩니다.
다시 말해서 macd선이 계속 상승하고 있는데
다이버젼스가 발생했다고 나오는데 macd선이
macd signal 선을 하락 돌파후에 나오게 해 주실수 있습니까
그러다가 macd선이 계속 상승을 해 버리면 다이버젼스가 생겼다가
없어 집니다.
즉 하락 다이버젼스는 지난 macd 선이 macd signal 선을 하락 돌파후 부터
현재 macd선이 macd signal을 하락 돌파후에 나오게 하면
그런 현상이 없지 않을까 싶습니다.
반대로 상승 다이버젼스는 지난 macd선이 macd signal선을 상승
돌파후부터 현재 macd선이 macd signal선을 상승 돌파후에 표시되게 해 주실수
있는지 궁금합니다.
첨부한 그림은 상승다이버젼스 발생했다고 표시된 그림인데 아직
macd선이 계속 하락을 하고 있는데 표시가 됩니다. 이것을
macd선이 macd signal 선을 상승 돌파후에 표시되게 할 수
있는지 궁금합니다.감사드립니다.
만약 macd선이 macd signal선을 상,하 돌파후가 어렵다면
macd선이 꺽어진 후 즉 고점이 확정된후 하락 다이버젼스를
저점이 확정된후상승 다이버변스를 표시되게 할 수 있으면
그렇게 부탁 드립니다.
===================
Input : short(12), long(26), signal(9);
Var : MACDV(0) , MACDS(0),T(0);
var : HIV(0),HID(0),HIT(0),HIV1(0),HID1(0),HIT1(0);
var : HPV(0),HPD(0),HPT(0),HPV1(0),HPD1(0),HPT1(0);
var : LIV(0),LID(0),LIT(0),LIV1(0),LID1(0),LIT1(0);
var : LPV(0),LPD(0),LPT(0),LPV1(0),LPD1(0),LPT1(0);
var : TL1(0),TL2(0);
MACDV = MACD(short, long);
MACDS = ema(MACDV,signal);
if crossup(MACDV,MACDS) Then
{
T = 1;
HIV = MACDV;
HID = sdate;
HIT = stime;
HIV1 = HIV[1];
HID1 = HID[1];
HIT1 = HIT[1];
HPV = L;
HPD = sdate;
HPT = stime;
HPV1 = HPV[1];
HPD1 = HPD[1];
HPT1 = HPT[1];
Condition1 = false;
}
if CrossDown(MACDV,MACDS) Then
{
T = -1;
LIV = MACDV;
LID = sdate;
LIT = stime;
LIV1 = LIV[1];
LID1 = LID[1];
LIT1 = LIT[1];
LPV = L;
LPD = sdate;
LPT = stime;
LPV1 = LPV[1];
LPD1 = LPD[1];
LPT1 = LPT[1];
Condition2 = false;
}
if T == 1 Then
{
if MACDV > HIV Then
{
HIV = MACDV;
HID = sdate;
HIT = stime;
}
if H > HPV Then
{
HPV = H;
HPD = sdate;
HPT = stime;
}
if Condition1 == false and HPV1 > 0 and HPV > HPV1 and HIV < HIV1 Then
{
TL1 = TL_New(HPD1,HPT1,HPV1,HPD,HPT,HPV);
TL2 = TL_New_Self(HID1,HIT1,HIV1,HID,HIT,HIV);
TL_SetColor(TL1,BLUE);
TL_SetColor(TL2,BLUE);
Condition1 = true;
}
if Condition1 == true then
{
if HPV > HPV1 and HIV < HIV1 then
{
TL_SetEnd(TL1,HPD,HPT,HPV);
TL_SetEnd(TL2,HID,HIT,HIV);
}
Else
{
TL_Delete(TL1);
TL_Delete(TL2);
}
}
}
if T == -1 Then
{
if MACDV < LIV Then
{
LIV = MACDV;
LID = sdate;
LIT = stime;
}
if L < LPV Then
{
LPV = L;
LPD = sdate;
LPT = stime;
}
if Condition2 == false and LPV1 > 0 and LPV < LPV1 and LIV > LIV1 Then
{
TL1 = TL_New(LPD1,LPT1,LPV1,LPD,LPT,LPV);
TL2 = TL_New_Self(LID1,LIT1,LIV1,LID,LIT,LIV);
TL_SetColor(TL1,RED);
TL_SetColor(TL2,RED);
Condition2 = true;
}
if Condition2 == true then
{
if LPV < LPV1 and LIV > LIV1 then
{
TL_SetEnd(TL1,LPD,LPT,LPV);
TL_SetEnd(TL2,LID,LIT,LIV);
}
Else
{
TL_Delete(TL1);
TL_Delete(TL2);
}
}
}
plot1(MACDV);
plot2(MACDS);
2019-03-19
479
글번호 127191
답변완료
수식 요청 드립니다.
수식 요청드립니다.
매수조건 : 1) 일봉의 20일 이평선이 60일 이평선보다 클 것
2) 60분봉의 20일 이평선이 60일 이평선보다 클 것
상기조건이 만족하면 buysetup = true
if buysetup = true and 스톡케스틱의 k가 D를 CrossUp할 때 매수 (한 계약)
매도조건 : 값이 50이상이면서 스톡케스틱의 k가 D를 CrossDown할 때
그리고 buysetup = true 가 발생한 구간은 챠트에서 색을 넣어서 구간을 구분할 수 있도록
부탁드립니다.
2019-03-19
379
글번호 127188
답변완료
문의드립니다.
아래 조건을 추가하고 싶습니다. 부탁드립니다.
1.
10:30~10:50; 해당시간 봉갯수 만큼의 종가의 평균값 : A
(틱봉이라 봉갯수가 매일 바뀝니다.해당시간동안의 봉 개수)
10:50 ~ 14:00; 해당시간 현재가가 A값 대비 상승율 또는 하락율 : B (양수, 절대값)
B의 값이 0.09% 보다 크면 : P = 1
14:00 ~ 이후에는 B값에 상관없이 : P = 1
10:50~14:00 사이에는 B값의 영향을 받고
14:00 이후에는 B값에 상관없이 매매하는 조건을 만들고 싶습니다.
2. 봉가정의 오류를 최소화하여 시뮬레이션 하고 싶습니다.
현재 SetstoTrailling(10,50,Pointstop)
SetstopLoss(50,Pointstop)로 하고 있습니다.
손절은 정확히 50으로 계산되어 결과보고서에 나타납니다.
*청산값도 시뮬레이션 값에서 50의 값으로 나오게 청산식을 만들고 싶습니다.
2019-03-19
375
글번호 127187
답변완료
수식 좀 봐주세요
최근 120봉 중에서 가장 큰 20일 이평선 라인을 넘어가는 종가 종목을 찾으려 합니다.
라인은 표시가 되는데 종목검색이 안됩니다.
input : 기간(20), 표시봉수(120), 전체봉수(600);
var : 이평(0), HH(0);
이평 = ma(C, 기간);
if index >= 전체봉수-표시봉수 && 이평 > HH then HH = 이평 ;
if CrossUp(C, HH) then Find(HH);
2019-03-19
401
글번호 127185