안녕하세요?
아래 글번호 77970번 재질문입니다.
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
아래의 전략에 대해 스크립트 작성 요청드립니다.
국내선물 5분봉으로 일중거래를 하고자 합니다.
전영업일의 마지막봉(15시 45분 완성봉)의 저가가 20ma보다 크고 개장 후 첫봉(9시 5분 완성봉)의 고가는 20ma보다 작으면 익봉 시가에 매도 진입
전영업일의 마지막봉(15시 45분 완성봉)의 고가는 20ma보다 작고 개장 후 첫봉(9시 5분 완성봉)의 저가는 20ma보다 크면 익봉 시가에 매수 진입
20ma 상향돌파시 익봉시가에 매도청산
20ma 하향이탈시 익봉시가에 매수청산
당일 저점을 3번 이탈시 매도청산
(3번 이탈의 의미는 이탈->돌파->이탈->돌파->이탈입니다.)
당일 고점을 3번 돌파시 매수청산
(3번 돌파의 의미는 돌파->이탈->돌파->이탈->돌파입니다.)
15시 15분 강제청산
-----------------------------------------------------------------------------------
전영업일의 마지막봉(15시 45분 완성봉)의 저가가 20ma보다 크고 개장 후 첫봉(9시 5분 완성봉)의 고가는 20ma보다 작은 상태였으며
MACD 오실레이터가 +값에서 그 직전값보다 감소하면 익봉 시가에 매도 진입
전영업일의 마지막봉(15시 45분 완성봉)의 고가는 20ma보다 작고 개장 후 첫봉(9시 5분 완성봉)의 저가는 20ma보다 큰 상태였으며
MACD 오실레이터가 -값에서 그 직전값보다 감소하면 익봉 시가에 매수 진입
으로 진입 조건만 변경하고자 작성주신 스크립트를 아래와 같이 수정해보았으나 원하는 신호가 생성되지 않습니다.
input : short(12),long(26),sig(9);
var : T(0),S(0),mav(0);
var : MACDv(0),MACDs(0),macdo(0),entry(0);
MACDV = MACD(short,long);
MACDS = Ema(MACDV,sig);
MACDO = MACDV-MACDS;
mav = ma(c,20);
if Bdate != Bdate[1] Then
{
T = 0;
S = 0;
if L[1] > mav[1] and H < mav and MACDO > 0 and MACDO < MACDO[1] Then
Sell("s",AtMarket);
if H[1] < mav[1] and L > mav and MACDO < 0 and MACDO > MACDO[1] Then
Buy("b",AtMarket);
}
if MarketPosition == -1 Then
{
if CrossUp(c,mav) Then
ExitShort("sx",AtMarket);
if L < DayLow(0)[1] and L[1] != DayLow(0)[1] Then
{
var1 = var1+1;
if var1 == 3 Then
ExitShort("sx1");
}
}
Else
var1 = 0;
if MarketPosition == 1 Then
{
if CrossDown(c,mav) Then
ExitLong("bx",AtMarket);
if H > DayHigh(0)[1] and H[1] != DayHigh(0)[1] Then
{
var2 = var2+1;
if var2 == 3 Then
ExitLong("bx1");
}
}
Else
Var2 = 0;
SetStopEndofday(151500);
답변 1
예스스탁
예스스탁 답변
2022-08-16 16:33:17
안녕하세요
예스스탁입니다.
1
if Bdate != Bdate[1] Then
{
if L[1] > mav[1] and H < mav and MACDO > 0 and MACDO < MACDO[1] Then
Sell("s",AtMarket);
if H[1] < mav[1] and L > mav and MACDO < 0 and MACDO > MACDO[1] Then
Buy("b",AtMarket);
}
전영업일의 마지막봉(15시 45분 완성봉)의 저가가 20ma보다 크고 개장 후 첫봉(9시 5분 완성봉)의 고가는 20ma보다 작은 상태였으며 MACD 오실레이터가 +값에서 그 직전값보다 감소하면 익봉 시가에 매도 진입
전영업일의 마지막봉(15시 45분 완성봉)의 고가는 20ma보다 작고 개장 후 첫봉(9시 5분 완성봉)의 저가는 20ma보다 큰 상태였으며 MACD 오실레이터가 -값에서 그 직전값보다 감소하면 익봉 시가에 매수 진입
올리신 수식의 진입이 올리신 글내용과 같이 작성이 되어 있습니다.
첫봉에서 모든조건 체크하는 내용이면 별도로 수정해 드릴 부분이 없습니다.
2
만약 MACD오실레이터 조건은 첫봉에서만 조건을 체크하는게 아니면
아래와 같이 진입식 변경하시면 됩니다.
if Bdate != Bdate[1] Then
{
T = 0;
if L[1] > mav[1] and H < mav Then
T = -1;
if H[1] < mav[1] and L > mav Then
T = 1;
}
if T == -1 and MACDO > 0 and MACDO < MACDO[1] Then
Sell("s",AtMarket);
if T == 1 and MACDO < 0 and MACDO > MACDO[1] Then
Buy("b",AtMarket);
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
아래 글번호 77970번 재질문입니다.
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
아래의 전략에 대해 스크립트 작성 요청드립니다.
국내선물 5분봉으로 일중거래를 하고자 합니다.
전영업일의 마지막봉(15시 45분 완성봉)의 저가가 20ma보다 크고 개장 후 첫봉(9시 5분 완성봉)의 고가는 20ma보다 작으면 익봉 시가에 매도 진입
전영업일의 마지막봉(15시 45분 완성봉)의 고가는 20ma보다 작고 개장 후 첫봉(9시 5분 완성봉)의 저가는 20ma보다 크면 익봉 시가에 매수 진입
20ma 상향돌파시 익봉시가에 매도청산
20ma 하향이탈시 익봉시가에 매수청산
당일 저점을 3번 이탈시 매도청산
(3번 이탈의 의미는 이탈->돌파->이탈->돌파->이탈입니다.)
당일 고점을 3번 돌파시 매수청산
(3번 돌파의 의미는 돌파->이탈->돌파->이탈->돌파입니다.)
15시 15분 강제청산
-----------------------------------------------------------------------------------
전영업일의 마지막봉(15시 45분 완성봉)의 저가가 20ma보다 크고 개장 후 첫봉(9시 5분 완성봉)의 고가는 20ma보다 작은 상태였으며
MACD 오실레이터가 +값에서 그 직전값보다 감소하면 익봉 시가에 매도 진입
전영업일의 마지막봉(15시 45분 완성봉)의 고가는 20ma보다 작고 개장 후 첫봉(9시 5분 완성봉)의 저가는 20ma보다 큰 상태였으며
MACD 오실레이터가 -값에서 그 직전값보다 감소하면 익봉 시가에 매수 진입
으로 진입 조건만 변경하고자 작성주신 스크립트를 아래와 같이 수정해보았으나 원하는 신호가 생성되지 않습니다.
input : short(12),long(26),sig(9);
var : T(0),S(0),mav(0);
var : MACDv(0),MACDs(0),macdo(0),entry(0);
MACDV = MACD(short,long);
MACDS = Ema(MACDV,sig);
MACDO = MACDV-MACDS;
mav = ma(c,20);
if Bdate != Bdate[1] Then
{
T = 0;
S = 0;
if L[1] > mav[1] and H < mav and MACDO > 0 and MACDO < MACDO[1] Then
Sell("s",AtMarket);
if H[1] < mav[1] and L > mav and MACDO < 0 and MACDO > MACDO[1] Then
Buy("b",AtMarket);
}
if MarketPosition == -1 Then
{
if CrossUp(c,mav) Then
ExitShort("sx",AtMarket);
if L < DayLow(0)[1] and L[1] != DayLow(0)[1] Then
{
var1 = var1+1;
if var1 == 3 Then
ExitShort("sx1");
}
}
Else
var1 = 0;
if MarketPosition == 1 Then
{
if CrossDown(c,mav) Then
ExitLong("bx",AtMarket);
if H > DayHigh(0)[1] and H[1] != DayHigh(0)[1] Then
{
var2 = var2+1;
if var2 == 3 Then
ExitLong("bx1");
}
}
Else
Var2 = 0;
SetStopEndofday(151500);