예스스탁
예스스탁 답변
2022-08-17 14:11:52
안녕하세요
예스스탁입니다.
1
작성하신 내용은 차트 전체에서 한번만 조건만족하게 제어하는 내용입니다.
수식은 차트에 적용되면 첫봉부터 마지막봉쪽으로 계산해서 오게 됩니다.
차트전체에서 처음 만족하면 이후 봉에서 체크하지 않은 내용이면 해당내용이 맞습니다.
2
input : 타주기분(5),short(12),long(26),sig(9);
var : S1(0),D1(0),TM(0),EP1(0),EP2(0),EP3(0),MACDO(0);
var : TF(0),xma1(0),xma2(0),idx(0),Prexma1(0),Prexma2(0),MACDV(0),MACDS(0),PreMACDS(0);
var : Bsystem(true);
//타분봉 macd계산
Ep1 = 2/(short+1);
Ep2 = 2/(long+1);
Ep3 = 2/(sig+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];
PreMACDS = MACDS[1];
}
if idx <= 1 then
{
xma1 = C;
xma2 = C;
MACDV = xma1-xma2;
MACDS = MACDV;
MACDO = MACDV-MACDS;
}
else
{
xma1 = C * EP1 + Prexma1 * (1-EP1);
xma2 = C * EP2 + Prexma2 * (1-EP2);
MACDV = xma1-xma2;
MACDS = MACDV * EP3 + PreMACDS * (1-EP3);
MACDO = MACDV-MACDS;
}
if MACDS < 0 Then
Bsystem = False;
}
3
Buy("b3-1", OnClose, c, unitP);
작성하신 내용이 봉완성시 종가입니다.
신호함수에 onclose타입이 봉완성시 종가입니다.
onclose뒤에 c는 필요가 없습니다. def로 지정하시면 됩니다.
즐거운 하루되세요
> jshwang2 님이 쓴 글입니다.
> 제목 : 수식문의드립니다
> 안녕하세요~
수식 관련해서 몇가지 질문드립니다
1. 조건문이 한번만 작동하고 꺼졌으면 하는데 이렇게 하면 되는지
H > HB+30을 충족했을 때
Bsystem이 false => true로 바뀌고
false가 된 상황에서 조건에 다시 도달하더라도 true로 바뀌진 않음
input : HB(13000)
var : Bsystem(false), condition1(true) ;
if H > HB+30 && condition1 == true Then
{
Bsystem = true;
condition1 = False;
}
=> 위 수식처럼 condition1의 초기치를 true로 해놓고,
조건이 만족되면 false로 바뀌게 하면 1회만 작동하고 꺼지나요?
2. 1분봉 차트 상에서 5분봉의 macd signal을 사용해 조건식 만들려면 어떻게 해야하는지?
var : Bsystem(true);
if (5분봉 macd signal) < 0 Then Bsystem = False;
=> 1분봉 차트에서 이 조건을 구현하려면??
3. RSI가 조건을 충족한 해당 봉의 종가에 진입하려면 이렇게 하는게 맞는지?
input : MDD(100000);
var : unitP(0);
unitP = floor(MDD/(2*ATR(14)*2*1400));
if RSI(14) <= 30 Then Buy("b3-1", OnClose, c, unitP);
답변 주시면 감사하겠습니다
감사합니다~