Search
Duplicate
📝

1‑2‑3 Reversal 전략

#공통, 전략
[설명]
1‑2‑3 Reversal 전략은 장기간 방향성 트렌드가 끝난 뒤에 나타나는 추세 반전을 포착하기 위해 고안되었습니다. 트렌드가 일정 방향으로 장기 진행된 뒤, 되돌림이나 방향 전환이 있을 때 “1-2-3”이라는 세 개의 포인트로 패턴을 인식하게 됩니다. 단기 차트는 속임수가 많기 때문에 가능한 큰 주기 차트에 사용이 권장됩니다.
고점과 저점을 규정하는 것과 피보나치 되돌림 도구(Fibonacci 38.2% 또는 50%)를 활용하는 것이 핵심입니다. 매도 step1 : 직전고점보다 높은 고점발생 step2 : 이후 하락해 저점 형성 step3 : 그 후 1-2라인의 38.2% 또는 50% 수준으로 되돌림 된 중간 고점 발생 이후 step2 지지라인 붕귀 시 매도
매수 step1 : 직전저점보다 낮은 저점발생 step2 : 이후 상승해 고점 형성 step3 : 그 후 1-2라인의 38.2% 또는 50% 수준으로 되돌림 된 중간 저점 발생 이후 step2 저항라인 돌파 시 매수
input : Length(20); Array : HD[10](0),HT[10](0),HV[10](0); //고점 날짜, 시간, 가격 저장할 배열 Array : LD[10](0),LT[10](0),LV[10](0); //저점 날짜, 시간, 가격 저장할 배열 var : cnt(0),Hprice(0),Lprice(0); var : UpTrend(false),DownTrend(False),Trend(0),BuyAble(False),SellAble(False); var : ZigZagTL(0); HPrice = H; LPrice = L; if Index == 0 Then { //초기 최고값 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; //초기 최저값 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; } Else { //ChangeMethod에 따른 추세전환 조건 //HPrice가 최근 n봉 최고가 갱신 UpTrend = HPrice >= Highest(HPrice,Length)[1]; //LPrice가 최근 n봉 최저가 갱신 DownTrend = LPrice <= Lowest(LPrice,Length)[1]; //상승추세 전환 if trend <= 0 and UpTrend == true Then { //추세구분 1 trend = 1; //과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동 For cnt = 9 DownTo 1 { HD[cnt] = HD[cnt-1]; HT[cnt] = HT[cnt-1]; HV[cnt] = HV[cnt-1]; } //0번방에 날짜, 시간, 가격 저장 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; BuyAble = true; SellAble = False; } Else if trend >= 0 and DownTrend Then//하락추세 전환 { //추세구분은 -1 trend = -1; //과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동 For cnt = 9 DownTo 1 { LD[cnt] = LD[cnt-1]; LT[cnt] = LT[cnt-1]; LV[cnt] = LV[cnt-1]; } //0번방에 날짜, 시간, 가격 저장 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; SellAble = true; BuyAble = False; } Else { //상승구간 if trend == 1 Then { //고점이 갱신되면 if HPrice > HV[0] Then { //갱신된 봉의 날짜/시간/가격으로 변경 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; } } //하락구간 if trend == -1 Then { //저점이 갱신되면 if LPrice < LV[0] Then { //갱신된 봉의 날짜/시간/가격으로 변경 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; } } } } var : TL1(0),TL2(0),TL3(0); var : TX1(0),TX2(0),TX3(0); if BuyAble == true Then { if LV[2] > 0 and //최소한 최근 3개의 저점이 있고 LV[1] < LV[2] and #전저점이 전전저점보다 크고 LV[0] <= HV[1]-(HV[1]-LV[1])*0.382 and //최근저점은 전고점과 전저점의 38.2% 이하로 하락했고 C > HV[1] Then //종가가 전고점을 돌파하면 매수 { Buy("B"); BuyAble = False; TL1 = TL_New(LD[0],LT[0],LV[0],sDate,sTime,C); TL2 = TL_New(HD[1],HT[1],HV[1],LD[0],LT[0],LV[0]); TL3 = TL_New(LD[1],LT[1],LV[1],HD[1],HT[1],HV[1]); TL_SetColor(TL1,Red); TL_SetColor(TL2,Blue); TL_SetColor(TL3,Red); TX1 = Text_New(LD[1],LT[1],LV[1],"1"); TX2 = Text_New(HD[1],HT[1],HV[1],"2"); TX3 = Text_New(LD[0],LT[0],LV[0],"3"); text_SetColor(TX1,Red); text_SetColor(TX2,Blue); text_SetColor(TX3,Red); Text_SetStyle(TX1,2,0); Text_SetStyle(TX2,2,1); Text_SetStyle(TX3,2,0); Text_SetBold(TX1,1); Text_SetBold(TX2,1); Text_SetBold(TX3,1); } } if SellAble == true Then { if HV[2] > 0 and //최소한 최근 3개의 고점이 있고 HV[1] > HV[2] and #전저점이 전전저점보다 크고 HV[0] >= LV[1]+(HV[1]-LV[1])*0.382 and //최근저점은 전고점과 전저점의 38.2% 이상으로 상승했고 C < LV[1] Then //종가가 전저점을 이탈하면 매도 { Sell("S"); SellAble = False; TL1 = TL_New(HD[0],HT[0],HV[0],sDate,sTime,C); TL2 = TL_New(LD[1],LT[1],LV[1],HD[0],HT[0],HV[0]); TL3 = TL_New(HD[1],HT[1],HV[1],LD[1],LT[1],LV[1]); TL_SetColor(TL1,Red); TL_SetColor(TL2,Blue); TL_SetColor(TL3,Red); TX1 = Text_New(HD[1],HT[1],HV[1],"1"); TX2 = Text_New(LD[1],LT[1],LV[1],"2"); TX3 = Text_New(HD[0],HT[0],HV[0],"3"); text_SetColor(TX1,Blue); text_SetColor(TX2,Red); text_SetColor(TX3,Blue); Text_SetStyle(TX1,2,1); Text_SetStyle(TX2,2,0); Text_SetStyle(TX3,2,1); Text_SetBold(TX1,1); Text_SetBold(TX2,1); Text_SetBold(TX3,1); } }
JavaScript
복사