예스스탁
예스스탁 답변
2021-04-13 11:48:52
안녕하세요
예스스탁입니다.
각 주기별로 아래 변수에 값이 저장됩니다.
주봉은 WMACD,WMACDS,WMACDO, 전봉값은 preWMACD,preWMACDS,preWMACDO
일봉은 DMACD,DMACDS,DMACDO, 전봉값은 preDMACD,preDMACDS,preDMACDO
타분봉 XMACD,XMACDS,XMACDO, 전봉값은 preXMACD,preXMACDS,preXMACDO
기본차트 MACD,MACDS,MACDO, 전봉값은 MACD[1],MACDS[1],MACDO[1]
각 MACD값들중 필요한 값으로 진입청산 조건만들어 사용하셔야 합니다.
Input : Wshort(12),Wlong(26),Wsig(9);
Input : dshort(12),dlong(26),dsig(9);
input : 타분봉(30),Xshort(12),Xlong(26),Xsig(9);
Input : short(12),long(26),sig(9);
var : widx(0);
Var : wEp1(0), Wema1(0), PreWema1(0);
Var : wEp2(0), Wema2(0), PreWema2(0);
Var : wEp3(0), PreWMACDV(0),PreWMACDS(0),WMACDv(0),WMACDs(0),preWMACDo(0),WMACDO(0);
var : didx(0);
Var : dEp1(0), dema1(0), Predema1(0);
Var : dEp2(0), dema2(0), Predema2(0);
Var : dEp3(0),PredMACDV(0),PredMACDS(0),dMACDv(0),dMACDs(0),predMACDo(0),dMACDO(0);
Var : MACDv(0), MACDs(0),macdo(0) ;
var : S1(0),D1(0),TM(0),TF(0),XEP1(0),XEP2(0),XEP3(0),XMACDO(0);
var : xma1(0),xma2(0),idx(0),Prexma1(0),Prexma2(0),XMACDV(0),XMACDS(0),PreXMACDS(0),PreXMACDV(0),PreXMACDO(0);
#주봉 MACD
wEp1 = 2/(Wshort+1);
wEp2 = 2/(Wlong+1);
wEp3 = 2/(Wsig+1);
if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then
{
widx = widx + 1;
PreWema1 = Wema1[1];
PreWema2 = Wema2[1];
PreWMACDV = WMACDV[1];
PreWMACDS = WMACDs[1];
PreWMACDO = WMACDo[1];
}
if widx <= 1 then
{
Wema1 = C;
Wema2 = C;
WMACDv = Wema1-Wema2;
WMACDs = WMACDv;
WMACDO = WMACDV-WMACDS;
}
else{
Wema1 = C * wEP1 + PreWema1 * (1-wEP1);
Wema2 = C * wEP2 + PreWema2 * (1-wEP2);
WMACDV = Wema1-Wema2;
WMACDS = WMACDV * wEP3 + PreWMACDS * (1-wEP3);
WMACDO = WMACDV-WMACDS;
}
#일봉 MACD
dEp1 = 2/(dshort+1);
dEp2 = 2/(dlong+1);
dEp3 = 2/(dsig+1);
if bdate != bdate[1] Then
{
didx = didx + 1;
Predema1 = dema1[1];
Predema2 = dema2[1];
PredMACDV = dMACDV[1];
PredMACDS = dMACDs[1];
PredMACDO = dMACDo[1];
}
if didx <= 1 then
{
dema1 = C;
dema2 = C;
dMACDv = dema1-dema2;
dMACDs = dMACDv;
dMACDO = dMACDV-dMACDS;
}
else{
dema1 = C * dEP1 + Predema1 * (1-dEP1);
dema2 = C * dEP2 + Predema2 * (1-dEP2);
dMACDV = dema1-dema2;
dMACDS = dMACDV * dEP3 + PredMACDS * (1-dEP3);
dMACDO = dMACDV-dMACDS;
}
#타분봉 MACD
XEp1 = 2/(Xshort+1);
XEp2 = 2/(Xlong+1);
XEp3 = 2/(Xsig+1);
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%타분봉;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타분봉 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타분봉 > 1 and TM >= TM[1]+타분봉) or
(Bdate == Bdate[1] and 타분봉 == 1 and TM > TM[1]) Then
{
idx = idx + 1;
Prexma1 = xma1[1];
Prexma2 = xma2[1];
PreXMACDV = XMACDV[1];
PreXMACDS = XMACDS[1];
PreXMACDO = XMACDO[1];
}
if idx <= 1 then {
xma1 = C;
xma2 = C;
MACDV = xma1-xma2;
MACDS = MACDV;
MACDO = MACDV-MACDS;
}
else{
xma1 = C * XEP1 + Prexma1 * (1-XEP1);
xma2 = C * XEP2 + Prexma2 * (1-XEP2);
XMACDV = xma1-xma2;
XMACDS = XMACDV * XEP3 + PreXMACDS * (1-XEP3);
XMACDO = XMACDV-XMACDS;
}
}
#기본차트 MACD
MACDv = MACD(short, long);
MACDs = ema(MACDv,sig);
macdo = MACDv-MACDs;
if WMACDO > PreWMACDO and
DMACDO > PreDMACDO and
MACDO > MACDO[1] Then
Buy();
if MACDO < MACDO[1] and MACDO[1] > MACDO[2] Then
ExitLong();
즐거운 하루되세요
> 대한이 님이 쓴 글입니다.
> 제목 : 시스템 수정 문의
> 진심으로 감사드립니다.
아래 수식 작성하여 주셨는데,
제가 기간변경을 하기 위해서 어느 부분을 수정하면 되는지 알려 주시면 감사하겠습니다.
예) 주,일,60분 봉 -> 일,30분, 3분
다양한 기간을 설정 하면서 테스트 해보고 싶어서 부탁드립니다.
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템 작성 부탁드립니다.
>
안녕하세요
예스스탁입니다.
Input : Wshort(12),Wlong(26),Wsig(9);
Input : dshort(12),dlong(26),dsig(9);
Input : short(12),long(26),sig(9);
var : widx(0);
Var : wEp1(0), Wema1(0), PreWema1(0);
Var : wEp2(0), Wema2(0), PreWema2(0);
Var : wEp3(0),PreWMACDS(0),WMACDv(0),WMACDs(0),preWMACDo(0),WMACDO(0);
var : didx(0);
Var : dEp1(0), dema1(0), Predema1(0);
Var : dEp2(0), dema2(0), Predema2(0);
Var : dEp3(0),PredMACDS(0),dMACDv(0),dMACDs(0),predMACDo(0),dMACDO(0);
Var : MACDv(0), MACDs(0),macdo(0) ;
wEp1 = 2/(Wshort+1);
wEp2 = 2/(Wlong+1);
wEp3 = 2/(Wsig+1);
if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then
{
widx = widx + 1;
PreWema1 = Wema1[1];
PreWema2 = Wema2[1];
PreWMACDS = WMACDs[1];
PreWMACDO = WMACDo[1];
}
if widx <= 1 then
{
Wema1 = C;
Wema2 = C;
WMACDv = Wema1-Wema2;
WMACDs = WMACDv;
WMACDO = WMACDV-WMACDS;
}
else{
Wema1 = C * wEP1 + PreWema1 * (1-wEP1);
Wema2 = C * wEP2 + PreWema2 * (1-wEP2);
WMACDV = Wema1-Wema2;
WMACDS = WMACDV * wEP3 + PreWMACDS * (1-wEP3);
WMACDO = WMACDV-WMACDS;
}
dEp1 = 2/(dshort+1);
dEp2 = 2/(dlong+1);
dEp3 = 2/(dsig+1);
if bdate != bdate[1] Then
{
didx = didx + 1;
Predema1 = dema1[1];
Predema2 = dema2[1];
PredMACDS = dMACDs[1];
PredMACDO = dMACDo[1];
}
if didx <= 1 then
{
dema1 = C;
dema2 = C;
dMACDv = dema1-dema2;
dMACDs = dMACDv;
dMACDO = dMACDV-dMACDS;
}
else{
dema1 = C * dEP1 + Predema1 * (1-dEP1);
dema2 = C * dEP2 + Predema2 * (1-dEP2);
dMACDV = dema1-dema2;
dMACDS = dMACDV * dEP3 + PredMACDS * (1-dEP3);
dMACDO = dMACDV-dMACDS;
}
MACDv = MACD(short, long);
MACDs = ema(MACDv,sig);
macdo = MACDv-MACDs;
if WMACDO > PreWMACDO and
DMACDO > PreDMACDO and
MACDO > MACDO[1] Then
Buy();
if MACDO < MACDO[1] and MACDO[1] > MACDO[2] Then
ExitLong();
즐거운 하루되세요
> 대한이 님이 쓴 글입니다.
> 제목 : 시스템 작성 부탁드립니다.
> 안녕하십니까?
시스템 작성 부탁드립니다.
조건
주봉 MACD오실레이터 상승 AND 일봉 MACD오실레이터 상승 AND 60분봉 MACD오실레이터 상승
일때 매수
60분봉 MACD오실레이터 하락 반전 매도
감사합니다.