예스스탁
예스스탁 답변
2023-03-20 13:34:49
안녕하세요
예스스탁입니다.
수식에 시간을 지정하는 내용이 들어가면 분봉에 적용해야 합니다.
내용에 전일자등이 있는데 차트가 일봉이면 시간조건은 지정이 불가능합니다.
좀더 자세한 설명이 필요합니다.
02-3453-1060으로 전화주시기 바랍니다.
즐거운 하루되세요
> 루라라라 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다
> sTime 사용법이 이게 맞을까요?
만약 이게 아니라면, 제가 적어놓은, 의도하는 의미대로 수식을 작성하려면 어떻게 수정해야할지 좀 부탁드리겠습니다 ㅠ
당일 특정 시간대를 넘겼을때만(15시 10분 이후) buy나 sell등의 주문이(at stop으로) 작동하게끔 하고 싶습니다.
1번
if MarketPosition == 0 and sTime >= 151000 Then
{
Buy("진입", AtStop, highest(c, 20), Floor(수량));
}
제가 원하는 의미 :
16일 목요일(어제) 기준으로 마켓 포지션이 0이면서,
17일 금요일(오늘) 기준으로 15시 10분이 넘었을때, 15시 10분부터 장마감전까지 실시간 현재가격이 <어제인 16일 목요일로부터 과거 20일간의 최고가>보다 크다면, 그 가격에 즉시 매수주문
2번
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] and sTime >= 151000 Then
Buy("추가진입", AtStop, LatestEntryPrice(0)*1.1, Floor(수량) );
}
제가 원하는 의미 :
16일 목요일(어제) 기준으로 MarketPosition == 1 이면서,
16일 목요일(어제) 기준으로 CurrentContracts > CurrentContracts[1] 이면서
17일 금요일(오늘) 기준으로 15시 10분이 넘었을때, 15시 10분부터 장마감전까지 실시간 현재가격이 <이전 진입가격의 1.1배>보다 크다면, 그 가격에 즉시 매수 주문
3번
If MarketPosition==1 and sTime >= 151000 Then
{
SetStopLoss(cut_n*ATr(20),PointStop);
}
Else
SetStopLoss(0);
제가 원하는 의미 :
16일 목요일(어제) 기준으로 마켓 포지션이 1이면서,
17일 금요일(오늘) 기준으로 15시 10분이 넘었을때, 15시 10분부터 장마감전까지 실시간 현재가격이 진입가격-cut_n*ATr(20) 보다 작다면, 그 가격에 즉시 매도주문
4번
If MarketPosition==1 and RSI(20) >= 60 and sTime >= 151000 Then
{
ExitLong("청산", atstop, Highest(C,20)-3*ATR(20) );
}
제가 원하는 의미 :
16일 목요일(어제) 기준으로 마켓 포지션이 1이면서 RSI(20) 값이 60 이상이고,
17일 금요일(오늘) 기준으로 15시 10분이 넘었을때, 15시 10분부터 장마감전까지 실시간 현재가격이 ( Highest(C,20)-3*ATR(20) ) 보다 작다면, 그 가격에 즉시 매도주문
----------------------------
아니면
아래와 같이 맨 처음에 sTime조건을 먼저 설정해주는게 맞는지....
If sTime >= 151000 Then
{
if MarketPosition == 0 Then
{
Buy("진입", AtStop, highest(c, 20), Floor(수량));
}
}
예스스탁
예스스탁 답변
2023-03-20 15:03:17
안녕하세요
예스스탁입니다.
아래식 참고하시기 바랍니다.
시간조건을 주기 위해서는 차트가 분봉이하 주기일때만 가능합니다.
기존수식이 일봉에서 사용되는 내용이므로
분봉차트에서 일봉지표를 구현해서 수식에서 사용하셔야 합니다.
기존식에 cut_n과 수량은 내용확인이 되지 않아 추가하지 못했습니다.
기존식에서 수식내용 가져와 추가하시기 바랍니다.
input : HPeriod(20);
input : ATRPeriod(10);
Input : RSIPeriod(20);
var : HC(0),cnt(0);
var : sumTR(0),TH(0),TL(0),ATRV(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),RSIV1(0);
Array : C1[100](0);
#일봉 highest(C,2) 계산
HC = 0;
For cnt = 1 to HPeriod
{
if HC == 0 or (HC > 0 and DayClose(cnt) > HC) Then
HC = DayClose(cnt);
}
#일봉 ATR계산
sumTR = 0;
for cnt = 1 to ATRPeriod
{
If DayClose(cnt+1) > DayHigh(cnt) then
TH = DayClose(cnt+1);
else
TH = DayHigh(cnt);
If DayClose(cnt+1) < daylow(cnt) then
TL = DayClose(cnt+1);
else
TL = daylow(cnt);
sumTR = sumTR + (TH-TL);
}
ATRV = sumTR/ATRPeriod;
#일봉 RSI계산
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;
RSIV1 = RSIV[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 MarketPosition == 0 and sTime >= 151000 Then
{
Buy("진입", AtStop, HC, Floor(수량));
}
#진입 후 다음날 15시 10분 이후
if MarketPosition == 1 Then
{
if sDate > EntryDate and sTime >= 151000 Then
Buy("추가진입", AtStop, LatestEntryPrice(0)*1.1, Floor(수량) );
if sDate > EntryDate and sTime >= 151000 Then
SetStopLoss(cut_n*ATRV);
Else
SetStopLoss(0);
if sDate > EntryDate and RSIV >= 60 and sTime >= 151000 Then
ExitLong("청산", atstop, HC-3*ATRV);
}
Else
SetStopLoss(0);
즐거운 하루되세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 문의 드립니다
>
안녕하세요
예스스탁입니다.
수식에 시간을 지정하는 내용이 들어가면 분봉에 적용해야 합니다.
내용에 전일자등이 있는데 차트가 일봉이면 시간조건은 지정이 불가능합니다.
좀더 자세한 설명이 필요합니다.
02-3453-1060으로 전화주시기 바랍니다.
즐거운 하루되세요
> 루라라라 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다
> sTime 사용법이 이게 맞을까요?
만약 이게 아니라면, 제가 적어놓은, 의도하는 의미대로 수식을 작성하려면 어떻게 수정해야할지 좀 부탁드리겠습니다 ㅠ
당일 특정 시간대를 넘겼을때만(15시 10분 이후) buy나 sell등의 주문이(at stop으로) 작동하게끔 하고 싶습니다.
1번
if MarketPosition == 0 and sTime >= 151000 Then
{
Buy("진입", AtStop, highest(c, 20), Floor(수량));
}
제가 원하는 의미 :
16일 목요일(어제) 기준으로 마켓 포지션이 0이면서,
17일 금요일(오늘) 기준으로 15시 10분이 넘었을때, 15시 10분부터 장마감전까지 실시간 현재가격이 <어제인 16일 목요일로부터 과거 20일간의 최고가>보다 크다면, 그 가격에 즉시 매수주문
2번
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] and sTime >= 151000 Then
Buy("추가진입", AtStop, LatestEntryPrice(0)*1.1, Floor(수량) );
}
제가 원하는 의미 :
16일 목요일(어제) 기준으로 MarketPosition == 1 이면서,
16일 목요일(어제) 기준으로 CurrentContracts > CurrentContracts[1] 이면서
17일 금요일(오늘) 기준으로 15시 10분이 넘었을때, 15시 10분부터 장마감전까지 실시간 현재가격이 <이전 진입가격의 1.1배>보다 크다면, 그 가격에 즉시 매수 주문
3번
If MarketPosition==1 and sTime >= 151000 Then
{
SetStopLoss(cut_n*ATr(20),PointStop);
}
Else
SetStopLoss(0);
제가 원하는 의미 :
16일 목요일(어제) 기준으로 마켓 포지션이 1이면서,
17일 금요일(오늘) 기준으로 15시 10분이 넘었을때, 15시 10분부터 장마감전까지 실시간 현재가격이 진입가격-cut_n*ATr(20) 보다 작다면, 그 가격에 즉시 매도주문
4번
If MarketPosition==1 and RSI(20) >= 60 and sTime >= 151000 Then
{
ExitLong("청산", atstop, Highest(C,20)-3*ATR(20) );
}
제가 원하는 의미 :
16일 목요일(어제) 기준으로 마켓 포지션이 1이면서 RSI(20) 값이 60 이상이고,
17일 금요일(오늘) 기준으로 15시 10분이 넘었을때, 15시 10분부터 장마감전까지 실시간 현재가격이 ( Highest(C,20)-3*ATR(20) ) 보다 작다면, 그 가격에 즉시 매도주문
----------------------------
아니면
아래와 같이 맨 처음에 sTime조건을 먼저 설정해주는게 맞는지....
If sTime >= 151000 Then
{
if MarketPosition == 0 Then
{
Buy("진입", AtStop, highest(c, 20), Floor(수량));
}
}