예스스탁
예스스탁 답변
2021-10-22 17:43:17
안녕하세요
예스스탁입니다.
3분봉 차트에서 10분주기 값을 계산하지 못합니다.
랭귀지는 기본차트의 배수로 높은 주기의 차트의 값만 계산이 가능합니다.
1분봉이나 2분봉이나 5분봉과 같이 기본차트의 배수로 10분이나 30분이 되는 주기에서 적용하셔야 합니다.
시스템식에 거래시간과 손절, 익절틱수를 지정하게 외부변수처리해 드립니다.
종목별로 별도셋팅해 사용하시면 됩니다.
1-1 검색
input : ntime1(10),ntime2(30),n(12);
var : S1(0),D1(0),TM(0),TF1(0),TF2(0),cnt(0);
Array : H1[50](0),L1[50](0),H2[50](0),L2[50](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TM%ntime1;
TF2 = TM%ntime2;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime1 > 1 and TF1 < TF1[1]) or
(Bdate == Bdate[1] and ntime1 > 1 and TM >= TM[1]+ntime1) or
(Bdate == Bdate[1] and ntime1 == 1 and TM > TM[1]) Then
{
H1[0] = H;
L1[0] = L;
For cnt = 1 to 49
{
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
if H1[0] > 0 and H > H1[0] Then
H1[0] = H;
if L1[0] > 0 and L < L1[0] Then
L1[0] = L;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime2 > 1 and TF2 < TF2[1]) or
(Bdate == Bdate[1] and ntime2 > 1 and TM >= TM[1]+ntime2) or
(Bdate == Bdate[1] and ntime2 == 1 and TM > TM[1]) Then
{
H2[0] = H;
L2[0] = L;
For cnt = 1 to 49
{
H2[cnt] = H2[cnt-1][1];
L2[cnt] = L2[cnt-1][1];
}
}
if H2[0] > 0 and H > H2[0] Then
H2[0] = H;
if L2[0] > 0 and L < L2[0] Then
L2[0] = L;
if H1[n] > 0 and H2[n] > 0 and C > H1[n] and C > H2[n] and C > O Then
Plot1(H,"검색",RED);
if L1[n] > 0 and L2[n] > 0 and C < L1[n] and C < L2[n] and C < O Then
Plot2(L,"검색",BLUE);
}
1-2 시스템
input : ntime1(10),ntime2(30),n(12);
input : StartTime(222500),EndTime(010000);
input : 익절틱수(50),손절틱수(50);
var : S1(0),D1(0),TM(0),TF1(0),TF2(0),cnt(0);
Array : H1[50](0),L1[50](0),H2[50](0),L2[50](0);
var : Tcond(false);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TM%ntime1;
TF2 = TM%ntime2;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime1 > 1 and TF1 < TF1[1]) or
(Bdate == Bdate[1] and ntime1 > 1 and TM >= TM[1]+ntime1) or
(Bdate == Bdate[1] and ntime1 == 1 and TM > TM[1]) Then
{
H1[0] = H;
L1[0] = L;
For cnt = 1 to 49
{
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
if H1[0] > 0 and H > H1[0] Then
H1[0] = H;
if L1[0] > 0 and L < L1[0] Then
L1[0] = L;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime2 > 1 and TF2 < TF2[1]) or
(Bdate == Bdate[1] and ntime2 > 1 and TM >= TM[1]+ntime2) or
(Bdate == Bdate[1] and ntime2 == 1 and TM > TM[1]) Then
{
H2[0] = H;
L2[0] = L;
For cnt = 1 to 49
{
H2[cnt] = H2[cnt-1][1];
L2[cnt] = L2[cnt-1][1];
}
}
if H2[0] > 0 and H > H2[0] Then
H2[0] = H;
if L2[0] > 0 and L < L2[0] Then
L2[0] = L;
if Tcond == true Then
{
if H1[n] > 0 and H2[n] > 0 and C > H1[n] and C > H2[n] and C > O Then
Buy();
if L1[n] > 0 and L2[n] > 0 and C < L1[n] and C < L2[n] and C < O Then
Sell();
if MarketPosition == 1 Then
ExitLong("bx",AtStop,L-PriceScale*1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,H+PriceScale*1);
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
2-1 검색
input : ntime1(10),n1(1),n2(2);
input : StartTime(222500),EndTime(010000);
input : 익절틱수(50),손절틱수(50);
var : S1(0),D1(0),TM(0),TF1(0),TF2(0),cnt(0);
var : Tcond(false);
Array : H1[50](0),L1[50](0),H2[50](0),L2[50](0);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TM%ntime1;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime1 > 1 and TF1 < TF1[1]) or
(Bdate == Bdate[1] and ntime1 > 1 and TM >= TM[1]+ntime1) or
(Bdate == Bdate[1] and ntime1 == 1 and TM > TM[1]) Then
{
H1[0] = H;
L1[0] = L;
For cnt = 1 to 49
{
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
if H1[0] > 0 and H > H1[0] Then
H1[0] = H;
if L1[0] > 0 and L < L1[0] Then
L1[0] = L;
if H1[n1] > 0 and C > H1[n1] and C > O and !(H <= H[1] and L >= L[1]) Then
Plot1(H,"검색",RED);
if H1[n2] > 0 and C > H1[n2] and C > O and !(H <= H[1] and L >= L[1]) Then
Plot2(H,"검색",RED);
if L1[n1] > 0 and C < L1[n1] and C < O and !(H <= H[1] and L >= L[1]) Then
Plot3(L,"검색",BLUE);
if L1[n2] > 0 and C < L1[n2] and C < O and !(H <= H[1] and L >= L[1]) Then
Plot4(L,"검색",CYAN);
}
2-2
input : ntime1(10),n1(1),n2(2);
input : StartTime(222500),EndTime(010000);
input : 익절틱수(50),손절틱수(50);
var : S1(0),D1(0),TM(0),TF1(0),TF2(0),cnt(0);
var : Tcond(false);
Array : H1[50](0),L1[50](0),H2[50](0),L2[50](0);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TM%ntime1;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime1 > 1 and TF1 < TF1[1]) or
(Bdate == Bdate[1] and ntime1 > 1 and TM >= TM[1]+ntime1) or
(Bdate == Bdate[1] and ntime1 == 1 and TM > TM[1]) Then
{
H1[0] = H;
L1[0] = L;
For cnt = 1 to 49
{
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
if H1[0] > 0 and H > H1[0] Then
H1[0] = H;
if L1[0] > 0 and L < L1[0] Then
L1[0] = L;
if Tcond == true Then
{
if H1[n1] > 0 and H1[n1] > 0 and C > H1[n1] and C > H1[n2] and C > O and !(H <= H[1] and L >= L[1]) Then
Buy();
if L1[n1] > 0 and L1[n2] > 0 and C < L1[n1] and C < L1[n2] and C < O and !(H <= H[1] and L >= L[1]) Then
Sell();
if MarketPosition == 1 Then
ExitLong("bx",AtStop,L-PriceScale*1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,H+PriceScale*1);
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
즐거운 하루되세요
> jesten77 님이 쓴 글입니다.
> 제목 : 검색
> 수고많으십니다
1]10분과30부의 왼쪽캔들12의 고/저 돌파시 매수/매도
2)10분과30분의 신호가 챠트상에 동시에 나타날때 매수/매도진입
[검색식]
[시스템식]
1)10분과30분의 신호가 챠트상에 동시에 나타날때 매수/매도진입
2)매수매도진입조건이맞을때 기준은3분봉캔들의 종가에 진입한다
3)단 알품은 캔들(고가저가가 앞캔들보다 작은캔들=고가저가돌파하저나 깨지않은 캔들)에서는 진입하지않는다
4)매수는 양봉에서만 진입
매도는 음봉에서만 진입
손절
1)매수매도 진입시 익절이되지않은 현재 캔들이 앞캔들의 고/저를 깨는 즉시 청산
2)10분과 30분의 동시신호가 진행될때 반복진입 청산 한다
3)손절50/익절50
(330만계좌)
(1계약 거래)
나스닥(손절50.익절50)(거래시간22;25~01:00)
항셍(손절,익절50)(거래시간10:15~12:00)
골드(손/익절50)(거래20:20~22:10)
**************************
1]10분봉은 현재 캔들이 이전 캔들고가/저가돌파시 매수신호/매도신호
2]10분봉은 현재 캔들이 왼쪽 12캔들고가/저가돌파시 매수신호/매도신호
3]이전캔들의 돌파신호와 12캔들의 고/저진입신호가 다른 표시로 나오게 해주십시요
[검색식]
[시스템식]
1)10분과30분의 신호가 챠트상에 동시에 나타날때 매수/매도진입
2)매수매도진입조건이맞을때 기준은3분봉캔들의 종가에 진입한다
3)단 알품은 캔들(고가저가가 앞캔들보다 작은캔들=고가저가돌파하저나 깨지않은 캔들)에서는 진입하지않는다
4)매수는 양봉에서만 진입
매도는 음봉에서만 진입
손절
1)매수매도 진입시 익절이되지않은 현재 캔들이 앞캔들의 고/저를 깨는 즉시 청산
2)10분과 30분의 동시신호가 진행될때 반복진입 청산 한다
3)손절50/익절50
(330만계좌)
(1계약 거래)
나스닥(손절50.익절50)(거래시간22;25~01:00)
항셍(손절,익절50)(거래시간10:15~12:00)
골드(손/익절50)(거래20:20~22:10)
**************************
1]10분봉의 왼쪽12 고가/저가 매수/매도후 동일방향으로 계속 진행될때
각캔들마다 추가신호 표시
[검색]