예스스탁
예스스탁 답변
2024-08-27 15:48:37
안녕하세요
예스스탁입니다.
cnt_Sto가 변환내용과 맞지 않아 식을 수정했습니다.
input : sto1(10),sto2(5),short(12),long(26),sig(9),R기간(10),N(13);
var : S(0),md(0),ms(0),R(0);
var : Bs_Sto(-1),cnt_sto(-1),Bs_macd(-1),Bs_Rsi(-1),조건(False);
S = StochasticsK(sto1,sto2);
Md = Macd(short,long);
Ms = Ema(Md,sig);
R = RSI(R기간);
if CrossUp(S,20) Then
{
Bs_Sto = 0;
cnt_Sto = 0;
}
Else
{
if Bs_Sto >= 0 Then
Bs_Sto = Bs_Sto+1;
if cnt_Sto >= 0 and S < 80 Then
cnt_Sto = cnt_Sto+1;
}
if CrossUp(Md,Ms) Then
Bs_Macd = 0;
Else
{
if Bs_Macd >= 0 Then
Bs_Macd = Bs_Macd+1;
}
if CrossUp(R,50) Then
Bs_Rsi = 0;
Else
{
if Bs_Rsi >= 0 Then
Bs_Rsi = Bs_Rsi+1;
}
조건 = Bs_Sto >= 0 and Bs_Macd >= 0 and Bs_Rsi >= 0 and Bs_Sto <= N and
Bs_Sto > Bs_Macd and Bs_Sto > Bs_Rsi;
if 조건 && 조건[1] == False && Bs_Sto==cnt_Sto Then
Find(1);
즐거운 하루되세요
> 소나기 님이 쓴 글입니다.
> 제목 : 안녕하세요 수식 검토 부탁드립니다~
> 안녕하세요
아래의 조건으로 만들어주신 수식이 종목 검색이 안되어 재검토 부탁드립니다.
신호검색은 잡히는데, 종목이 검출이 안됩니다.
1. 현재봉기준 N(13)봉 이내에,
스토캐스틱슬로우(12,5) %K가 20선을 상향 돌파한 후에,
MACD(12,26,9)가 signal선을 상향 돌파하고,
RSI(14)가 50선을 상향 돌파하는 세 가지를
모두 만족하는 종목을 검색하고 싶습니다.
세 가지를 만족하기 전에
스토캐스틱 %K가 80선을 돌파하면 제외하는 조건입니다.
(스토캐스틱 신호 후, MACD와 RSI는 순서 상관없음)
키움 신호수식은 다음과 같습니다.
이것을 예스 종목검색식으로 바꾸고 싶습니다.
S = Stochasticsslow(sto1,sto2);
M = Macd(short,long);
Ms = eavg(M,sig);
R = RSI(R기간);
Bs_Sto = BarsSince(CrossUp(S,20));
cnt_Sto = CountSince(CrossUp(S,20), S<80);
Bs_Macd = BarsSince(CrossUp(M,Ms));
Bs_Rsi = BarsSince(CrossUp(R,50));
조건 = Bs_Sto > Bs_Macd && Bs_Sto > Bs_Rsi;
//Max(Bs_Sto, Bs_Macd, Bs_Rsi) == Bs_Sto
조건 && !조건(1) && (Bs_Sto+1)==cnt_Sto
**************************************************
input : sto1(10),sto2(5),short(12),long(26),sig(9),R기간(10),N(13);
var : S(0),md(0),ms(0),R(0);
var : Bs_Sto(-1),cnt_sto(-1),Bs_macd(-1),Bs_Rsi(-1),조건(False);
S = StochasticsK(sto1,sto2);
Md = Macd(short,long);
Ms = Ema(Md,sig);
R = RSI(R기간);
if CrossUp(S,20) Then
{
Bs_Sto = 0;
cnt_Sto = 0;
}
Else
{
if Bs_Sto >= 0 Then
Bs_Sto = Bs_Sto+1;
if cnt_Sto >= 0 and S < 80 Then
cnt_Sto = cnt_Sto+1;
}
if CrossUp(Md,Ms) Then
Bs_Macd = 0;
Else
{
if Bs_Macd >= 0 Then
Bs_Macd = Bs_Macd+1;
}
if CrossUp(R,50) Then
Bs_Rsi = 0;
Else
{
if Bs_Rsi >= 0 Then
Bs_Rsi = Bs_Rsi+1;
}
조건 = Bs_Sto >= 0 and Bs_Macd >= 0 and Bs_Rsi >= 0 and Bs_Sto <= N and
Bs_Sto > Bs_Macd and Bs_Sto > Bs_Rsi;
if 조건 && 조건[1] == False && (Bs_Sto+1)==cnt_Sto Then
Find(1);
도움주셔서 감사드립니다.
늘 고맙습니다!!