첨부 이미지
그림1
이전 문의의 답변에 감사드립니다.
아직 해소되지 않은 부분이 있어 추가 문의 드립니다. ^^
아래와 같이 코드를 알려주셨는데요.
==========================================================
var : t(0);
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
T = 0;
}
if Tcond == true Then
{
if T == 0 Then
{
if up_cnt[1] >= 6 or up_cnt[2] >= 6 Then
T = 1;
if middle_cnt[1] >= 6 or middle_cnt[2] >= 6 Then
T = 2;
if down_cnt[1] >= 6 or down_cnt[2] >= 6 Then
T = 3;
}
if T == 1 Then
{
if MarketPosition <= 0 and CrossUp(C,up[2]) Then
Buy("b1");
if MarketPosition >= 0 and CrossDown(C,up[1]) Then
Sell("s1");
if MarketPosition == 1 Then
ExitLong("Bp1",AtLimit,up[2]+(up[2]-up[1])*3);
if MarketPosition == -1 Then
ExitLong("sp1",AtLimit,up[1]-(up[2]-up[1])*3);
}
if T == 2 Then
{
if MarketPosition <= 0 and CrossUp(C,middle[2]) Then
Buy("b2");
if MarketPosition >= 0 and CrossDown(C,middle[1]) Then
Sell("s2");
if MarketPosition == 1 Then
ExitLong("Bp2",AtLimit,middle[2]+(middle[2]-middle[1])*3);
if MarketPosition == -1 Then
ExitLong("sp2",AtLimit,middle[1]-(middle[2]-middle[1])*3);
}
if T == 3 Then
{
if MarketPosition <= 0 and CrossUp(C,down[2]) Then
Buy("b3");
if MarketPosition >= 0 and CrossDown(C,down[1]) Then
Sell("s3");
if MarketPosition == 1 Then
ExitLong("Bp3",AtLimit,down[2]+(down[2]-down[1])*3);
if MarketPosition == -1 Then
ExitLong("sp3",AtLimit,down[1]-(down[2]-down[1])*3);
}
}
=========================================================================
빨간 박스 구간이
up_cnt 부분.
검정 박스 구간이
middlt_cnt 부분.
파랑 박스 구간이
down_cnt 부분.
인데요.
먼저 6번 이상 터치를 먼저 한 구간에서
매매가 시작되는데요.
첨부된 이미지를 보면
검정 박스 구간이 먼저
6번 이상 터치가 되어 매매가 시작 됐습니다.
그런데 검정 박스 구간의 매매가
시작 되면
빨간 박스 구간과 파랑 박스 구간이
6번 이상 터치가 되어도
매매 진입이 되지 않게 만들려면 어떻게
수식을 짜야 할까요?
답변 1
예스스탁
예스스탁 답변
2023-08-30 13:31:17
안녕하세요
예스스탁입니다.
수식에 별도로 수정해 드릴부분이 없습니다.
현재 수식이 지정한 시간 이후에
처음 6번 달성한 라인으로 진입과 청산이 되게 되어 있습니다.
수식에 보시면 지정한 시간이 되면 T는 0이고
이후 T가 0인 상태에서 먼저 6번이 달성되면
1,2,3 중 한가지 값이 할당되고
1,2,3중 하나로 진입청산이 발생합니다.
상단이 먼저 6이면 1, 중단은 2, 하단은 3입니다.
지정한 시간에 0으로 초기화 되므로
날짜별로는 라인에 변경될 수 있습니다.
즐거운 하루되세요
> 예스쟁이 님이 쓴 글입니다.
> 제목 : 83515 답변 주신 것에 추가 문의 드립니다
> 이전 문의의 답변에 감사드립니다.
아직 해소되지 않은 부분이 있어 추가 문의 드립니다. ^^
아래와 같이 코드를 알려주셨는데요.
==========================================================
var : t(0);
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
T = 0;
}
if Tcond == true Then
{
if T == 0 Then
{
if up_cnt[1] >= 6 or up_cnt[2] >= 6 Then
T = 1;
if middle_cnt[1] >= 6 or middle_cnt[2] >= 6 Then
T = 2;
if down_cnt[1] >= 6 or down_cnt[2] >= 6 Then
T = 3;
}
if T == 1 Then
{
if MarketPosition <= 0 and CrossUp(C,up[2]) Then
Buy("b1");
if MarketPosition >= 0 and CrossDown(C,up[1]) Then
Sell("s1");
if MarketPosition == 1 Then
ExitLong("Bp1",AtLimit,up[2]+(up[2]-up[1])*3);
if MarketPosition == -1 Then
ExitLong("sp1",AtLimit,up[1]-(up[2]-up[1])*3);
}
if T == 2 Then
{
if MarketPosition <= 0 and CrossUp(C,middle[2]) Then
Buy("b2");
if MarketPosition >= 0 and CrossDown(C,middle[1]) Then
Sell("s2");
if MarketPosition == 1 Then
ExitLong("Bp2",AtLimit,middle[2]+(middle[2]-middle[1])*3);
if MarketPosition == -1 Then
ExitLong("sp2",AtLimit,middle[1]-(middle[2]-middle[1])*3);
}
if T == 3 Then
{
if MarketPosition <= 0 and CrossUp(C,down[2]) Then
Buy("b3");
if MarketPosition >= 0 and CrossDown(C,down[1]) Then
Sell("s3");
if MarketPosition == 1 Then
ExitLong("Bp3",AtLimit,down[2]+(down[2]-down[1])*3);
if MarketPosition == -1 Then
ExitLong("sp3",AtLimit,down[1]-(down[2]-down[1])*3);
}
}
=========================================================================
빨간 박스 구간이
up_cnt 부분.
검정 박스 구간이
middlt_cnt 부분.
파랑 박스 구간이
down_cnt 부분.
인데요.
먼저 6번 이상 터치를 먼저 한 구간에서
매매가 시작되는데요.
첨부된 이미지를 보면
검정 박스 구간이 먼저
6번 이상 터치가 되어 매매가 시작 됐습니다.
그런데 검정 박스 구간의 매매가
시작 되면
빨간 박스 구간과 파랑 박스 구간이
6번 이상 터치가 되어도
매매 진입이 되지 않게 만들려면 어떻게
수식을 짜야 할까요?