답변완료
76319번에 대하여 재질문 드립니다.
담당자님, 안녕하세요.
Q&A 76319번에서 제가 질의하면서 설명을 제대로 못드린거 같습니다.
처음에 잘 설명드려야 하는데 번거롭게 해드려 거듭 죄송합니다.
다시 설명드린 내용으로 검토와 조건 변경(수정)한 수식의 작성을 부탁드립니다.
당초 Q&A 76306번의 조건을 수정하여 지표를 변경하고자 했습니다.
(76306번의 기존 조건)
40일간 각 일봉 시가, 종가의 80개 가격(value) 중에서 (시가, 종가 구분 없이)
가격(value)이 '(당일 시가 - 5.0)~(당일 시가 + 5.0)'의 범위 내에 있으면서
and 그 가격(value)이 당일 시가와 가장 가까운 것을 5개 선정
=> if diff[cnt] < tempmin and diff[cnt] < y
(변경하는 조건)
40일간 각 일봉 시가, 종가의 80개 가격(value) 중에서 (시가, 종가 구분 없이)
가격(value)이 '(당일 시가 - 5.0)~(당일 시가 + 5.0)'의 범위 내에 있으면서
and 그 가격(value)이 산출된 일봉의 날짜가 당일(D) 부터 가까운 순서로 최근 일자의 5개 가격(value) 선정
=> 따라서, 제 생각에 'diff[cnt] < tempmin' 조건은 제외되는 대신에 'diff[cnt] < y'의 조건과 함께
'각 가격(value)의 일봉 날짜가 당일(D) 부터 가까운 순서로 선택'하는 조건이 필요하지 않을까 추측해봅니다.
하지만 확실히는 잘 모르겠습니다.
cf. 수식에서 'diff[cnt] < tempmin' 조건과 tempmin 관련 변수를 제외하고 실행하면
'diff[cnt] < y' 조건을 충족하고 당일로 부터 먼 순서로 가격 5개가 선택됩니다.
예시를 통해 부연 설명드리면,
----------------------------------------------------------------------
N(10), nth(5), y(5)로 설정하고, 당일(D)의 시가 361.0인 경우
날짜 시가 종가 diff[cnt] 기존조건으로 변경조건으로
(D-1) 364.0 358.0 3.0 5개 선택시 가격 5개 선택시 가격
(D-2) 400.0 322.0 39.0 362.0 364.0
(D-3) 363.0 359.0 2.0 360.0 358.0
(D-4) 362.5 359.5 1.5 362.5 363.0
(D-5) 362.0 360.0 1.0 359.5 359.0
(D-6) 401.0 321.0 40.0 363.0 또는 359.0 362.0 또는 359.5
.............
(D-10) 402.0 320.0 41.0
--------------------------------------------------------------------------
위와 같이 기존 조건을 변경한 조건의 지표 수정을 부탁드립니다.
하단에는 76319번 Q&A 내용과 기존에 담당자님께서 작성해주신 수식을 기재했습니다.
계속 요청드리는 점 양해 바라며
수식 작성해 주신것에 미리 감사드립니다.
===================================================================
<Q&A 76319번 질의 및 담당자님 답변 내용>
===================================================================
===================================================================
===================================================================
안녕하세요
예스스탁입니다.
기존의 답변드린 수식이 당일로 부터 가까운 것을 기준으로 계산을 합니다.
1번방 : 1일전 시가, 2번방 : 1일전 종가
3번방 : 2일전 시가, 4번방 : 2일전 종가
5번방 : 3일전 시가, 6번방 : 3일전 종가
...
79번방 : 40일전 시가, 80번방 : 40일전 종가
value에 1일전~40일전의 시가와 종가 값이 1번방~80번까지 저장이 되고
최소차이값을 계산할때도 1번방~80번 순서로 찾게 되어 있습니다.
For cnt = 1 to N*2
{
if diff[cnt] < tempmin and diff[cnt] < y then
{
tempmin = diff[cnt];
tempIndex = cnt;
}
}
즐거운 하루되세요
> 원칙투자자 님이 쓴 글입니다.
> 제목 : 지표 수식 작성 부탁드립니다.
> 담당자님, 안녕하세요.
담당자님께서 지표를 잘 작성해주셨는데,
적용조건을 변경한 수식으로 수정하고자
담당자님께 부탁드립니다.
잘 작성해주신 지표로
계속 번거롭게 해드려 정말 죄송합니다.
수식작성 Q&A 76306번 지표(하단에 기재된 기존 수식)의 조건 수정입니다.
==========================================================
40일간 각 일봉 시가, 종가의 80개 가격(value) 중에서
가격(value)이 '(당일 시가 - 5.0)~(당일 시가 + 5.0)'의 범위 내에 있으면서 (-> 기존과 동일한 조건)
and 그 가격(value)이 산출된 일봉의 날짜가 당일로 부터 가까운 순서대로 (-> 수정된 조건)
최근 일자의 5개 가격(value)을 선정
===========================================================
위와 같이 기존 수식의 조건을 변경한 지표의 수정을 부탁드립니다.
조건을 수정하여 요청드린 점 죄송하게 생각합니다.
이제 가급적 지표 수정을 마무리 하겠습니다.
다시 한번 지표 작성에 대해 미리 감사드립니다.
일교차가 심한데 건강 챙기시기 바랍니다
<기존의 지표 수식>
( Q&A 76306번에 대한 답변에서담당자님께서 작성해주신 수식)
==========================================================
==========================================================
input : N(40),nth(5),y(5);
var : cnt(0),nthi(0);
Var : tempmin(0), tempindex(0),NTHindex(0),ii(0);
Array : value[200](0),diff[200](0), NTHVALUE[10](0);
if Bdate != Bdate[1] Then
{
ii = 0;
For cnt = 1 to N
{
ii = ii+1;
value[ii] = DayOpen(cnt);
diff[ii] = abs(value[ii]-DayOpen(0));
ii = ii+1;
value[ii] = DayClose(cnt);
diff[ii] = abs(value[ii]-DayOpen(0));
}
For nthi = 1 to nth
{
tempMin = 99999999;
tempIndex = -1;
For cnt = 1 to N*2
{
if diff[cnt] < tempmin and diff[cnt] < y then
{
tempmin = diff[cnt];
tempIndex = cnt;
}
}
if tempIndex != -1 Then
{
NTHVALUE[nthi] = value[tempIndex];
diff[tempIndex] = 99999999;
}
Else
{
NTHVALUE[nthi] = Nan;
}
}
}
plot1(NTHVALUE[1]);
plot2(NTHVALUE[2]);
plot3(NTHVALUE[3]);
plot4(NTHVALUE[4]);
plot5(NTHVALUE[5]);
============================================================
2022-03-14
1013
글번호 157102
지표
답변완료
미체결시 처리에 대한 질의
1. 미체결이 발생하면 시스템에서는 포지션 신호가 존재하는데
나중에 청산 신호가 나오면 잔고가 없는데 어찌되나요?
파생의 경우 매수신호인데 청산신호 나오면 매도 진입이 새로 되는건가요?
만약 현물같은 경우 청산신호 나오면 그냥 신호만 소멸되는 건가요?
2. 미체결시 시스템의 포지션 신호를 없애주고 싶은데 이렇게 하면 되나요?
예)
if 조건 then Buy("매수",atmarket,진입수량);
AccoundNum = getAccount(0);
Symbol = GetPositionSymbol(1,AccoundNum);
Quantity = GetPositionQuantity(Symbol,AccoundNum);
if 진입수량 != Quantity then Exitlong("청산",atmarket);
2022-03-11
1067
글번호 157084
시스템