예스스탁
예스스탁 답변
2020-12-01 17:02:28
안녕하세요
예스스탁입니다.
조건에 시간이 있으면 기본차트는 분봉이어야 합니다.
또한 분봉에서 일봉지표를 사용할 경우에 참조데이타가 일봉이더라도
해당일봉 미완성시에 해당 값을 사용할 수 없습니다.
15시10분이나 9시 10분 시점에 일봉 지표를 이용하려면
분봉에서 일봉의 지표를 계산해 사용하셔야 합니다.
이후 타주기 지표사용에 참고하시기 바랍니다.
동일금액으로 4회 분할해야 하므로 청산이 1회라도 발생하면
이후 추가진입은 없게 작성해 드린ㅂ비다.
input : MFIPeriod(14);
Input : RSIPeriod(14);
var : cnt(0),sum1(0),sum2(0),MFIv(0);
var : SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0),Xcnt(0);
Array : C1[100](0);
sum1 = 0;
sum2 = 0;
for cnt = 0 to MFIPeriod-1{
if (dayhigh(cnt)+daylow(cnt)+DayClose(cnt)) > (dayhigh(cnt+1)+daylow(cnt+1)+DayClose(cnt+1)) Then
sum1 = sum1 + DayVolume(cnt)*(dayhigh(cnt)+daylow(cnt)+DayClose(cnt))/3;
Else
sum1 = sum1+0;
if (dayhigh(cnt)+daylow(cnt)+DayClose(cnt)) < (dayhigh(cnt+1)+daylow(cnt+1)+DayClose(cnt+1)) Then
sum2 = sum2 + DayVolume(cnt)*(dayhigh(cnt)+daylow(cnt)+DayClose(cnt))/3;
Else
sum2 = sum2+0;
}
MFIv = 100 - 100 / (1 + (sum1 / sum2));
if Bdate != Bdate[1] Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
}
C1[0] = C;
If idx == RSIPeriod+2 Then
{
UpSum = 0;
DownSum = 0;
For Counter = 0 To RSIPeriod - 1
{
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
}
If idx > RSIPeriod+2 Then
{
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (preDownAvg * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
}
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if (NextBarSdate != sdate[1] and NextBarStime >= 151000) or
(NextBarSdate == sdate[1] and NextBarStime >= 151000 and stime < 151000) Then
{
value1 = 0;
if MFIv < 10 Then
value1 = value1+300000;
if MFIv < 20 Then
value1 = value1+200000;
if MFIv < 30 Then
value1 = value1+100000;
if RSIv < 10 Then
value1 = value1+300000;
if RSIv < 20 Then
value1 = value1+200000;
if RSIv < 30 Then
value1 = value1+100000;
if value1 > 0 and (MarketPosition == 0 or (MarketPosition == 1 and Xcnt == 0)) Then
Buy("b",AtMarket,DEF,Floor(value1/NextBarOpen));
}
if MarketPosition == 1 Then
{
if CurrentContracts < CurrentContracts[1] Then
Xcnt = Xcnt+1;
if (NextBarSdate != sdate[1] and NextBarStime >= 91000) or
(NextBarSdate == sdate[1] and NextBarStime >= 91000 and stime < 91000) Then
{
if Xcnt < 3 Then
ExitLong("bx1",AtMarket,DEF,"",Floor(MaxContracts*0.25),2);
Else
ExitLong("bx2",AtMarket);
}
}
Else
Xcnt = 0;
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : 국내 주식 수식 부탁드림니다.
> 국내주식입니다. (삼성전자)
문의:차트설정을 data1로 일봉으로 설정하면 되나요? 아니면 분봉으로 설정해야되나요?
아니면 같은 종목을 data1(10분봉) 과 data2(일봉) 로 구분해야할까요?
알려주시면 감사하겠습니다.
매수 조건 ( 누적 매수 )
* 오후 3시 10분에 아래조건에 해당하는 상황에 맞는 조건에 매수 진입
아래 보조지표 조건은 일봉 기준입니다.
1. MFI(14) < 30 일때 10만원 진입
2. MFI(14) < 20 일때 20만원 진입
4. MFI(14) < 10 일때 30만원 진입
5. RSI(14) < 30 일때 10만원 진입
6. RSI(14) < 20 일때 20만원 진입
7. RSI(14) < 10 일때 30만원 진입
예를들어 오후 3시 10분에 MFI(14)< 15 이면서 RSI(14)< 25 이라면 20만원+10만원 총 30만원 매수 진행 입니다.
그다음날에도 해당 조건 도달시 같은 방법으로 매수 -- 즉 누적 매수입니다.
매수 청산 조건
* 오전 9시 10분에 아래조건에 해당하는 조건시 분할매도( 동일금액 25%씩 4일에 걸쳐 청산)
1. MFI(14) > 80 또는 RSI(14) > 70 일때