커뮤니티
시스템식 부탁드립니다.
2017-03-08 15:28:03
112
글번호 107586
항상 도움 주셔서 감사합니다.
문1) 아래와 같이 추세선을 그리고
특정 A라인을 돌파시 포지션 진입, 다음 B라인 터치시 청산하는 경우
현재시점이 특정 A라인을 돌파한 이후일 경우(다음 B라인 터치 이전인 경우)
실제 매매에서는 포지션이 진입 안될것으로 예상되는데
만약 특정 A라인 돌파 이후 포지션을 진입하려면 어떻게 해야 하나요?
예를 들면
특정 A라인 돌파이후 5봉이 지났다거나,
특정 A라인 돌파 이후 10분이 경과했다든가
아니면 특정 A라인 돌파 이후 다음 B라인까지 거래가 50% 남았다거나 할경우
포지션을 진입하고 싶습니다.(3가지 모두 부탁드립니다.)
문2) 실계좌 매매에서 문)1과 같이 현재 시점이 특정 A라인 돌파 이후라면
포지션(매수라고 가정) 진입이 안될것이라고 생각되는데
이런 경우 다음 B라인 터치시 매도 진입을 해서 다시 특정 A라인에서 매도청산을
하려면 어떻게 해야 하나요?
문3) 아래와 같이 매매시
특정 A라인 돌파 이후 포지션 진입 및 다음 B라인에서 청산이후
다시 반대 방향으로 포지션 진입을 하고 싶습니다.
첫번째 매매: 특정 A라인 돌파시 매수 다음 B라인 터치시 매도 청산
두번째 매매: 매도 청산후 다시 특정 A라인 방향으로 매도 진입
두번재 청산조건 :
1 - 진입 B라인에서 특정 A라인 터치시
2 - 진입 B라인에서 특정 A라인까지 거래의 50% 지점에서 청산
문4) 위와 같은 경우 스탑로스를 포함하여 3번만 매매하고 싶습니다.
어떻게 해야 하나요?
문5) 특정 A라인과 다음 B라인 추세선을 아래와 같이 작성시
A라인과 B라인의 차이(A라인-B라인의 값)를 어떻게 구할수 있나요?
문6) 차트 오른쪽 상단에 뉴욕시간 테스트함수로 실시간 표시 가능한가요?
문7) 5분 차트에서 5분동안의 남은 시간을 그래프로 표시할수 있나요?
질문 많이 드려 죄송합니다.
도움 부탁드립니다.
// 시스템식 - 오일 4월물 5분봉
input : 추세선시작일1(20170303),추세선시작시간1(220000); //추세선1-저가
input : 추세선종료일1(20170306),추세선종료시간1(171000); //추세선1-저가2
input : 추세선시작일2(20170306),추세선시작시간2(081000); //추세선2-고가
input : 추세선종료일2(20170306),추세선종료시간2(185000); //추세선2-고가2
input : X1(0.72),X11(-0.72),X2(0.42),X22(-0.42) ;// 추세선 이동
input : loss(10),profit(30),Tp(10),Ts(5); // 수익,손절,트레일링스탑
var : TL1(0),TLL1(0),TLLL1(0),T1(0); //추세선1-지지
var : TL2(0),TLL2(0),TLLL2(0),T2(0); //추세선2-저항
##### 추세선 그리기 #####
// 추세선1 - 저가
if sdate == 추세선시작일1 and time == 추세선시작시간1 Then{
T1 = 1;
var1 = L;
}
if T1 == 1 and sdate == 추세선종료일1 and time == 추세선종료시간1 Then{
var2 = L;
TL1 = TL_New(추세선시작일1,추세선시작시간1,var1,추세선종료일1,추세선종료시간1,var2);
TL_SetExtLeft(TL1,true);
TL_SetExtRight(TL1,true);
TL_SetColor(TL1,BLUE) ;
T1 = 2;
TLL1 = TL_New(추세선시작일1,추세선시작시간1,var1+x1,추세선종료일1,추세선종료시간1,var2+x1); //추세선 복사
TL_SetExtLeft(TLL1,true);
TL_SetExtRight(TLL1,true);
TL_SetColor(TLL1,BLUE) ;
TLLL1 = TL_New(추세선시작일1,추세선시작시간1,var1+x11,추세선종료일1,추세선종료시간1,var2+x11); //추세선 복사
TL_SetExtLeft(TLLL1,true);
TL_SetExtRight(TLLL1,true);
TL_SetColor(TLLL1,BLUE) ;
}
// 추세선2 - 고가
if sdate == 추세선시작일2 and time == 추세선시작시간2 Then{
T2 = 1;
var3 = H;
}
if T2 == 1 and sdate == 추세선종료일2 and time == 추세선종료시간2 Then{
var4 = H;
TL2 = TL_New(추세선시작일2,추세선시작시간2,var3,추세선종료일2,추세선종료시간2,var4);
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetColor(TL2,RED) ;
T2 = 2;
TLL2 = TL_New(추세선시작일2,추세선시작시간2,var3+x2,추세선종료일2,추세선종료시간2,var4+x2);
TL_SetExtLeft(TLL2,true);
TL_SetExtRight(TLL2,true);
TL_SetColor(TLL2,RED) ;
TLLL2 = TL_New(추세선시작일2,추세선시작시간2,var3+x22,추세선종료일2,추세선종료시간2,var4+x22);
TL_SetExtLeft(TLLL2,true);
TL_SetExtRight(TLLL2,true);
TL_SetColor(TLLL2,RED) ;
}
##### 시스템매매 #####
// 진입 시스템
// 매매시간 시작
if T1 == 2 then {
// 하락
if T1 == 2 and MarketPosition == 0 then { //and s_line1 > -1 and s_line4 < 0 then{
if C < TL_GetValue(TL1,sdate,stime) and C[1] > TL_GetValue(TL1,sdate[1],stime[1]) Then
sell("S");
}
// 상승
if T2 == 2 and MarketPosition == 0 then { //and s_line1 < 1 and s_line4 > 0 then{
if C > TL_GetValue(TL2,sdate,stime) and C[1] < TL_GetValue(TL2,sdate[1],stime[1]) Then
Buy("B");
}
// 청산 시스템
// 매도청산
// X1,X2에 닿을 경우
if MarketPosition == -1 then{
if (L <= TL_GetValue(TLLL1,sdate,stime) and L[1] > TL_GetValue(TLLL1,sdate[1],stime[1]))
or (L <= TL_GetValue(TLLL2,sdate,stime) and L[1] > TL_GetValue(TLLL2,sdate[1],stime[1])) Then
ExitShort("SX");
}
// 매수청산
// // X11,X22에 닿을 경우
if MarketPosition == 1 then{
if (H >= TL_GetValue(TLL1,sdate,stime) and H[1] < TL_GetValue(TLL1,sdate[1],stime[1]))
or (H >= TL_GetValue(TLL2,sdate,stime) and H[1] < TL_GetValue(TLL2,sdate[1],stime[1])) Then
ExitLong("BX");
}
}
답변 1
예스스탁 예스스탁 답변
2017-03-09 11:19:59
안녕하세요
예스스탁입니다.
1
input : 추세선시작일1(20170303),추세선시작시간1(220000); //추세선1-저가
input : 추세선종료일1(20170306),추세선종료시간1(171000); //추세선1-저가2
input : 추세선시작일2(20170306),추세선시작시간2(081000); //추세선2-고가
input : 추세선종료일2(20170306),추세선종료시간2(185000); //추세선2-고가2
input : X1(0.72),X11(-0.72),X2(0.42),X22(-0.42) ;// 추세선 이동
input : loss(10),profit(30),Tp(10),Ts(5); // 수익,손절,트레일링스탑
var : TL1(0),TLL1(0),TLLL1(0),T1(0); //추세선1-지지
var : TL2(0),TLL2(0),TLLL2(0),T2(0); //추세선2-저항
var : tt(0),ii(0),pst(0);
##### 추세선 그리기 #####
// 추세선1 - 저가
if sdate == 추세선시작일1 and time == 추세선시작시간1 Then{
T1 = 1;
var1 = L;
}
if T1 == 1 and sdate == 추세선종료일1 and time == 추세선종료시간1 Then{
var2 = L;
TL1 = TL_New(추세선시작일1,추세선시작시간1,var1,추세선종료일1,추세선종료시간1,var2);
TL_SetExtLeft(TL1,true);
TL_SetExtRight(TL1,true);
TL_SetColor(TL1,BLUE) ;
T1 = 2;
TLL1 = TL_New(추세선시작일1,추세선시작시간1,var1+x1,추세선종료일1,추세선종료시간1,var2+x1); //추세선 복사
TL_SetExtLeft(TLL1,true);
TL_SetExtRight(TLL1,true);
TL_SetColor(TLL1,BLUE) ;
TLLL1 = TL_New(추세선시작일1,추세선시작시간1,var1+x11,추세선종료일1,추세선종료시간1,var2+x11); //추세선 복사
TL_SetExtLeft(TLLL1,true);
TL_SetExtRight(TLLL1,true);
TL_SetColor(TLLL1,BLUE) ;
}
// 추세선2 - 고가
if sdate == 추세선시작일2 and time == 추세선시작시간2 Then{
T2 = 1;
var3 = H;
}
if T2 == 1 and sdate == 추세선종료일2 and time == 추세선종료시간2 Then{
var4 = H;
TL2 = TL_New(추세선시작일2,추세선시작시간2,var3,추세선종료일2,추세선종료시간2,var4);
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetColor(TL2,RED) ;
T2 = 2;
TLL2 = TL_New(추세선시작일2,추세선시작시간2,var3+x2,추세선종료일2,추세선종료시간2,var4+x2);
TL_SetExtLeft(TLL2,true);
TL_SetExtRight(TLL2,true);
TL_SetColor(TLL2,RED) ;
TLLL2 = TL_New(추세선시작일2,추세선시작시간2,var3+x22,추세선종료일2,추세선종료시간2,var4+x22);
TL_SetExtLeft(TLLL2,true);
TL_SetExtRight(TLLL2,true);
TL_SetColor(TLLL2,RED) ;
}
##### 시스템매매 #####
// 진입 시스템
// 매매시간 시작
if T1 == 2 then {
// 하락
if pst <= 0 and T1 == 2 and MarketPosition <= 0 then { //and s_line1 > -1 and s_line4 < 0 then{
if C < TL_GetValue(TL1,sdate,stime) and C[1] > TL_GetValue(TL1,sdate[1],stime[1]) Then{
pst = -1;
tt = TimeToMinutes(stime);
ii = index;
}
}
// 상승
if pst >= 0 and T2 == 2 and MarketPosition >= 0 then { //and s_line1 < 1 and s_line4 > 0 then{
if C > TL_GetValue(TL2,sdate,stime) and C[1] < TL_GetValue(TL2,sdate[1],stime[1]) Then{
pst = 1;
tt = TimeToMinutes(stime);
ii = index;
}
}
// 청산 시스템
// 매도청산
// X1,X2에 닿을 경우
if MarketPosition == -1 then{
if (L <= TL_GetValue(TLLL1,sdate,stime) and L[1] > TL_GetValue(TLLL1,sdate[1],stime[1]))
or (L <= TL_GetValue(TLLL2,sdate,stime) and L[1] > TL_GetValue(TLLL2,sdate[1],stime[1])) Then
ExitShort("SX");
}
// 매수청산
// // X11,X22에 닿을 경우
if MarketPosition == 1 then{
if (H >= TL_GetValue(TLL1,sdate,stime) and H[1] < TL_GetValue(TLL1,sdate[1],stime[1]))
or (H >= TL_GetValue(TLL2,sdate,stime) and H[1] < TL_GetValue(TLL2,sdate[1],stime[1])) Then
ExitLong("BX");
}
}
if TotalTrades < 3 and pst == -1 and TimeToMinutes(stime) >= tt+10 Then//5봉이후는 index >= ii+5
sell("s");
if TotalTrades < 3 and pst == 1 and TimeToMinutes(stime) >= tt+10 Then//5봉이후는 index >= ii+5
buy("b");
2
시스템 적용후 이미 지나간 진입이나 청산에 대해서는
수식에서 따로 주문집행이 가능하지 않습니다.
해당 부부은 시스템 적용이후에 처음 진입이 발생할때 부터 주문을 집행하면 되므로
시스템 트레이딩 설정창의 매매탭에서 주문시작신호를 진입신호로 지정하시면
시스템 적용이후 최초 진입신호 발생 후부터 주문을 시작하게 됩니다.
3
기존식이 MarketPosition == 0 이라는 조건이 있습니다.
이부분을 무포지션이거나 반대포지션일떄로 변경하시면
스위칭이 가능하게 됩니다. 위 1번식에 수정되어 있습니다.
진입 B라인에서 특정 A라인까지 거래의 50% 지점에서 청산
위 내용은 어떤 내용인지 모르겠습니다.
4
일간이 아닌 전체 진입을 3번 하는 것이므로
TotalTrades < 3조건을 진입식에 추가하시면 됩니다.
1번식에 추가되어 있습니다.
5
올려주신 수식에 TL_GetValue로 추세선의 값을 가졍와 고가와 저가를 비교하고 있습니다.
TL_GetValue가 추세선의 값을 가져오는 함수입니다.
그러므로 TL_GetValue함수로 2개의 추세선의 값을 가져와 차이를 구하시면 됩니다.
수식 내용 및 도움말에서 함수설명 확인하시기 바랍니다
abs(TL_GetValue(TL1,sdate,stime)-TL_GetValue(TL2,sdate,stime))
6
가능하지 않습니다
7
var : SS(0),TS(0),second(0);
var1 = TimeToMinutes(stime)*60;
var2 = FracPortion(stime/100)*100;
SS = var1+var2;
value1 = TimeToMinutes(time)*60;
value2 = FracPortion(time/100)*100;
TS = value1+value2;
Second = TS-SS;
plot1(300-Second);
즐거운 하루되세요
> 양치기 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드립니다.
> 항상 도움 주셔서 감사합니다.
문1) 아래와 같이 추세선을 그리고
특정 A라인을 돌파시 포지션 진입, 다음 B라인 터치시 청산하는 경우
현재시점이 특정 A라인을 돌파한 이후일 경우(다음 B라인 터치 이전인 경우)
실제 매매에서는 포지션이 진입 안될것으로 예상되는데
만약 특정 A라인 돌파 이후 포지션을 진입하려면 어떻게 해야 하나요?
예를 들면
특정 A라인 돌파이후 5봉이 지났다거나,
특정 A라인 돌파 이후 10분이 경과했다든가
아니면 특정 A라인 돌파 이후 다음 B라인까지 거래가 50% 남았다거나 할경우
포지션을 진입하고 싶습니다.(3가지 모두 부탁드립니다.)
문2) 실계좌 매매에서 문)1과 같이 현재 시점이 특정 A라인 돌파 이후라면
포지션(매수라고 가정) 진입이 안될것이라고 생각되는데
이런 경우 다음 B라인 터치시 매도 진입을 해서 다시 특정 A라인에서 매도청산을
하려면 어떻게 해야 하나요?
문3) 아래와 같이 매매시
특정 A라인 돌파 이후 포지션 진입 및 다음 B라인에서 청산이후
다시 반대 방향으로 포지션 진입을 하고 싶습니다.
첫번째 매매: 특정 A라인 돌파시 매수 다음 B라인 터치시 매도 청산
두번째 매매: 매도 청산후 다시 특정 A라인 방향으로 매도 진입
두번재 청산조건 :
1 - 진입 B라인에서 특정 A라인 터치시
2 - 진입 B라인에서 특정 A라인까지 거래의 50% 지점에서 청산
문4) 위와 같은 경우 스탑로스를 포함하여 3번만 매매하고 싶습니다.
어떻게 해야 하나요?
문5) 특정 A라인과 다음 B라인 추세선을 아래와 같이 작성시
A라인과 B라인의 차이(A라인-B라인의 값)를 어떻게 구할수 있나요?
문6) 차트 오른쪽 상단에 뉴욕시간 테스트함수로 실시간 표시 가능한가요?
문7) 5분 차트에서 5분동안의 남은 시간을 그래프로 표시할수 있나요?
질문 많이 드려 죄송합니다.
도움 부탁드립니다.
// 시스템식 - 오일 4월물 5분봉
input : 추세선시작일1(20170303),추세선시작시간1(220000); //추세선1-저가
input : 추세선종료일1(20170306),추세선종료시간1(171000); //추세선1-저가2
input : 추세선시작일2(20170306),추세선시작시간2(081000); //추세선2-고가
input : 추세선종료일2(20170306),추세선종료시간2(185000); //추세선2-고가2
input : X1(0.72),X11(-0.72),X2(0.42),X22(-0.42) ;// 추세선 이동
input : loss(10),profit(30),Tp(10),Ts(5); // 수익,손절,트레일링스탑
var : TL1(0),TLL1(0),TLLL1(0),T1(0); //추세선1-지지
var : TL2(0),TLL2(0),TLLL2(0),T2(0); //추세선2-저항
##### 추세선 그리기 #####
// 추세선1 - 저가
if sdate == 추세선시작일1 and time == 추세선시작시간1 Then{
T1 = 1;
var1 = L;
}
if T1 == 1 and sdate == 추세선종료일1 and time == 추세선종료시간1 Then{
var2 = L;
TL1 = TL_New(추세선시작일1,추세선시작시간1,var1,추세선종료일1,추세선종료시간1,var2);
TL_SetExtLeft(TL1,true);
TL_SetExtRight(TL1,true);
TL_SetColor(TL1,BLUE) ;
T1 = 2;
TLL1 = TL_New(추세선시작일1,추세선시작시간1,var1+x1,추세선종료일1,추세선종료시간1,var2+x1); //추세선 복사
TL_SetExtLeft(TLL1,true);
TL_SetExtRight(TLL1,true);
TL_SetColor(TLL1,BLUE) ;
TLLL1 = TL_New(추세선시작일1,추세선시작시간1,var1+x11,추세선종료일1,추세선종료시간1,var2+x11); //추세선 복사
TL_SetExtLeft(TLLL1,true);
TL_SetExtRight(TLLL1,true);
TL_SetColor(TLLL1,BLUE) ;
}
// 추세선2 - 고가
if sdate == 추세선시작일2 and time == 추세선시작시간2 Then{
T2 = 1;
var3 = H;
}
if T2 == 1 and sdate == 추세선종료일2 and time == 추세선종료시간2 Then{
var4 = H;
TL2 = TL_New(추세선시작일2,추세선시작시간2,var3,추세선종료일2,추세선종료시간2,var4);
TL_SetExtLeft(TL2,true);
TL_SetExtRight(TL2,true);
TL_SetColor(TL2,RED) ;
T2 = 2;
TLL2 = TL_New(추세선시작일2,추세선시작시간2,var3+x2,추세선종료일2,추세선종료시간2,var4+x2);
TL_SetExtLeft(TLL2,true);
TL_SetExtRight(TLL2,true);
TL_SetColor(TLL2,RED) ;
TLLL2 = TL_New(추세선시작일2,추세선시작시간2,var3+x22,추세선종료일2,추세선종료시간2,var4+x22);
TL_SetExtLeft(TLLL2,true);
TL_SetExtRight(TLLL2,true);
TL_SetColor(TLLL2,RED) ;
}
##### 시스템매매 #####
// 진입 시스템
// 매매시간 시작
if T1 == 2 then {
// 하락
if T1 == 2 and MarketPosition == 0 then { //and s_line1 > -1 and s_line4 < 0 then{
if C < TL_GetValue(TL1,sdate,stime) and C[1] > TL_GetValue(TL1,sdate[1],stime[1]) Then
sell("S");
}
// 상승
if T2 == 2 and MarketPosition == 0 then { //and s_line1 < 1 and s_line4 > 0 then{
if C > TL_GetValue(TL2,sdate,stime) and C[1] < TL_GetValue(TL2,sdate[1],stime[1]) Then
Buy("B");
}
// 청산 시스템
// 매도청산
// X1,X2에 닿을 경우
if MarketPosition == -1 then{
if (L <= TL_GetValue(TLLL1,sdate,stime) and L[1] > TL_GetValue(TLLL1,sdate[1],stime[1]))
or (L <= TL_GetValue(TLLL2,sdate,stime) and L[1] > TL_GetValue(TLLL2,sdate[1],stime[1])) Then
ExitShort("SX");
}
// 매수청산
// // X11,X22에 닿을 경우
if MarketPosition == 1 then{
if (H >= TL_GetValue(TLL1,sdate,stime) and H[1] < TL_GetValue(TLL1,sdate[1],stime[1]))
or (H >= TL_GetValue(TLL2,sdate,stime) and H[1] < TL_GetValue(TLL2,sdate[1],stime[1])) Then
ExitLong("BX");
}
}
다음글