답변완료
추세선 쌍반등
input : Period(17),선두께(1);
Var:상승색(Red), 하락색(Blue);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),tl9(0),
date21(0),date22(0),time21(0),time22(0),txx(0), vTL(0), vTL9(0),txxx(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0);
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);
Plot1(0);
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
if crossup(c,highest(H,Period)[1]) Then
T = 1;
if CrossDown(c,Lowest(L,Period)[1]) Then
T = -1;
If T == -1 Then
{
If T[1] != -1 Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
}
LoVal[0] = L;
LoBar[0] = 0;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,하락색);
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
}
Text_Delete(txx-5);
Condition1 = False;
}
Else
{
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
Text_Delete(tx);
Condition1 = False;
}
Else
{
if Condition1 == False and Value12 < value11-0.45 Then
if Condition1 == False and C >= value12+PriceScale*3 Then
{
Condition1 = true;
Text_Delete(txx-5);
txx = Text_New(sdate,sTime,H+PriceScale*5,"●");
Text_SetStyle(txx,2,2);
Text_SetColor(txx,Cyan);
Text_SetSize(txx,20);
TL_Delete(vtl9-1);
vTL9 = TL_New(sDate,sTime,0,sDate,sTime,9999);
TL_SetColor(vTL9,Red);
TL_SetSize(vTL9,0.5);
}
}
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
text_Delete(txx-5);
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
}
HiVal[0] = H;
HiBar[0] = 0;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,상승색);
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 5
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
TL_SetSize(TL1,선두께);
0.5p 보다 큰 하락 추세선 하나에, 0.5p 아래에서 3틱 반등이 두번 또는 그 이상 생길 때 동그라미 표시(한 추세선 안에 처진 쌍바닥,쓰리바닥). 0.5p 보다 작은 추세선은 무표시. 감사합니다.
2023-01-17
780
글번호 165486
지표
답변완료
행복; 시스템식 작성 바랍니다
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
시스템식 관련입니다
//===========================================================
<아래 1>과 같은 조건으로 <아래 2>와 같이 시스템식을 작성 하였습니다
- 2023년에 조건에 맞는 날자가 5일간 입니다
(1월5일, 1월6일, 1월9일, 1월10일, 1월 11일)
- 하지만, 성과보고서에는 3번의 거래만 표시됩니다
(1월5일 매수 후 1월6일 매수청산, 1월9일 매수 후 1월10일 매수청산,
1월11일 매수 후 1월12일 매수청산)
질문1) 이를 5번의 거래가 표시되도록 할 수 없는지요?
(1월5일 매수 후 1월6일 매수청산, 1월6일 매수 후 1월9일 매수청산,
1월9일 매수 후 1월10일 매수청산, 1월10일 매수 후 1월11일 매수청산,
1월11일 매수 후 1월12일 매수청산)
질문2) 또는 종가에 매수청산 후 다시 종가에 매수하는 것이 불가능하면
그냥 보유하는 것으로 하여 1번의 거래로 할 수 없는지요?
(1월5일 매수 후 1월 12일 매수청산)
수식 작성 바랍니다^^
--------------------<아래 1 시작>-----------------------------
종목; SK하이닉스 주식선물 연결선물(매수진입, 매도진입 가능)
주기; 일봉
MACD 변수; MACD(12, 26, 9)
<매수진입 조건; Buy>
- 조건1; 거래량 20일 이평선 * 2 <= 거래량 5일 이평선
- 조건2; MACD_OSC >= 0
- 조건3; 100 계약을 종가에(OnClose) 매수진입
<매수청산 조건; ExitLong>
- 조건1; 매수진입한 날 다음날 종가에(OnClose) 전량 매수청산
<매도진입 조건; Sell>
- 조건1; 거래량 20일 이평선 * 2 <= 거래량 5일 이평선
- 조건2; MACD_OSC < 0
- 조건3; 100 계약을 종가에(OnClose) 매도진입
<매도청산 조건; ExitShort>
- 조건1; 매도진입한 날 다음날 종가에(OnClose) 전량 매도청산
--------------------<아래 1 끝>-----------------------------
--------------------<아래 2 시작>-----------------------------
input : short(12),long(26),sig(9),P1(5),P2(20);
var : macdv(0),macds(0),macdo(0),mav1(0),mav2(0);
macdv = macd(short,long);
macds = ema(macdv,sig);
macdo = macdv-macds;
mav1 = ma(v,P1);
mav2 = ma(v,P2);
if MarketPosition <= 0 and
mav1 >= mav2*2 and
macdo >= 0 Then
buy("b",OnClose,Def,100);
if MarketPosition == 1 and BarsSinceEntry == 1 Then
ExitLong("bx");
if MarketPosition >= 0 and
mav1 >= mav2*2 and
macdo < 0 Then
Sell("s",OnClose,Def,100);
if MarketPosition == -1 and BarsSinceEntry == 1 Then
ExitShort("sx");
--------------------<아래 2 끝>-----------------------------
2023-01-16
669
글번호 165481
시스템