예스스탁
예스스탁 답변
2021-10-07 14:21:31
안녕하세요
예스스탁입니다.
Input : short(12), long(26), signal(9);
Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0);
Input : Period1(12),Period2(26),Period3(9);
var : Didx(0),dEP1(0),dEP2(0),dEP3(0);
Var : dJISU1(0), PredJISU1(0);
Var : dJISU2(0), PredJISU2(0);
var : dMACDV(0), predMACDV(0);
Var : dMACDS(0), PredMACDS(0);
var : dMACDO(0), predMACDO1(0), predMACDO2(0);
dEp1 = 2/(Period1+1);
dEp2 = 2/(Period2+1);
dEp3 = 2/(Period3+1);
if bdate != bdate[1] Then
{
Didx = Didx + 1;
PredJISU1 = dJISU1[1];
PredJISU2 = dJISU2[1];
PredMACDV = dMACDV[1];
PredMACDS = dMACDS[1];
PredMACDO1 = dMACDO[1];
PredMACDO2 = PredMACDO1[1];
}
if Didx <= 1 then {
dJISU1 = C;
dJISU2 = C;
dMACDV = dJISU1-dJISU2;
dMACDS = dMACDV;
dMACDO = dMACDV-dMACDS;
}
else{
dJISU1 = C * dEP1 + PredJISU1 * (1-dEP1);
dJISU2 = C * dEP2 + PredJISU2 * (1-dEP2);
dMACDV = dJISU1-dJISU2;
dMACDS = dMACDV * dEP3 + PredMACDS * (1-dEP3);
dMACDO = dMACDV-dMACDS;
}
MACDv = MACD(short, long);
MACDs = ema(MACDv,signal);
macdo = MACDv-MACDs;
if Bdate != Bdate[1] Then
{
T = 0;
if MACDO > 0 Then
{
T = 1;
HH = H;
LL = L;
}
if MACDO < 0 Then
{
T = -1;
HH = H;
LL = L;
}
}
Else
{
if T != 0 Then
{
if H > HH Then
HH = H;
if L < LL Then
LL = L;
}
if T == 1 and MACDO < 0 Then
{
T = 2;
var1 = HH;
Var2 = LL;
}
if T == -1 and MACDO > 0 Then
{
T = -2;
var1 = HH;
Var2 = LL;
}
if T == 2 and MarketPosition == 0 and predMACDO1 > 0 and predMACDO2 > 0 and predMACDO1 > predMACDO2 and sTime < 151500 Then
Buy("b1",AtStop,var1);
if T == 2 and MarketPosition == 0 and predMACDO1 > 0 and predMACDO2 > 0 and predMACDO1 < predMACDO2 and sTime < 151500 Then
Buy("b2",AtLimit,var2);
if T == 2 and MarketPosition == 1 Then
T = 3;
if T == -2 and MarketPosition == 0 and predMACDO1 < 0 and predMACDO2 < 0 and predMACDO1 < predMACDO2 and sTime < 151500 Then
Sell("s1",AtStop,Var2);
if T == -2 and MarketPosition == 0 and predMACDO1 < 0 and predMACDO2 < 0 and predMACDO1 > predMACDO2 and sTime < 151500 Then
Sell("s2",AtLimit,Var1);
if T == -2 and MarketPosition == -1 Then
T = -3;
if MarketPosition == 1 and BarsSinceEntry >= 1 and DayClose(1) > DayOpen(1) and C > DayHigh(1) Then
ExitLong("bx1",AtMarket);
if MarketPosition == -1 and BarsSinceEntry >= 1 and DayClose(1) < DayOpen(1) and C < DayLow(1) Then
ExitShort("sx1",AtMarket);
if sTime == 151500 Then
{
if MarketPosition == 1 Then
ExitLong("bx2",AtMarket);
if MarketPosition == -1 Then
ExitShort("sx2",AtMarket);
}
}
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
아래 글번호 73686번 재질문입니다.
답변주신 아래의 스크립트에 전략을 변경하여 작성 요청드립니다.
국내선물 3분봉으로 일중거래를 하고자 합니다.
(9시 개장 후에 첫신호가 나오면 진입하고 당일 청산으로 거래를 마감하고자 합니다.)
- MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터
MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고
일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 양의 값이되 증가하면
장중 현주가가 고점(HH)돌파하면 조건 만족 즉시 매수 진입
- MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터
MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고
일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 음의 값이되 그 음의 절대 값이 증가하면
장중 현주가가 저점(LL)이탈하면 조건 만족 즉시 매도 진입
- MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터
MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고
일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 양의 값이되 감소하면
장중 현주가가 저점(LL)이탈하면 조건 만족 즉시 매수 진입
- MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터
MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고
일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 음의 값이되 그 음의 절대 값이 감소하면
장중 현주가가 고점(HH)돌파하면 조건 만족 즉시 매도 진입
- 진입봉과 청산봉이 동일한 봉에서 동시에 신호가 생성되서는 안되며 15시 15분 완성 익봉 강제 청산하고자 합니다.
*data1,2 이렇게 참조함수를 사용하지 않고 주종목 3분봉만을 사용하여 스크립트를 작성 요청드립니다.
Input : short(12), long(26), signal(9);
Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0);
MACDv = MACD(short, long);
MACDs = ema(MACDv,signal);
macdo = MACDv-MACDs;
if Bdate != Bdate[1] Then
{
T = 0;
if MACDO > 0 Then
{
T = 1;
HH = H;
LL = L;
}
if MACDO < 0 Then
{
T = -1;
HH = H;
LL = L;
}
}
Else
{
if T != 0 Then
{
if H > HH Then
HH = H;
if L < LL Then
LL = L;
}
if T == 1 and MACDO < 0 Then
{
T = 2;
var1 = HH;
Var2 = LL;
}
if T == -1 and MACDO > 0 Then
{
T = -2;
var1 = HH;
Var2 = LL;
}
if T == 2 and H > var1 and sTime < 151500 Then
{
T = 3;
Buy("b",AtMarket);
}
if T == -2 and L < var2 and sTime < 151500 Then
{
T = -3;
Sell("s",AtMarket);
}
if MarketPosition == 1 and BarsSinceEntry >= 1 and DayClose(1) > DayOpen(1) and C > DayHigh(1) Then
ExitLong("bx1",AtMarket);
if MarketPosition == -1 and BarsSinceEntry >= 1 and DayClose(1) < DayOpen(1) and C < DayLow(1) Then
ExitShort("sx1",AtMarket);
if sTime == 151500 Then
{
if MarketPosition == 1 Then
ExitLong("bx2",AtMarket);
if MarketPosition == -1 Then
ExitShort("sx2",AtMarket);
}
}