예스스탁
예스스탁 답변
2021-01-13 12:30:51
> 자동매매를알자 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요.
항상 빠르고 명확한 답변에 감사드립니다.
70654 수정 질문드립니다.
첨부이미지와 같이 매수/매도 진입되는 조건으로 되고 싶습니다만 되지 않아 이미지로 설명했습니다.
주가(최고가, 최저가) 대비 Stok 반대되었을때 조건만족하며..
최근 최고가(최저가) 도달하면 진입하도록 해 주세요.
부탁드립니다. 미리 감사드립니다.
예스스탁
예스스탁 답변
2021-01-13 20:08:53
안녕하세요
예스스탁입니다.
고점구간은 stok가 상승후 하락을 시작하는 봉까지
저점구간은 stok가 하락후 상승을 시작하는 봉까지로 작성했습니다.
각 다이버조건에서 count가 count >= 2로 지정되어 있습니다.
stok가 침체/과열에 돌입한 이후에 해당구간에서 2회이상 상승전환/하락전환이
2회이상 발생한후 비교해서 신호가 발생하는데
count >= 1로 지정하면 직전 침체/과열구간의 최종값 비교해서 신호가 발생합니다.
수식에 주석을 붙여드립니다. 참고하셔서 수정보완해 사용하시기 바랍니다.
Input : Stok침체(20), Stok무조건진입저점(5);
Input : Stok과열(80), Stok무조건진입고점(95);
Input : 수익틱(15), 손절틱(10);
input : sto1(10),sto2(5);
var : 최근주가최저점(0),직전주가최저점(0),최근주가최고점(0),직전주가최고점(0),UpDivergence(false);
var : 최근지표최저점(0),직전지표최저점(0),최근지표최고점(0),직전지표최고점(0),DnDivergence(false);
var : T(0),S(0),stok(0),count(0);
stok = StochasticsK(sto1,sto2);
if CrossDown(stok,Stok침체) Then
{
T = -1;
count = 0;
}
if CrossUp(stok,Stok과열) Then
{
T = 1;
count = 0;
}
#stok가 전봉보다 상승하면 1(다음하락까지 1)
if stok > stok[1] Then
S = 1;
#stok가 전봉보다 하락하면 -1(다음 상승까지 -1)
if stok < stok[1] Then
S = -1;
#stok상승구간
if S == 1 Then
{
#상승전환한 봉이면
if S != S[1] Then
{
#각값 초기화
최근주가최고점 = H;
최근지표최고점 = stok;
#직전구간값 저장
직전주가최고점 = 최근주가최고점[1];
직전지표최고점 = 최근지표최고점[1];
}
Else#상승유지중이면
{
#주가최고점 갱신
if H > 최근주가최고점 Then
최근주가최고점 = H;
#stok 최고점 갱신
if stok > 최근지표최고점 Then
최근지표최고점 = stok;
}
}
#stok하락구간
if S == -1 Then
{
#하락전환한 봉이면
if S != S[1] Then
{
#각값 초기화
최근주가최저점 = L;
최근지표최저점 = stok;
#직전구간값 저장
직전주가최저점 = 최근주가최저점[1];
직전지표최저점 = 최근지표최저점[1];
}
Else#하락유지중이면
{
#주가최저점 갱신
if L < 최근주가최저점 Then
최근주가최저점 = L;
#stok 최저점 갱신
if stok < 최근지표최저점 Then
최근지표최저점 = stok;
}
}
#stok 침체구간에서
if T == -1 and stok < stok침체 Then
{
#stok 상승전환 카운트
if S == 1 and S != S[1] Then
count = count+1;
#상승전환이 2회이상 발생하고
#현재 상승중이며
#주가최저점은 하락, stok최저점은 상승이면
#UpDivergence는 true
if count >= 2 and
S == 1 and
직전주가최저점 > 0 and 최근주가최저점 < 직전주가최저점 and 최근지표최저점 > 직전지표최저점 then
UpDivergence = true;
Else #위조건이 아니면 UpDivergence는 False
UpDivergence = False;
}
#stok 과열구간에서
if T == 1 and stok > stok과열 Then
{
#stok 하락전환 카운트
if S == -1 and S != S[1] Then
count = count+1;
#하락전환이 2회이상 발생하고
#현재 하락중이며
#주가최고점은 상승, stok최고점은 하락이면
#DnDivergence는 true
if count >= 2 and
S == -1 and
직전주가최고점 > 0 and 최근주가최고점 > 직전주가최고점 and 최근지표최고점 < 직전지표최고점 then
DnDivergence = true;
Else #위조건이 아니면 DnDivergence는 False
DnDivergence = False;
}
#UpDivergence가 true이면
if UpDivergence == true Then
{
#sto다이버매수로 매수진입하거나
#stok가 50을 상향돌파하면
#DnDivergence는 false, count는 0으로 초기화
if (MarketPosition == 1 and IsEntryName("sto다이버매수",0) == true) or
(MarketPosition == MarketPosition and TotalTrades > TotalTrades[1] and IsEntryName("sto다이버매도",1) == true) or
CrossDown(stok,50) Then
UpDivergence = False;
}
#UpDivergence가 true이면
if UpDivergence == true Then
{
#직전주가최저점 이상의 시세 발생하면 즉시 매수
if MarketPosition <= 0 Then
Buy("sto다이버매수",AtStop,직전주가최저점);
}
#DnDivergence가 true이면
if DnDivergence == true Then
{
#sto다이버매도로 매도진입하거나
#stok가 50을 하향이탈하면
#DnDivergence는 false, count는 0으로 초기화
if (MarketPosition == -1 and IsEntryName("sto다이버매도",0) == true) or
(MarketPosition == MarketPosition and TotalTrades > TotalTrades[1] and IsEntryName("sto다이버매도",1) == true) or
CrossDown(stok,50) Then
{
DnDivergence = False;
count = 0;
}
}
if DnDivergence == true Then
{
#직전주가최고점 이하의 시세 발생하면 즉시 매도
if MarketPosition >= 0 Then
Sell("sto다이버매도",AtStop,직전주가최고점);
}
if CrossDown(stok,Stok무조건진입저점) Then
Buy("침체무조건매수");
if CrossUp(stok,Stok무조건진입고점) Then
Sell("과열무조건매도");
SetStopProfittarget(PriceScale*수익틱,PointStop);
SetStopLoss(PriceScale*손절틱,PointStop);
즐거운 하루되세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 전화주시기 바랍니다.(02-3453-1060)
>
> 자동매매를알자 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요.
항상 빠르고 명확한 답변에 감사드립니다.
70654 수정 질문드립니다.
첨부이미지와 같이 매수/매도 진입되는 조건으로 되고 싶습니다만 되지 않아 이미지로 설명했습니다.
주가(최고가, 최저가) 대비 Stok 반대되었을때 조건만족하며..
최근 최고가(최저가) 도달하면 진입하도록 해 주세요.
부탁드립니다. 미리 감사드립니다.