커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7434
글번호 230811
답변완료
지표식 하나 부탁드립니다.
항상 고맙고 미안합니다.
이평선을 기준으로 한 이격도 지표가 아닌 일목균형표상 구름층의 선행스팬1 대비 이격도 지표식을 부탁드립니다.즉,현재종가가 선행스팬1과 비교시 이격도가 얼마인지를 보여주는 지표식을 부탁드리는 것입니다.
2016-01-08
193
글번호 94226
답변완료
문의드립니다
var : Hv(0),MM(0);
if date != date[1] Then{
Hv = V;
MM = (H+L+C)/3;
}
if V > HV Then{
Hv = V;
MM = (H+L+C)/3;
}
plot1(MM);
위 식의 만들어주신것입니다
감사드립니다
추가하고십은것이 있습니다
위식은 당일최고거래량 봉의 고저종입니다
최고가 아닌 두번째로 많은거래량의 고+저+종/3 으로 부탁드립니다
2016-01-08
201
글번호 94223
답변완료
문의드립니다.
안녕하세요.
이평선에 글자를 넣을 수 있는지요?
20이평, 60이평 120이평을 넣고, 각 선에 20선, 60선, 120선 이라고 글자가 표시되게 할 수 있을까요?
글자위치는 현재캔들 기준 20봉전 이평선 위치에 표시되고,
글자 색깔도 서로 다르게 표시되게 하는 수식이 궁금합니다.
2016-01-08
167
글번호 94222
답변완료
수식요청드립니다.
안녕하세요.
아래 당일손실제한 무포지션 후 재진입조건에 시간적용만 추가요청 드립니다.
-> 당일손실제한 청산 후 1시간15분30초 부터 ~ 2시간20분50초 까지
재진입 손절 익절 청산 수식 적용으로 수정요청 드립니다.
감사합니다.
input : N(1),PN(2),당일손실(1.0),i증감(0.3),진입수량(1);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),v1(0);
var : mav1(0),mav2(0),mav3(0),mav4(0),mav5(0),mav6(0);
var : Bxcond(false),SxCond(false);
var : Xcond(false);
var : TT(0),KK(0),DD(0);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
v1 = 0;
Xcond = false;
}
dayPL = NP-PreNP;
BCount = 0 ;
SCount = 0 ;
for cnt = 0 to 10 {
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 then
BCount = BCount + 1;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 then
SCount = SCount + 1;
}
if Condition1 == false and TotalTrades > TotalTrades[1] Then{
Condition1 = true;
if PositionProfit(1) > 0 Then
v1 = PositionProfit(1);
}
//-------------------------------------------------------------------------
//추가진입인 BB가 아닐때만 발동
if MarketPosition == 1 and IsEntryName("BB") == false Then{
ExitLong("당일손실제한bx3",AtStop,avgEntryPrice-(당일손실+(dayPL-v1))/CurrentContracts);
}
//추가진입인 SS가 아닐때만 발동
if MarketPosition == -1 and IsEntryName("SS") == false Then{
ExitShort("당일손실제한sx3",AtStop,avgEntryPrice+(당일손실+(dayPL-v1))/CurrentContracts);
}
//------------------------------------------------------------------------------------------------------
#피라미딩
if MarketPosition == 1 and Bxcond == false and Xcond == false Then
Buy("PBB",atlimit,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 and Sxcond == false and XCond == false Then
sell("PSS",atlimit,LatestEntryPrice(0)-i증감,진입수량);
//-----------------------------------------------------------------------------------------------------
#당일손실제한 청산이 발생하면 Xcond는 true로 변경
if MarketPosition == 0 and
TotalTrades > TotalTrades[1] and
(IsExitName("당일손실제한sx3",1) == true or IsExitName("당일손실제한bx3",1) == true) Then
Xcond = true;
#추가진입
#무포지션이고 Xcond가 true이고
#직전청산이 당일손실제한일때만 발생
if MarketPosition == 0 and Xcond == true and
(IsExitName("당일손실제한sx3",1) == true or IsExitName("당일손실제한bx3",1) == true) Then{
if Crossup(ma(c,10),ma(C,20)) Then
Buy("BB",AtMarket);
if CrossDown(ma(C,10),ma(C,20)) Then
Sell("SS",AtMarket);
}
#BB진입에 대한 청산
if MarketPosition == 1 and IsEntryName("BB") == true Then{
ExitLong("BL1",AtStop,avgEntryPrice-0.5);
ExitLong("BP1",AtLimit,avgEntryPrice+1.0);
}
#SS진입에 대한 청산
if MarketPosition == -1 and IsEntryName("SS") == true Then{
ExitShort("SL1",AtStop,avgEntryPrice+0.5);
ExitShort("SP1",AtLimit,avgEntryPrice-1.0);
}
//------------------------------------------------------------------------------------------------------
2016-01-08
167
글번호 94219
답변완료
수식 검토 부탁드립니다
항상 도움을 주셔서 감사를 드립니다.
얼마전 아래와 같이 수식을 만들어 주셨는데.. 제가 원했던 거하고 수식이 맞지가 않는 것 같습니다
기본적으로 첫번째 매수는 전일 시가와 종가의 평균가격을 산정하고
그 평균가격보다 2% 높은 가격을 1차 매수, 평균가격을 2차매수, 평균가격보다 2% 낮은 가격대가 3차매수인데..
당일 전일 종가보다 겝상으로 시작해서 1차 매수가격 이하로 진입하면 1차 매수가 되게 할려면
buy("b1",AtStop,var1*1.02,Floor(금액/C)); 에서 AtStop이 아니라 atlimit이 사용되야 하지 않나 싶습니다.
그러니까 첫번재 전제조건은 전일 종가보다 겝상승으로 시작해야 하며, 겝상승이후에 밀려서 첫번째 가격조건 이하로 진입하면 즉시 매수하는 것입니다.(봉완성 아님)
부탁드립니다 ^^
========================================================
안녕하세요
예스스탁입니다.
기준일 이후로 신호가 발생하게 작성했습니다.
기준일만 발생하고자 하시면
sdate == 기준일 로 변경하시면 됩니다.
진입을 누적하므로 적용시 시스템 트레이딩 설정창에서
피라미딩을 다른 진입신호만 허용으로 설정하고 적용하시면 됩니다.
input : 금액(5000000),기준일(20151218);
var1 = (DayOpen(1)+DayClose(1))/2;
if sdate >= 기준일 then{
if MarketPosition == 0 and NextBarOpen >= var1*1.02 Then
buy("b1",AtStop,var1*1.02,Floor(금액/C));
if MarketPosition == 1 and MaxEntries < 3 Then{
if NextBarOpen >= var1 Then
buy("b2",AtStop,var1,Floor(금액/C));
if NextBarOpen >= var1*0.98 Then
buy("b3",AtStop,var1*0.98,Floor(금액/C));
if MaxEntries == 1 Then
ExitLong("BP1",atlimit,AvgEntryPrice*1.02);
if MaxEntries == 2 Then
ExitLong("BP2",atlimit,AvgEntryPrice*1.015);
if MaxEntries == 3 Then{
ExitLong("BP3",atlimit,AvgEntryPrice*1.01);
ExitLong("Bx",AtStop,LatestEntryPrice(0)*0.97);
}
}
}
2016-01-08
169
글번호 94218
답변완료
시스템식 수정 부탁드립니다.
안녕하세요.. 새해 복 많이 받으세요.
아래 시스템식에서 1차매수의 경우와 동일하게
시가가 지정한 가격보다 이하에서 바로 시작하면 시가에 바로 매수하도록 다음과 같이
수정했는데 신호가 "2차매수2"로 발생되어야 하는데 그림과 같이 제대로 나오지 않습니다.
------ 2차매수에 관한 일부 식 시작 -------------
# 다음봉에서 2차매수가격을 터치하면 신호발생(즉 가격이 하락해서 첫 터치가 발생하면 매수)
# 시가가 지정한 가격보다 위에서 시작하면 하락해서 지정한 가격 터치시 매수(2차매수1)
# 시가가 지정한 가격보다 이하에서 바로 시작하면 시가에 바로 매수(2차매수2)
if stime <= 145500 Then {
if NextBarOpen > var1-value*(매수위치2차+1) Then
buy("2차매수1",atlimit,var1-value*(매수위치2차+1),Floor((전략매수금액*10000*(매수비중2차/100))/C));
Else
buy("2차매수2",AtMarket,def,Floor((전략매수금액*10000*(매수비중2차/100))/C));
}
------ 2차매수에 관한 일부 식 끝 -------------
검토하시고 수정 부탁드립니다.
전체 시스템식은 아래와 같습니다.
------------------- 전체 시스템식 -------------------
## 일봉상 일목균형표의 120일 기준선을 참조하여 3분봉에서 매매함.
## 외부변수 설정 ##
input : 전략시작일자(20160105), 전략시작시간(090000), 전략매수금액(1000);
input : 매수위치1차(2), 매수위치2차(3);
input : 매도위치1차(1.5), 매도위치2차(2);
input : 매수비중1차(50), 매수비중2차(50);
input : 매도비중1차(50), 매도비중2차(50);
input : 전략진입횟수(1);
input : 최종손절위치(10),최종익절위치(1);
input : Period(120);
## 내부변수 설정 ##
var : CL(0),V0.5(0),V1(0),V2(0),V3(0);
var : mid(0),V4(0),V5(0),V6(0),V7(0),V8(0),V9(0);
var : diff(0),TF(0),cnt(0),value(0);
var : entrycond1(false),entrycond2(false),entrycond3(false);
# Period 전기간 최고가의 값이 있으면
if dayhigh(Period) > 0 Then {
var1 = dayhigh(0); # 당일최고가(Period 기간동안 최고가를 계산하기 위한 초기값)
var2 = daylow(0); # 당일최저가(Period 기간동안 최고가를 계산하기 위한 초기값)
var11 = dayhigh(1); # 전일최고가(전일기준 Period 기간동안 최고가를 계산하기 위한 초기값)
var12 = daylow(1); # 전일최저가(전일기준 Period 기간동안 최고가를 계산하기 위한 초기값)
# 0일부터 Period전일까지 최고가와 최저가를 불러와
# Period 기간동안 최고가/최저가를 계산
# 전일기준은 0을 제외하고 Period 기간이므로 +1
for cnt = 0 to Period-1 {
if DayHigh(cnt) > var1 Then
var1 = DayHigh(cnt);
if dayhigh(cnt+1) > var11 Then
var11 = dayhigh(cnt+1);
if daylow(cnt) < var2 Then
var2 = daylow(cnt);
if daylow(cnt+1) < var21 Then
var21 = daylow(cnt+1);
}
# Period기간동알 최고가가 전일보다 상승하면
# CL에 당일 중간값 저장
if var11 < var1 Then
CL = (var1+var2)/2;
V0.5 = var1-((var1-CL)/5)*1;
V1 = var1-((var1-CL)/5)*2; ## "빨"타점-1타점
V2 = var1-((var1-CL)/5)*3; ## "주"타점-2타점
V3 = var1-((var1-CL)/5)*4; ## "노"타점-3타점
mid = (var1+var2)/2; ## 중간선
V4 = var1-((var1-CL)/5)*5; ## "초"타점-4타점
V5 = var1-((var1-CL)/5)*6; ## "파"타점-5타점
V6 = var1-((var1-CL)/5)*7; ## "남"타점-6타점
V7 = var1-((var1-CL)/5)*8; ## "보"타점-7타점
V8 = var1-((var1-CL)/5)*9; ## "점"타점-8타점
V9 = var1-((var1-CL)/5)*9; ## "검"타점-9타점
value = abs(var1-V0.5);
#######################################################
if sdate >= 전략시작일자 and # 지정일 이후
TotalTrades < 전략진입횟수 and # 최대 진입횟수 이전
MarketPosition == 0 and # 현재 무포지션
stime >= 전략시작시간 and #지정시간 이후
EntryCond1 == false Then { # EntryCond1은 false일때(첫진입이 발생하면 true로 변경되어 한번만 진입하게 됨)
# (1차매수1),(1차매수2)은 가격이 하락해서 1차매수가격을 터치한 것인지
# 시가가 갭으로 1차매수가격 이하에서 바로 시작해서 신호가 발생한것인지
# 구분하기 위해서 1차매수를 2개의 함수로 작성한 것입니다.
# 시가가 지정한 가격보다 위에서 시작하면 하락해서 지정한 가격 터치시 매수(1차매수1)
# 시가가 지정한 가격보다 이하에서 바로 시작하면 시가에 바로 매수(1차매수2)
if stime <= 145500 Then {
if NextBarOpen > var1-value*(매수위치1차+1) Then
buy("1차매수1",atlimit,var1-value*(매수위치1차+1),Floor((전략매수금액*10000*(매수비중1차/100))/C));
Else
buy("1차매수2",AtMarket,def,Floor((전략매수금액*10000*(매수비중1차/100))/C));
}
if stime == 150000 Then {
if L <= var1[1]-value[1]*(매수위치1차+1) Then
buy("1차매수3",AtMarket,def,Floor((전략매수금액*10000*(매수비중1차/100))/C));
}
}
# 매수진입이후
if MarketPosition == 1 then {
# 추가진입이 발생하면 1차매도가 다시 발생할수 있도록 false로 초기화
if CurrentContracts > CurrentContracts[1] Then
Condition1 = false;
# 매수시점의 var1와 V0.5의 차이값을 diff에 저장
diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]);
if MaxEntries == 1 and # 최대진입횟수가1이고(첫진입 한번만 발생한 상황)
L >= var1-value*(매수위치2차+1) and # 저가가 2차매수가격 이상이고
EntryCond2 == false Then { # EntryCond2은 false일때(2차매수가 발생하면 true로 변경되어 한번만 진입하게 됨)
# 다음봉에서 2차매수가격을 터치하면 신호발생(즉 가격이 하락해서 첫 터치가 발생하면 매수)
# 시가가 지정한 가격보다 위에서 시작하면 하락해서 지정한 가격 터치시 매수(2차매수1)
# 시가가 지정한 가격보다 이하에서 바로 시작하면 시가에 바로 매수(2차매수2)
if stime <= 145500 Then {
if NextBarOpen > var1-value*(매수위치2차+1) Then
buy("2차매수1",atlimit,var1-value*(매수위치2차+1),Floor((전략매수금액*10000*(매수비중2차/100))/C));
Else
buy("2차매수2",AtMarket,def,Floor((전략매수금액*10000*(매수비중2차/100))/C));
}
if stime == 150000 and L <= var1[1]-value[1]*(매수위치2차+1) Then
buy("2차매수3",AtMarket,def,Floor((전략매수금액*10000*(매수비중2차/100))/C));
}
# Condition1과 Condition2는 각 매도의 횟수를 1번으로 제한하게 위한 변수
# 포지션 진행 중 1차매도란 이름의 청산이 발생하면 Condition1은 true
if CurrentContracts < CurrentContracts[1] and (LatestExitName(0) == "1차매도1" or LatestExitName(0) == "1차매도2") Then
Condition1 = true;
# 포지션 진행 중 2차매도란 이름의 청산이 발생하면 Condition2는 true
if CurrentContracts < CurrentContracts[1] and (LatestExitName(0) == "2차매도1" or LatestExitName(0) == "2차매도2") Then
Condition2 = true;
# Condition1이 false일때(첫진입후 아직 1차매도는 발생하지 않은 상태)
# 당일 최저가에서 diff*매도위치1차만큼 상승하면 매도1차비중만큼 청산
if Condition1 == false then {
if stime <= 145500 Then
exitlong("1차매도1",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1);
if stime == 150000 and H >= lowest(L,BarsSinceEntry)[1]+diff[1]*매도위치1차 Then
exitlong("1차매도2",AtMarket,def,"",Floor(MaxContracts*(매도비중1차/100)),1);
}
if Condition1 == true and CurrentContracts < MaxContracts then {
if stime <= 145500 Then
exitlong("최종익절1",AtStop,LatestExitPrice(0)-diff*최종익절위치);
if stime == 150000 and L <= LatestExitPrice(0)-diff*최종익절위치 Then
exitlong("최종익절2",AtMarket);
}
# Condition2는 false일때(첫진입후 아직 2차매도는 발생하지 않은 상태)
# 당일 최저가에서 diff*매도위치2차만큼 상승하면 매도2차비중만큼 청산
if Condition2 == false then {
if stime <= 145500 Then
exitlong("2차매도1",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차);
if stime == 150000 and H >= lowest(L,BarsSinceEntry)[1]+diff[1]*매도위치2차 Then
exitlong("2차매도2",AtMarket);
}
# 당일최고가에서 value*(최종손절위치+1)만큰 하락하면 전량청산
# 3분봉에서 정규장마지막봉 전봉까지만 만족했을때 신호발생
if stime < 145700 Then
exitlong("최종손절1",AtStop,var1-value*(최종손절위치+1));
# 정규장 마지막봉에서 조건만족하면 다음봉(다음날)시가에 청산
if stime == 150000 and L <= var1[1]-value[1]*(최종손절위치+1) Then
exitlong("최종손절2",AtMarket);
}
Else { # 매수포지션이 아니면 모두 false로 초기화
Condition1 = false;
Condition2 = false;
}
}
# 매수진입 후 1차매수1이나 1차매수2, 1차매수3 진입신호가 발생하면 true
if MarketPosition == 1 and (LatestEntryName(0) == "1차매수1" or LatestEntryName(0) == "1차매수2" or LatestEntryName(0) == "1차매수3") Then
entrycond1 = true;
# 매수진입 후 2차매수1이나 2차매수2, 2차매수3 진입신호가 발생하면 true
if MarketPosition == 1 and (LatestEntryName(0) == "2차매수1" or LatestEntryName(0) == "2차매수2" or LatestEntryName(0) == "2차매수3") Then
entrycond2 = true;
# 무포지션이면 flase로 초기화
if MarketPosition == 0 Then {
entrycond1 = false;
entrycond2 = false;
}
2016-01-08
212
글번호 94217
답변완료
수고하십니다.시스템 문의 드립니다.
input : P(5);
var1 = ma(C,P);
if crossup(C,var1) Then
buy();
if CrossDown(C,var1) Then
sell();
저번식 봉이 5이평선 돌파시 매수 매도 신호 보여주는 식인데요
여기서 식을 보완해서 봉이 20이평선 아래에서 5이평선을 하향이탈하면 매도신호 이때
5이평선이 20이평과 역배열 이고 5이평선 고점이 직전고점 보다 낮아야하구요
5이평선을 다시 회복하면 청산 신호
봉이 20이평선 위에서 5이평선을 상향 돌파하면 매수 이때 5이평선이 20이평과
정배열이고 5이평선 저점이 직전 저점 보다 높아야 하구요 5이평선을 다시
이탈시 매수 청산신호
그리고 봉이 20이평선 위에 있을때는 매수 청산하고 신규매도는 안되구요
봉이 20이평선 아래있을때는 매도청산만 하구 신규 매수는 안하구요
이렇게 만들수 있을까요? 복잡해서 --; 식을 만들줄 몰라서 답답하네요~
부탁드립니다.
항상 수고하십시오!
2016-01-08
142
글번호 94212
답변완료
시스템 함수 문의 드립니다
1. 3일 이평선이 10일 이평선과 20일 이평선을 골든크로스 시 매수
3일 이평선이 10일 이평선과 20일 이평선을 데드크로스 시 매도
2. 주가가 5일 이평선을 골든크로스한 후 다시 데드크로스 한 후 다시 골든크로스 하면 매수
주가가 5일 이평선을 데드크로스한 후 다시 골든크로스 한 후 다시 데드크로스 하면 매도
3. 현재 1분봉의 가격이 최근 이전 10개봉의 최고가를 돌파시 매수
현재 1분봉의 가격이 최근 이전 10개봉의 최저가를 붕괴시 매도
당일 청산(2시 45분까지
4. 일목균형의 기준선 상향돌파 시 매수
일목균형의 기준선 하향돌파 시 매도
오늘도 부탁드립니다! 감사해요
2016-01-08
130
글번호 94209
답변완료
진입횟수 변경요청(11-1)
안녕하세요?
함수수정요청드립니다.
아래의 함수에서 진입횟수를 제한하지 않고 조건이 발생되면 계속 매매가 가능하도록 요청드립니다.
(진입의 횟수를 변수로 설정하여 1회, 2회,3회..로 변경할 수 있도록 작성요청드립니다.)
감사합니다.
------------------------------------------------------------------------------------
var : entry1(0);
var : ho1(0),OL1(0),HL1(0);
var : maho1(0),maOL1(0),maHL1(0);
var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0);
var : EntryCnt1(0);
var : V1(0),V2(0),V3(0),V4(0),V5(0);
var : V6(0),V7(0),V8(0),V9(0),V10(0);
if bdate != bdate[1] Then
entry1 = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry1 = entry1+1;
ho1 = Dayhigh-Dayopen;
OL1 = DayOpen-DayLow;
HL1 = DayHigh-DayLow;
sumho1 = 0;
sumOL1 = 0;
sumHL1 = 0;
for cnt1 = 1 to 10{
sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1));
sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1));
sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1));
}
maho1 = sumho1/10;
maOL1 = sumOL1/10;
maHL1 = sumHL1/10;
V1 = dayopen(0)+maho1;
V2 = DayOpen(0)-maOL1;
V3 = DayOpen(0)+maHL1;
V4 = DayOpen(0)-maHL1;
V5 = NthMaxList(1,V1,V2,V3,V4);
V6 = NthMaxList(2,V1,V2,V3,V4);
V9 = NthMaxList(3,V1,V2,V3,V4);
V10 = NthMaxList(4,V1,V2,V3,V4);
V7 = (V5+V10)/2;
V8 = (V6+V9)/2;
if MarketPosition == 0 and entry1 == 0 Then{
if V7 > V8 Then
sell("s1",AtStop,v7);
if V7 < V8 Then
sell("s2",Atlimit,v8);
}
if MarketPosition == -1 and IsEntryName("s1") == true Then{
ExitShort("sp1",atlimit,V9);
ExitShort("sl1",AtStop,V6);
}
if MarketPosition == -1 and IsEntryName("s2") == true Then{
ExitShort("sp2",atlimit,V9);
ExitShort("sl2",AtStop,V6);
}
var : TF(0);
var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0);
var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0);
Array : HH[50](0),LL[50](0),CC[50](0);
mav1 = ma(c,5);
mav2 = ma(C,20);
TF = TimeToMinutes(stime)%30;
if Bdate != Bdate[1] Then{
Etime = true;
if stime >= 090000 Then
Xtime = 050000;
Else
Xtime = 060000;
}
if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if HH[25+2] > 0 Then{
HV = HH[0];
LV = LL[0];
HV1 = HH[1];
LV1 = LL[1];
HV2 = HH[2];
LV2 = LL[2];
for cnt = 0 to 25{
if HH[cnt] > HV Then
HV = HH[cnt];
if LL[cnt] < LV Then
LV = LL[cnt];
if HH[cnt+1] > HV Then
HV = HH[cnt+1];
if LL[cnt+1] < LV Then
LV = LL[cnt+1];
if HH[cnt+2] > HV Then
HV = HH[cnt+2];
if LL[cnt+2] < LV Then
LV = LL[cnt+2];
}
var1 = (HV+LV)/2;
var2 = (HV1+LV1)/2;
var3 = (HV2+LV2)/2;
if Etime == true then{
if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then
buy("b",AtMarket);
if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then
ExitLong("bx",AtMarket);
}
}
if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{
Etime = false;
ExitLong();
}
2016-01-08
158
글번호 94208