오늘은 비트코인 시장의 백테스팅에서 VWAP(볼륨 가중 평균 가격)를 사용한 스컬프팅 전략을 살펴보겠습니다. 이 전략을 구현하고 결과를 분석하기 위해 Python 알고리즘을 작성합니다.
먼저 컨텍스트를 설정해 보겠습니다. VWAP는 동적 지원 및 저항 값을 제공하므로 알고리즘 거래를 위한 강력한 도구입니다. 사용되는 시간 프레임과 독립적으로 유지되므로 최적화할 매개 변수의 수가 줄어들기 때문에 알고리즘 거래에 유리합니다.
이 전략에서는 비트코인-미국 달러 거래 가격에 대해 15분 시간 프레임을 사용합니다. 100일 이동 평균(DMA)과 VWAP라는 두 가지 지표를 고려할 것입니다. 이러한 지표와 관련된 가격 변동을 분석하여 시장 추세를 결정할 수 있습니다. 일정 수의 캔들이 100 이평선 아래 또는 위에서 거래되면 각각 하락세 또는 상승세를 나타냅니다. 마찬가지로 양초가 VWAP 곡선 아래 또는 위에서 거래되면 추세 방향을 확인합니다.
상승세에서는 매수 포지션만 찾고 하락세에서는 매도 포지션에 집중합니다. 우리 포지션의 진입점은 가격이 VWAP 곡선에 대한 특정 고정 거리 내에 있을 때 트리거됩니다.
Python에서 이 전략을 구현하기 위해 pandas_ta 패키지를 사용하여 VWAP 및 100 DMA를 계산합니다. 그런 다음 데이터 프레임에 EMA 신호와 VWAP 신호라는 두 개의 새로운 열을 생성합니다. EMA 신호는 하락 추세 또는 상승 추세를 확인하기 위해 EMA 곡선 아래 또는 위로 떨어지는 백 캔들 수를 계산합니다. 마찬가지로 VWAP 신호는 VWAP 곡선 아래 또는 위에 있는 백 캔들 수를 계산합니다.
우리는 이러한 신호를 데이터 프레임의 전체 신호 열로 병합하여 구매 및 판매 위치의 트리거 역할을 합니다. 구매 포지션의 경우 총 신호가 2이고 열린 거래가 없는지 확인합니다. 또한 가격이 VWAP 곡선에 충분히 가까운지 확인합니다. 마찬가지로 매도 포지션의 경우 총 신호 1을 고려하고 VWAP 곡선에서 가격의 거리를 확인합니다.
매수(보라색) 및 매도(녹색) 신호와 함께 캔들을 플로팅하여 차트에 신호를 시각화할 수 있습니다.
전략을 백테스트하기 위해 변동성의 척도로 ATR(Average True Range)을 계산합니다. 손절 거리는 현재 ATR의 0.8배로 설정되고 이익실현 거리는 손절매 거리의 2배가 됩니다. 이러한 매개변수를 사용하여 손절매 및 이익 실현 값을 고려하여 구매 및 판매 포지션을 트리거할 수 있습니다. 우리는 $100,000의 현금 금액과 5의 레버리지로 시작할 것입니다.
백 테스트를 실행하면 거래 시스템의 결과를 관찰할 수 있습니다. 알고리즘은 3년 후 약 1,000만 달러의 최종 자본금으로 높은 수익률을 보여줍니다. 이에 비해 매수 후 보유 전략은 248%의 수익만 달성했습니다. 그러나 알고리즘의 성능이 변동하고 특정 기간 동안 어려움을 겪을 수 있다는 점에 유의하는 것이 중요합니다. 이는 변화하는 시장 상황에 대한 동적인 적응의 필요성을 강조합니다.
주식의 안정성을 평가하기 위해 수년에 걸쳐 주식 곡선을 그릴 수 있습니다. 이 알고리즘은 2년 동안 예외적으로 잘 수행되었지만 작년에는 문제에 직면했습니다. 이는 고정 매개변수에 의존하고 시장 변화에 적응하기 위해 조정이 필요할 수 있는 알고리즘의 수동적 특성을 강조합니다.
여기에 소개된 VWAP 기반 전략은 관심과 시간을 투자한 좋은 방법입니다. 몇 가지 제한 사항이 있음에도 불구하고 장기간에 걸쳐 상당한 수익을 입증했습니다. 추가 최적화 및 추가 필터 및 표시기 포함을 탐색하여 개선할 수 있습니다.
This video describes a trading strategy using VWAP for Crypto such as the Bitcoin. The strategy algorithm is tested in Python and the code details are explai...
안녕하세요 여러분, 오늘은 S&P 500의 과거 데이터를 사용하여 간단한 스컬프팅 전략에 대한 자세한 테스트를 수행할 예정입니다. 전략의 기본 사항을 설명하고 백테스팅 목적으로 Python으로 코드를 작성합니다. 우리는 전략의 성과와 결과를 평가하기에 충분한 정보를 제공할 3년 치의 데이터를 가지고 있습니다.
늘 그렇듯이 이 전략에 대한 코드는 아래 설명에 있는 링크를 통해 다운로드할 수 있습니다. 원하는 경우 다른 시간 프레임을 실험할 수 있지만 이 테스트에는 15분의 시간 프레임을 사용합니다. 시간이 짧을수록 잡음과 변동이 증가하여 제어하기가 더 어려울 수 있습니다.
이 전략은 약세 또는 강세 신호일 수 있는 삼키는 패턴을 식별하는 데 중점을 둡니다. 신호를 세분화하기 위해 두 가지 조건을 추가합니다. 첫 번째 조건은 최소 삼켜지는 높이로 이전 캔들의 종가와 삼켜지는 초의 시가의 차이입니다. 우리는 신호를 확인하기 위해 삼키는 양초의 시가에 대한 최소 거리 요구 사항을 설정할 것입니다. 즉, 개장 가격은 최소 삼키는 높이보다 높아야 합니다.
두 번째 조건은 최대 캔들 테일 길이로, 캔들의 테일 또는 심지의 길이를 말합니다. 최대 테일 길이에 대한 제한을 설정하고 지정된 매개변수보다 작은지 확인합니다. 이 조건은 특정 패턴을 필터링하는 데 도움이 됩니다.
거래 시간 내내 신호의 수를 늘리기 위해 일반적인 침몰 패턴에 변형을 도입할 것입니다. 하나의 양초가 이전 양초를 삼키도록 엄격하게 요구하는 대신, 우리는 두 개 이상의 연속 양초가 반대 방향에 있고 삼키는 조건을 충족하는 한 삼키기를 달성하도록 허용할 것입니다. 삼키는 데 허용되는 양초의 수는 코드에서 변수가 되어 유연성과 실험을 허용합니다.
이 시점에서 프로그램 작성을 시작하고 백테스팅을 통해 결과를 테스트할 수 있습니다. 이 데모에서는 Jupyter Notebook 파일을 사용합니다. 먼저 read_csv 함수를 사용하여 기록 데이터를 df_spy라는 DataFrame에 로드합니다. 15분 기간과 2019년부터 2022년까지의 날짜 범위를 지정합니다. DataFrame의 인덱스는 GMT 시간 열로 설정됩니다.
다음으로 DataFrame과 현재 캔들의 인덱스라는 두 가지 매개변수를 사용하는 is_engulfing이라는 함수를 정의합니다. 이 기능은 양초가 삼키는 패턴을 달성하는지 여부를 테스트합니다. 삼키는 패턴, 삼키기 차이 및 최대 양초 꼬리 길이를 달성하기 위해 허용되는 최대 양초 수에 대한 매개변수를 설정합니다. 이 함수는 약세 및 강세 삼킴 패턴에 대한 다양한 조건을 확인하고 약세의 경우 1, 강세 신호의 경우 2의 신호를 반환합니다.
움직임이 없는 양초(높은 값이 낮은 값과 같은 경우)를 필터링하여 DataFrame의 복사본을 만듭니다. 이 단계는 주말과 공휴일을 제거합니다. 필터링된 데이터를 df라는 DataFrame에 저장합니다. 또한 각 행/초에 대한 신호를 저장하기 위해 신호라는 새 목록을 정의합니다.
DataFrame df의 각 행에 대해 해당 인덱스 및 DataFrame을 매개 변수로 사용하여 is_engulfing 함수를 사용하여 신호를 계산합니다. 신호 목록에 신호를 저장합니다. 마지막으로 신호 목록을 DataFrame의 새 열로 추가합니다.
신호를 시각화하기 위해 캔들 아래 또는 위에 점이 있는 캔들 차트를 플로팅하는 플로팅 기능을 사용하여 강세 또는 약세 신호를 나타냅니다. 특정 범위의 촛불을 선택하여 신호를 플로팅하고 관찰할 수 있습니다.
시각화를 용이하게 하기 위해 DataFrame의 인덱스를 정수 인덱스로 재설정하고 날짜/GMT 시간 인덱스를 제거합니다. 그런 다음 신호를 플로팅하고 관찰할 양초 범위를 선택합니다.
다음은 캔들스틱 차트를 사용하여 거래 전략을 백테스팅하는 것과 관련된 단계를 요약한 것입니다.
데이터 준비 : 각 기간(예: 분, 시간, 일)에 대한 시가, 고가, 저가 및 종가를 포함하는 원하는 금융 상품(예: 주식, 암호화폐)에 대한 과거 가격 데이터를 얻습니다. 데이터가 쉽게 분석할 수 있는 형식인지 확인합니다.
전략 정의 : 캔들스틱 패턴을 기반으로 거래 전략을 정의합니다. 예를 들어, 강세를 삼키는 패턴과 같은 강세 패턴이나 별똥별과 같은 약세 패턴을 찾을 수 있습니다. 이러한 패턴을 기반으로 거래 시작 및 종료 규칙을 결정합니다.
신호 생성 : 과거 가격 데이터를 분석하고 정의된 전략에 따라 신호를 생성합니다. 시작 또는 종료 기준을 충족하는 특정 캔들스틱 패턴의 발생을 식별합니다.
포트폴리오 시뮬레이션 : 가상의 포트폴리오를 추적하여 거래 전략을 시뮬레이션합니다. 고정된 자본금으로 시작하고 생성된 신호를 기반으로 거래를 시뮬레이션합니다. 백테스팅 기간 내내 포트폴리오의 가치와 성과를 추적하십시오.
성과 평가 : 수익성, 위험 조정 수익률, 하락률 및 기타 관련 측정과 같은 다양한 지표를 사용하여 거래 전략의 성과를 평가합니다. 전략의 성과를 벤치마크 또는 대체 전략과 비교하여 효율성을 평가합니다.
시각화 : 캔들스틱 차트를 사용하여 백테스트 결과를 시각화합니다. 과거 가격 데이터를 플로팅하고 생성된 신호(진입 및 종료 지점)를 차트에 표시합니다. 이 시각화는 전략의 성과를 이해하고 개선이 필요한 영역을 식별하는 데 도움이 될 수 있습니다.
다음 단계를 따르면 캔들스틱 차트를 사용하여 거래 전략을 백테스트할 수 있습니다. 백테스팅은 과거 실적을 제공하며 미래의 결과를 보장하지 않는다는 점에 유의해야 합니다. 또한 거래 전략을 개발하고 실행할 때 거래 비용, 미끄러짐, 시장 조건과 같은 다른 요소를 고려하는 것이 중요합니다.
This is a high profit trading strategy coded and tested in python. The strategy is easy to use and suitable for beginners, it was tested on SP500 stock marke...
여러분, 안녕하세요! Huffman의 재고 되돌림 막대에 대한 세 번째 비디오에 오신 것을 환영합니다. 이 전략은 여러 거래 대회에서 우승했기 때문에 몇 달 또는 더 오랜 기간 동안 긍정적인 수익을 제공할 수 있는 자동화된 버전을 만들려고 생각했습니다. 이 비디오를 간결하게 유지하려면 전략을 자세히 설명하는 이전 두 비디오를 시청하는 것이 좋습니다. 설명에서 해당 비디오에 대한 링크를 찾을 수 있습니다.
간단히 말해서 전략에는 되돌림 막대를 식별하고 추세 정의를 위한 특정 기울기를 유지하는 것이 포함됩니다. 상승 추세에서는 막대의 특정 모양을 찾고 하락 추세에서는 되돌림 막대의 반전된 모양을 찾습니다. 하지만 이번 영상에서는 조건을 하나 더 추가하겠습니다. 되돌림 막대는 이전 막대와 미래 막대보다 높거나(상승 추세에서) 낮아야 합니다(하락 추세에서). 본질적으로 우리는 추세를 되돌리려는 판매자 또는 구매자의 강력한 반응을 나타내는 피벗 포인트 역할을 하는 되돌림 막대를 찾고 있습니다.
이 추가 조건을 알고리즘 거래 전략에 구현하는 것은 개념을 설명하는 것보다 더 어렵습니다. 표시된 예에서 상승 추세가 있고 높은 피벗 포인트 역할을 하는 Huffman 되돌림 막대를 식별합니다. 또한, 우리는 이 Huffman 막대의 고점을 넘어선 돌파를 관찰하여 상승 추세가 계속될 가능성이 있음을 나타냅니다. 이러한 모든 조건을 Python 알고리즘에 통합하고 이전 비디오에서 얻은 결과를 개선하는지 평가합니다.
간략한 개요를 제공하기 위해 2003년부터 2022년까지 1시간 동안 EUR/USD 통화 쌍의 과거 데이터를 로드합니다. 지수 이동 평균(EMA)과 평균 실제 범위(ATR)를 계산합니다. 손절매 및 이익 실현 값을 설정하는 데 유용합니다. Huffman 전략의 조건 중 하나이므로 EMA의 기울기를 계산합니다. 또한 Huffman 캔들의 높음 또는 낮음과 비교할 캔들의 수를 결정하는 총 신호 백 캔들(왼쪽 및 오른쪽)이라는 두 가지 새로운 매개변수를 도입했습니다.
알고리즘은 상승 추세 또는 하락 추세에서 허프만 막대를 식별하기 위한 조건을 정의합니다. 이 비디오에서는 Huffman 막대가 피벗 포인트 역할도 하는지 확인하기 위해 추가 조건을 추가합니다. Huffman 막대의 저점(하락 추세) 또는 고점(상승 추세)을 지정된 범위 내 이전 및 미래 캔들과 비교합니다. 조건이 충족되면 하락 추세에 1, 상승 추세에 2 값을 할당하고 신호를 데이터 프레임의 "tot 신호"라는 새 열에 저장합니다.
알고리즘이 올바르게 작동하는지 확인하기 위해 Huffman 막대를 나타내는 자주색 점을 시각화하여 차트에 신호를 플로팅합니다. 알고리즘이 특성에 따라 막대를 올바르게 식별하고 있음을 확인할 수 있습니다.
다음으로 추세 방향에 대한 확인 신호로 EMA 신호를 통합합니다. 또한 Huffman 막대 위 또는 아래의 중단을 감지하고 그에 따라 신호를 할당하는 Huffman 중단 신호 기능을 구현합니다.
전략을 백테스트하기 위해 사용된 특정 조건 및 지표에 따라 달라질 수 있는 손절매 및 이익 실현 값을 설정합니다. 이 경우 ATR을 사용하여 손절매와 이익실현/손절매 비율을 1.5로 정의합니다. $10,000의 시작 보증금, 1:50의 증거금, 한 번에 한 거래로 백 테스트를 수행합니다.
처음에는 -70%의 수익률과 큰 손실로 결과가 만족스럽지 않습니다. 그러나 이것이 반드시 전략이나 지표가 본질적으로 나쁘다는 것을 의미하지는 않습니다. 이는 전략의 성과에 상당한 영향을 미칠 수 있는 자금 관리, 손절매 및 이익실현 가치 선택과 같은 다른 요소를 고려하는 것의 중요성을 강조합니다.
전략의 성과를 개선하기 위해 매개변수를 최적화하고 자금 관리 규칙을 조정할 수 있습니다. 이 예에서는 Huffman 막대의 높음 또는 낮음과 비교할 양초 수를 결정하는 총 신호 백 양초 매개변수를 최적화합니다. 2에서 10까지 다양한 값을 테스트하고 결과를 평가합니다.
매개변수를 최적화한 후 187%의 수익과 감소된 손실로 더 나은 성능을 얻습니다. 이것은 알고리즘 거래 전략에서 매개변수 최적화의 중요성을 보여줍니다.
전략을 더욱 강화하기 위해 추가 필터 또는 조건을 통합하는 것을 고려할 수 있습니다. 예를 들어 일일 또는 주간 차트와 같은 더 높은 기간을 사용하여 추세 필터를 구현할 수 있습니다. 이것은 거래가 전체 추세의 방향으로만 이루어지도록 하는 데 도움이 될 수 있습니다.
또한 가격 조치 또는 변동성에 따라 트레일링 스탑 또는 동적 이익실현 수준과 같은 다양한 출구 전략을 탐색할 수 있습니다. 이러한 추가 구성 요소를 테스트하고 알고리즘에 통합하여 잠재적으로 성능을 향상시킬 수 있습니다.
과거 성과가 미래 결과를 보장하지 않는다는 점에 유의해야 합니다. 전략은 과거 데이터와 강력한 백테스팅 방법을 사용하여 철저하게 테스트하고 검증해야 합니다. 실시간 거래 환경에서 전략을 실행할 때 거래 비용, 슬리피지 및 거래의 기타 실질적인 측면을 고려하는 것도 중요합니다.
결론적으로 Huffman의 재고 되돌림 막대 전략은 시장에서 잠재적 피벗 포인트와 추세 반전을 식별하는 데 유용한 도구가 될 수 있습니다. 추가 조건을 통합하고 매개변수를 최적화함으로써 전략의 성능을 향상시킬 수 있습니다. 그러나 포괄적이고 효과적인 거래 시스템을 개발하려면 철저한 테스트를 수행하고 자금 관리 및 출구 전략과 같은 다른 요소를 고려하는 것이 필수적입니다.
이것으로 Python에서 Huffman의 재고 되돌림 막대 전략을 구현하는 방법에 대한 비디오를 마무리합니다. 이 시리즈가 귀하의 거래 노력에 유익하고 도움이 되었기를 바랍니다. 질문이나 의견이 있으시면 언제든지 아래에 남겨주세요. 시청해 주셔서 감사합니다. 즐거운 거래 되세요!
This is a continuation of the previous videos, on price action trading strategy, about the Hoffman Inventory Retracement Bar indicator, and the previously in...
안녕하세요 여러분, Hoffman의 Inventory Bar 되돌림 방법의 연속에 오신 것을 환영합니다. 이전 영상에서는 이 방법을 소개하고 특정 캔들 모양과 가격 추세를 감지하는 코드에 대해 설명했습니다. 코드에 관심이 있는 경우 아래 설명에 제공된 링크에서 Jupyter Notebook 파일을 다운로드할 수 있습니다.
이 비디오에서는 이전에 거래 전략에서 식별한 Hoffman의 막대를 사용하고 시스템을 백테스트하고 결과를 평가합니다. 이 전략은 상승 추세 또는 하락 추세에서 특정 캔들 모양을 식별하고 이러한 캔들의 고점 이상 또는 저점 이하 돌파를 확인하는 데 중점을 둡니다.
상승세가 있는 경우를 예로 들어 보겠습니다. 위쪽 꼬리가 전체 양초 볼륨의 45% 이상인 호프만 되돌림 막대를 감지합니다. 이는 판매자가 상승세 움직임에 대응하려고 노력하고 있음을 나타냅니다. 그러나 다음 캔들에서는 종가가 이전 호프만 캔들의 고점보다 높은 것을 볼 수 있습니다. 이것은 구매자가 시장에서 여전히 강하고 가격을 계속 올릴 가능성이 있음을 시사합니다.
Python에서 이 전략을 구현하기 위해 각 캔들의 종가를 반복하고 호프만 되돌림 막대를 형성하는 이전 인접 캔들이 있는지 확인합니다. Hoffman's bar를 검색할 때 고려할 캔들 수를 결정하는 "back_candles"라는 매개변수를 정의합니다. 이 매개변수는 다른 값으로 실험하기 위해 조정할 수 있습니다.
호프만 캔들의 고점 이상 또는 저점 이하에서 돌파가 발생하면 현재 가격 추세에 따라 각각 매수 또는 매도 포지션을 취합니다. 또한 가격 추세에 따라 ATR(Average True Range) 또는 이전 캔들의 최고/최저 값을 기반으로 할 수 있는 손절매 및 이익 실현 값을 설정할 수 있습니다.
이제 Python으로 전략을 작성하고 몇 개월 간의 과거 데이터를 사용하여 백테스트하여 결과를 평가해 보겠습니다. Jupyter Notebook 파일에는 15분 기간 동안 yfinance 모듈을 사용하여 59일 데이터를 로드하는 것으로 시작하는 코드가 포함되어 있습니다. 지수 이동 평균(EMA), ATR 및 이동 평균의 기울기를 계산합니다.
다음으로 이동 평균의 기울기와 캔들 모양을 기반으로 호프만 막대를 식별합니다. 차트에서 신호를 시각화한 다음 Hoffman의 캔들 패턴을 검색할 때 고려할 현재 캔들의 인덱스와 백 캔들 수라는 두 가지 매개변수를 사용하는 "hofmann_break_signal"이라는 새 함수를 정의합니다.
함수 내에서 각 캔들을 반복하고 Hoffman's bar 및 브레이크아웃 조건이 충족되는지 확인합니다. 그렇다면 상승 추세에 대한 구매 신호 또는 하락 추세에 대한 판매 신호를 반환합니다.
이 함수를 데이터 프레임의 각 행에 적용하고 결과를 시리즈로 저장합니다. 마지막으로 신호를 시각화하고 Hoffman's candle이 제대로 감지되는지 확인합니다.
양초 감지를 확인한 후 전략을 백테스트합니다. 우리는 이전 캔들 중 최저 가격을 기준으로 손절매를 설정하고 손절매에 대한 비율을 사용하여 이익을 얻습니다. 이 예에서는 손절매 비율이 1.5인 ATR 기반 접근 방식을 사용합니다.
우리는 3개월간의 데이터를 통해 전략을 테스트하고 수익, 거래 성공 비율 및 자기자본 곡선을 계산합니다. 이 초기 테스트에서 수익률은 51%로 긍정적이지만 주식 곡선은 안정적인 증가를 보이지 않습니다.
또한 이전 양초의 최고가 또는 최저가를 고려하여 손절매 및 이익실현 수준을 설정하는 다른 방법을 모색합니다. 그러나 이 경우 수익률은 -4.8%로 마이너스이며 이는 자금 관리 전략이 제대로 수행되지 않았음을 나타냅니다.
이 전략은 이 비디오에서 최적화되지 않았습니다. Python 구현을 시연하기 위해 빠르게 개발되었습니다. 이 전략이 흥미롭다면 자유롭게 코드를 복사하고 추가 기술 지표를 추가하여 추가로 사용자 정의하십시오.
이 비디오를 시청해 주셔서 감사합니다. 다음 거래도 지켜봐주시고 안전하게 거래하시고 다음에 또 만나요!
This video is a continuation of the previous one on the Hoffman Inventory Retracement Bar Automated In Python. This algorithmic trading strategy enabled Hoff...
안녕하세요, 이번 영상에서는 Huffman's Inventory Retracement Bar를 소개하고 Python에서 감지를 자동화하는 방법을 시연합니다. 코드에 관심이 있는 경우 설명에 제공된 링크에서 Jupyter Notebook 파일을 다운로드할 수 있습니다.
이 전략의 첫 번째 규칙은 20일 이동 평균(MA) 기울기가 수평선과 45도 각도를 이루는지 확인하여 가격 추세를 감지하는 것입니다. 20일 MA가 예로 사용되었으며 이동 평균에 대해 다른 기간을 실험할 수 있습니다. 하락추세를 따르고 있다면 음의 기울기도 수평선과 최소 45도 각도를 이루어야 합니다. 그러나 이 45도 각도만을 신호로 사용하는 것은 수학적으로 의미가 없다는 점을 언급하는 것이 중요합니다. 거래 차트에서 이 각도를 정확하게 정의하는 것은 불가능하기 때문입니다. 알고리즘 트레이딩은 이 문제에 대한 해결책을 제공하며, 이에 대해서는 비디오 후반부에서 살펴보겠습니다.
이 전략의 두 번째 규칙은 테일이 전체 캔들 길이의 45% 이상인 캔들을 식별하는 것입니다. 예를 들어, 상승추세에서 우리는 캔들의 전체 움직임의 45%보다 더 큰 위쪽 꼬리를 가진 캔들을 찾습니다. 마찬가지로 하락추세에서는 하단 꼬리가 양초 볼륨의 45%보다 큰 양초를 찾습니다. 이 캔들 패턴은 판매자나 구매자가 추세에 저항하거나 반전하려는 순간을 나타냅니다. 캔들 패턴을 통해 시장 역학을 이해함으로써 맞춤형 전략을 정의할 수 있습니다.
예에서 우리는 이러한 특정 양초를 식별하고 시장이 높은 값을 넘어설 때까지 기다립니다. 양초가 허프만 양초의 고점 위로 종가를 형성하면 매도자가 매수 추세에 저항할 수 없고 매수자가 여전히 우위를 점하고 있음을 나타냅니다. 이는 상승세가 지속될 가능성이 높다는 것을 의미하며, 매수자 입장에서 롱포지션에 진입할 수 있습니다. 이러한 가정의 결과를 분석한 결과 대부분의 경우 가격이 우리의 예상을 따른다는 사실을 알게 되었습니다.
그러나 이 지표의 장기적인 결과를 확인하려면 Python 코드를 사용하여 백테스트를 수행해야 합니다. 이 비디오에서는 Huffman의 양초를 감지하고 발생 시 신호를 생성하는 방법을 설명하는 데 중점을 둡니다. 별도의 비디오에서 우리는 완전한 거래 전략에서 이 지표를 활용하고 적절한 백테스트를 수행할 것입니다.
시작하려면 yfinance 모듈을 사용하여 데이터를 다운로드합니다. 예제는 15분 기간으로 59일 동안 Euro/USD 데이터를 다운로드합니다. 더 많은 데이터가 필요한 경우 일괄적으로 다운로드하고 데이터 프레임을 연결할 수 있습니다. 데이터를 다운로드한 후 길이 20의 지수 이동 평균(EMA)을 계산하고 이동 평균의 기울기를 계산합니다. 기울기 값은 데이터 프레임의 slope_ema라는 새 열에 저장됩니다.
다음으로 각 행을 반복하여 신호를 계산합니다. 현재 캔들의 기울기가 음수이고 기울기 제한을 초과하여 하락세를 나타내는 경우 캔들의 하단 꼬리를 고-저 범위로 나눈 값이 백분율 제한보다 큰지 확인합니다. 이는 하락 추세에 있는 허프만 캔들을 의미하며 총 신호는 1로 설정됩니다. 마찬가지로 기울기가 양수이고 기울기 한계를 초과하여 상승 추세를 나타내고 캔들의 상단 꼬리를 고저 범위로 나눈 값은 다음과 같습니다. 백분율 제한보다 크면 상승 추세에 허프만 캔들이 있고 총 신호는 2로 설정됩니다.
신호를 계산하고 신호라는 목록에 결과를 저장하면 데이터 프레임에 tot_signal이라는 새 열로 추가합니다. 그런 다음 Plotly를 사용하여 그래프의 신호를 시각화할 수 있습니다.
다음은 코드가 없는 Huffman의 Inventory Retracement Bar 전략에 대한 단계별 설명입니다.
가격 데이터 다운로드: 주식 또는 통화 쌍과 같은 원하는 금융 상품에 대한 과거 가격 데이터를 얻습니다. Python의 yfinance와 같은 라이브러리를 사용하여 데이터를 검색할 수 있습니다.
지수 이동 평균(EMA) 계산: 특정 기간을 사용하여 종가의 EMA를 계산합니다. EMA는 가격 데이터의 추세 및 잠재적 반전을 식별하는 데 도움이 되는 일반적으로 사용되는 지표입니다.
기울기 계산: 각 데이터 포인트에서 EMA 선의 기울기를 계산합니다. 기울기는 추세의 방향과 강도를 나타냅니다. 기울기 또는 회귀와 같은 수학적 기법을 사용하여 기울기를 계산할 수 있습니다.
매개변수 설정: 신호 감지를 위한 매개변수를 정의합니다. Huffman의 Inventory Retracement Bar 전략에서는 일반적으로 기울기 제한과 꼬리 비율 제한을 설정합니다. 기울기 제한은 잠재적 신호의 최소 기울기 값을 결정하는 반면 꼬리 백분율 제한은 위쪽 또는 아래쪽 꼬리가 있어야 하는 촛불 범위의 최소 백분율을 설정합니다.
신호 식별: 데이터를 반복하고 현재 기울기와 이전 기울기를 비교합니다. 두 기울기가 모두 음의 기울기 한계보다 낮으면 현재 캔들의 하단 꼬리가 꼬리 비율 한계보다 큰지 확인합니다. 그렇다면 강세 신호로 표시하십시오. 마찬가지로 두 기울기가 양의 기울기 한계보다 높으면 현재 캔들의 위쪽 꼬리가 꼬리 백분율 한계보다 큰지 확인하십시오. 그렇다면 약세 신호로 표시하십시오.
신호 시각화: 가격 데이터의 차트 또는 그래프를 생성합니다. Huffman의 양초를 시각화하기 위해 차트에 신호를 플로팅합니다. Plotly 또는 Matplotlib와 같은 플로팅 라이브러리를 사용하여 차트를 만들고 신호 지점을 표시할 수 있습니다.
전략은 이러한 단계에 국한되지 않으며 요구 사항 및 거래 기본 설정에 따라 맞춤화하고 세분화할 수 있습니다. 또한 손절매 주문 또는 포지션 크기 조정과 같은 위험 관리 기술을 구현하는 것은 성공적인 거래에 필수적입니다.
This video details the IRB or the inventory retracement bar as described and used by Hoffman and the algorithm that detects this bar in an automated method i...
This video details the head and shoulders candles or candlesticks pattern, and an algorithm is automated in Python language to detect this specific form of c...
이 비디오에서는 특정 알고리즘을 사용하여 삼각형 패턴을 자동으로 감지하는 방법을 살펴봅니다. 가격 변동 삼각형의 다양한 모양을 감지하는 간단한 방법을 제시하고 외환 데이터에서 이를 테스트하기 위해 Python 코드를 작성합니다. 마지막에는 발견된 패턴을 플롯하여 결과를 시각화합니다. 코딩 부분이 궁금하신 분들은 영상 설명에 제공된 링크에서 Python 코드가 포함된 Jupyter Notebook 파일을 다운로드 받으실 수 있습니다.
삼각형 패턴은 트레이딩 전략에 사용될 때 트레이더에게 특히 중요합니다. 예를 들어, 일부 트레이더는 삼각형 돌파를 거래합니다. 표시된 예에서 가격은 돌파 방향의 미래 추세를 따릅니다. 한 예에서 가격은 하락 추세에 따라 삼각형 가장자리를 벗어났습니다. 또 다른 예에서 가격은 상승 추세에 따라 삼각형 가장자리를 벗어났습니다. 두 경우 모두 돌파 추세가 지속되었습니다.
방법의 단계는 다음과 같습니다.
피벗 포인트 계산: 피벗 포인트는 이웃보다 큰 가격 값입니다. 피벗 저점의 경우 캔들의 저점은 그 전후에 지정된 수의 캔들의 저점보다 낮아야 합니다. 피벗 고점의 경우 캔들의 고점은 그 전후에 지정된 수의 캔들의 고점보다 높아야 합니다.
선형 기울기에 최대값과 최소값 맞추기: 최대값의 경우 높은 값을 비교하고 그 전후에 지정된 양초 수보다 높은 값을 가진 중앙 양초를 찾습니다. 미니마의 경우 낮은 값을 비교하고 그 전후에 지정된 양초 수보다 낮은 낮은 값을 가진 중앙 양초를 찾으십시오.
삼각형 형태 감지: 원하는 삼각형 형태에 따라 최대값과 최소값의 기울기를 기반으로 패턴을 식별합니다. 예를 들어 최대 기울기가 음수이고 최소 기울기가 양수일 때 수렴 삼각형을 감지할 수 있습니다. 하강 삼각형은 최대 기울기가 음수이고 최소 기울기가 0 또는 수평선에 가까울 때 감지될 수 있습니다.
이제 Python으로 코드를 작성하여 이 메서드를 구현하고 어떻게 작동하는지 살펴보겠습니다. Jupyter Notebook 파일에는 데이터 가져오기, 정리, 피벗 포인트 계산, 피벗 양초 시각화 및 삼각형 패턴 감지를 위한 코드가 포함되어 있습니다. Pandas, NumPy 및 Plotly와 같은 라이브러리를 사용하여 데이터 조작 및 시각화 작업을 처리합니다.
필요한 라이브러리와 데이터를 가져온 후 지정된 이웃 수를 기반으로 피벗 포인트를 식별하는 "pivot_id"라는 함수를 정의합니다. 이 함수는 "pivot"이라는 새 열을 데이터 프레임에 추가하여 양초가 피봇 로우(1)인지 피벗 하이(2)인지를 나타냅니다.
그런 다음 "points_position"이라는 함수를 정의하여 양초를 표시하고 피벗 상태에 따라 위와 아래에 점을 추가합니다. 이 함수는 "point_position" 열을 사용하여 포인트의 y 좌표를 결정합니다.
Plotly 라이브러리를 사용하여 양초와 피벗 포인트를 플로팅하여 결과를 시각화합니다. 이를 통해 피벗 포인트가 올바르게 식별되었는지 확인할 수 있습니다.
다음으로 삼각형 패턴을 감지하는 코드를 구현합니다. 특정 양초를 선택하고 그 앞의 지정된 수의 양초를 스캔하여 해당 영역에 삼각형 패턴이 있는지 확인합니다. 양초를 반복하고 최대값과 최소값의 좌표를 별도의 NumPy 배열에 저장합니다. 그런 다음 선형 회귀를 사용하여 이 점을 선형 기울기에 맞추고 최대값과 최소값에 대한 기울기를 계산합니다.
양초, 피벗 포인트, 최대값과 최소값의 기울기를 플로팅하여 삼각형 패턴을 시각화합니다. 상관 계수(r_min 및 r_max)와 같이 삼각형 모양에 대해 정의된 조건을 확인하여 삼각형 패턴이 있는지 확인할 수 있습니다. 조건이 충족되면 플롯에 삼각형 패턴을 표시합니다.
마지막으로 데이터 세트의 모든 양초를 반복하고 삼각형 패턴을 감지하는 프로세스를 반복합니다. 패턴이 발견될 때마다 삼각형의 좌표를 나중에 시각화하기 위해 별도의 목록에 저장합니다.
코드 끝에서 Plotly를 사용하여 양초, 피벗 포인트 및 감지된 삼각형 패턴을 플로팅합니다. 이것은 가격 데이터에서 식별된 삼각형의 시각적 표현을 제공합니다.
코드를 실행하고 플롯을 검사하여 감지된 삼각형 패턴을 확인하고 모양을 분석할 수 있습니다. 이 정보는 삼각형 패턴을 거래 전략에 통합하려는 거래자에게 유용할 수 있습니다.
Jupyter Notebook 파일에 제공된 코드는 삼각형 패턴 감지의 가능한 구현 중 하나일 뿐입니다. 이 문제에 접근하는 다양한 방법이 있으며 다양한 알고리즘을 탐색하거나 특정 요구 사항에 맞게 기존 코드를 수정할 수 있습니다.
This video details the algorithm for triangle price pattern detection in python, this technical indicator can be programmed in python to detect all shapes of...
여러분, 안녕하세요! 이번 영상에서는 ADX(Average Directional Index)와 RSI(Relative Strength Indicator)를 기반으로 다른 확인 지표와 함께 스컬프팅 전략에 대한 자세한 테스트를 진행합니다. 이 전략은 스캘핑에 대한 수익성 있는 접근 방식으로 광고됩니다. 우리는 우리가 설명할 알고리즘에 의해 자동으로 생성되는 가격 차트의 빨간색 화살표 바로 아래에 있는 보라색 점에 초점을 맞출 것입니다.
이 특정 예에서 자주색 점은 매도 신호를 나타내며 이러한 신호 뒤에 가격 하락이 따른다는 점은 주목할 가치가 있습니다. 이는 이러한 신호가 거래에서 승리하는 결과를 가져왔기 때문에 이 전략이 유망함을 시사합니다. 코딩 측면을 더 자세히 알아보려면 설명에 제공된 링크에서 Jupyter Notebook 파일인 Python 코드를 다운로드할 수 있습니다.
우리의 목표는 우리가 잠자는 동안 거래를 설정하고, 코드를 실행 상태로 두고, 잠재적으로 이익을 얻을 수 있도록 Python에서 자동화된 조각 전략을 개발하는 것입니다. 그러나 성공을 달성하는 것이 처음에 들리는 것처럼 간단하지 않을 수 있음을 인정하는 것이 중요합니다.
이 특정 전략에 권장되는 대로 5분의 시간 프레임에서 테스트를 시작할 것입니다. 가격 추세를 결정하기 위해 50 지수 이동 평균(EMA)을 활용합니다. 가격이 이 곡선 위에서 거래되면 상승 추세를 나타내며 매수 포지션에만 집중할 것입니다. 반대로 가격이 50 EMA 아래에서 거래되면 하락세를 나타내며 우리는 매도 포지션을 독점적으로 고려할 것입니다.
또한 RSI를 기간 3으로 통합하고 트리거 수준을 20과 80으로 설정합니다. RSI가 20 아래로 떨어지면 시장이 과매도 상태임을 시사하여 구매 신호를 트리거합니다. 반대로 RSI가 80을 초과하면 시장이 과매수 상태임을 나타내며 매도 신호가 됩니다.
우리의 전략은 또한 ADX(Average Directional Index)를 5주기로 통합합니다. ADX가 30을 넘으면 강한 추세를 나타내며 상승 추세와 하락 추세 모두에 대한 확인 지표 역할을 합니다. 두 경우 모두 30 이상의 레벨을 검색합니다.
이러한 모든 조건이 충족되면 신호의 첫 번째 부분이 생성됩니다. 이 신호를 더 검증하기 위해 우리는 양초 패턴 접근 방식을 사용할 것입니다. 특히 추세와 일치하는 삼키는 양초를 검색합니다. 추세가 상승하면 우리는 완고한 양초를 찾을 것입니다. 추세가 하향이면 우리는 약세를 뒤덮는 양초를 찾을 것입니다.
다행스럽게도 이러한 모든 지표는 Python에서 자동화되고 과거 데이터에서 테스트될 수 있습니다. 우리가 사용할 예제는 데이터 세트에서 무작위로 선택되었습니다. 매도 신호에 이어 가격이 하락하는 경향이 있는 반면 매수 신호에 이어 가격이 상승하는 경우가 많기 때문에 초기 관찰 결과는 긍정적인 신호를 나타냅니다.
이 전략을 궁극적인 테스트에 적용하기 위해 우리는 Python을 사용하여 백 테스트를 수행하고 결과에 따라 실행 가능성을 결정할 것입니다. 특히 5분 캔들스틱을 사용하여 2019년부터 2022년까지 EUR/USD 통화 쌍에 대한 과거 데이터를 가져올 것입니다. 또한 주말 및 공휴일과 같이 거래 활동이 없는 기간을 제거하여 데이터를 정리합니다.
Pandas TA(기술 분석) 패키지를 사용하여 데이터 프레임에 4개의 열을 추가합니다. 50 EMA, 기간이 3인 RSI, 기간이 5인 ADX 및 ATR(Average True Range)입니다. 후자는 정지 손실 거리를 계산하는 데 활용됩니다. EMA 추세 신호는 양초가 50 EMA 곡선 아래 또는 위에서 거래되는지 여부를 나타내어 우리가 하락세에 있는지 아니면 상승세에 있는지를 각각 결정합니다.
하락 추세에 있는 경우 RSI가 과매도 상태를 나타내는 20 미만인지 확인합니다. 하락 추세와 과매도 조건이 모두 충족되면 매도 신호가 생성됩니다.
마찬가지로 상승추세에 있는 경우 RSI가 과매수 상태를 나타내는 80 이상인지 확인합니다. 상승 추세와 과매수 조건이 모두 충족되면 매수 신호가 생성됩니다.
이러한 신호를 추가로 검증하기 위해 트렌드와 일치하는 삼키는 캔들 패턴을 찾을 것입니다. 매도 신호의 경우, 현재 캔들의 몸체가 이전 캔들의 몸체를 아래쪽 방향으로 완전히 감싸고 있는 하락형 캔들을 찾을 것입니다. 매수 신호의 경우, 현재 캔들의 몸체가 이전 캔들의 몸체를 위쪽 방향으로 완전히 감싸고 있는 상승형 캔들을 찾을 것입니다.
신호가 생성되면 ATR(Average True Range)을 사용하여 손절매 거리를 계산합니다. ATR은 지정된 기간 동안 평균 가격 범위의 추정치를 제공하여 합리적인 손절매 수준을 결정하는 데 도움이 될 수 있습니다.
백테스팅 단계에서 과거 데이터를 반복하고 이러한 규칙을 적용하여 거래 신호를 생성하고 평가합니다. 각 신호에 대해 신호가 생성된 후 다음 캔들의 시작 가격에 포지션을 입력한다고 가정하여 거래를 시뮬레이션합니다. 또한 특정 보상 대 위험 비율을 기반으로 고정 이익실현 수준을 정의합니다.
시뮬레이션 중에 각 거래의 손익을 추적하고 총 이익, 총 손실, 승률 및 거래당 평균 수익과 같은 주요 성과 지표를 계산합니다. 이는 전략의 효율성을 평가하고 수익성을 결정하는 데 도움이 됩니다.
과거 데이터에 대한 백테스팅 결과가 미래의 성능을 보장하지 않는다는 점에 유의해야 합니다. 시장 상황은 변할 수 있으며 과거에 잘 통했던 전략이 미래에는 그렇게 효과적이지 않을 수 있습니다. 따라서 실시간 시장 상황에 따라 거래 전략을 지속적으로 평가하고 조정하는 것이 중요합니다.
결론적으로 ADX(Average Directional Index), RSI(Relative Strength Indicator) 및 삼키는 양초 패턴을 기반으로 한 조각 전략을 설명했습니다. 우리는 Python을 사용하여 이 전략을 자동화하고 과거 데이터에 대한 백테스팅을 수행하는 프로세스에 대해 논의했습니다. 백테스트 결과는 전략의 성과에 대한 통찰력을 제공하고 스캘핑에 대한 수익성 있는 접근 방식으로서의 실행 가능성을 평가하는 데 도움이 됩니다.
This is a backtested strategy using the ADX and the RSI, the algotrading code is built in python and the backtest is conducted using backtesting.py package. ...
오늘 우리는 대량 거래 전략을 테스트하면서 흥미진진한 여정을 시작합니다. 이 특정 전략은 일일 시간 프레임에서 작동하며 이론적으로 최소한의 위험을 수반하기 때문에 안전하다고 알려져 있습니다. 볼륨 및 기타 기술적 지표에 의존하기 때문에 "볼륨 거래 전략"이라고 적절하게 명명했습니다.
우리의 목표는 최대 18년에 걸친 과거 데이터를 사용하여 이 전략을 자동으로 테스트할 수 있는 코드를 개발하는 것입니다. 그렇게 함으로써 우리는 전략의 성과를 포괄적으로 이해할 수 있습니다. 코딩 측면에 관심이 있는 사용자는 비디오 설명에서 Jupyter Notebook Python 파일을 찾을 수 있습니다. 이 테스트에 사용할 전체 파일을 다운로드할 수 있는 링크가 있습니다.
먼저 200일 지수 이동 평균(EMA)을 첫 번째 지표로 활용합니다. 가격이 이 곡선 아래에서 거래되면 하락세를 나타내고 200 EMA 위에서 거래되면 상승세를 나타냅니다. 우리의 첫 번째 규칙은 간단합니다. 하락 추세를 식별하면 매도 포지션만 고려하고 상승 추세의 경우 매수 포지션에만 집중합니다.
이제 구체적인 전략을 살펴보겠습니다. 우리는 우세한 추세에 반하여 이동하는 4개의 연속 캔들을 검색할 것입니다. 즉, 가격을 이동 평균에 더 가깝게 되돌립니다. 사용자의 선호도에 따라 양초의 수를 조정할 수 있다는 점에 유의하는 것이 중요합니다. Jupyter Notebook에서는 언제든지 이 매개변수를 수정할 수 있는 유연성을 제공했습니다. 지금은 최소 4개의 양초를 사용합니다.
다음으로 추세의 방향과 일치해야 하는 다음 캔들을 살펴봅니다. 예를 들어 하락세에 있는 경우 약세 캔들을 찾습니다. 거래일이 끝날 때 캔들이 닫히면 볼륨을 확인합니다. 거래량이 이전 캔들보다 많으면 하락 추세에서 매도 신호 역할을 합니다. 반대로 상승추세에서는 최소 4개의 연속적인 약세 양초와 이전 양초보다 거래량이 많은 강세 양초를 찾습니다. 이는 구매 포지션을 의미합니다.
이제 손절매와 이익 실현 수준을 결정하는 복잡한 부분이 있습니다. 이 비디오에서는 두 가지 접근 방식을 살펴보고 그 결과를 평가합니다. 첫 번째 방법은 매도 또는 매수 포지션에서 ATR의 두 배 또는 세 배와 같은 ATR(Average True Range) 관련 손절매 거리를 사용하는 것입니다. 두 번째 방법은 이전 몇 개의 캔들 중 가장 높은 것을 하락세 및 매도 포지션에 대한 손절매로 간주합니다. 손절매를 설정하기 위해 고려해야 할 양초의 수는 Python 프로그램의 변수이므로 다양한 시나리오를 실험하고 테스트할 수 있습니다. 일반적으로 거래 신호를 확인하는 데 사용되는 숫자와 유사한 4개의 양초로 시작합니다. 상승추세 및 구매 포지션을 위해 우리는 이전 몇 개의 캔들 중에서 가장 낮은 저점을 찾습니다.
이제 코드를 살펴보고 모든 것이 어떻게 함께 작동하는지 살펴보겠습니다. Jupyter Notebook 파일에서 2003년부터 2022년까지 일일 EUR/USD 환율이 포함된 CSV 데이터 파일을 읽는 데 사용할 Pandas를 포함하여 필요한 라이브러리를 가져오는 것으로 시작합니다. 또한 다음과 같은 다른 자산에 대한 데이터를 로드합니다. 아마존, 이베이, 폭스바겐 주식, 우리는 주식 시장에서도 이 전략을 테스트할 계획입니다. 일일 데이터로 작업하고 있기 때문에 초기 데이터 세트는 6,858개의 행으로 구성되며 데이터 정리 프로세스 중에 더 줄어듭니다. 또한 열 제목이 요구 사항과 일치하는지 확인하고 서로 다른 데이터 파일 간의 일관성을 위해 이름을 "시간", "열기", "높음", "낮음", "닫기" 및 "볼륨"으로 바꿉니다.
차트에 신호를 그린 후 손절매 및 이익실현 수준을 정의하는 단계로 넘어갑니다. 이 예제에서는 두 가지 방법을 테스트합니다. 첫 번째 방법은 ATR(Average True Range)을 사용하여 손절매 거리를 결정하는 것입니다. 손절매는 진입점에서 ATR의 특정 배수로 설정됩니다. 두 번째 방법은 지정된 수의 이전 캔들 중에서 매도 포지션의 최고점 또는 매수 포지션의 최저점을 고려하여 손절매 수준을 결정하는 것입니다.
손절매 및 이익실현 수준이 정의되면 각 거래에 대한 손익(P&L)을 계산합니다. 총 신호가 매수 또는 매도 신호인지 확인하고 그에 따라 손익을 계산합니다. 매수 신호인 경우 다음 캔들의 종가와 진입가의 차이로 P&L을 계산합니다. 매도 신호일 경우 진입가와 다음 캔들의 종가의 차이로 P&L을 계산합니다.
그런 다음 누적 손익은 개별 거래 손익을 합산하여 계산됩니다. 또한 긍정적인 P&L을 기반으로 총 거래 수와 승률(성공한 거래의 백분율)을 계산합니다.
마지막으로 총 손익, 거래 수, 승률을 포함한 결과를 출력합니다.
Jupyter Notebook에 제공된 코드를 사용하면 전략을 추가로 사용자 정의하고 테스트할 수 있습니다. 추세 결정을 위해 고려할 백 캔들 수, 가격 신호 생성을 위한 이전 캔들 수, 손절매 계산을 위한 ATR 배수, 손절매 레벨 결정을 위해 고려할 이전 캔들 수와 같은 매개변수를 수정할 수 있습니다.
이 코드는 200일 지수 이동 평균(EMA), 거래량 및 가격 움직임과 같은 기술 지표를 기반으로 거래량 거래 전략을 구현합니다. 지정된 과거 데이터 기간 동안 전략을 테스트하고 수익성 및 성과 지표를 계산합니다.
Welcome to my video on how to use the volume indicator for trading strategy analysis in Python. In this video, I will be sharing a daily timeframe volume tra...
오늘은 RSI(Relative Strength Index)를 기반으로 한 스캘핑 전략을 테스트해보려고 합니다. 이 전략은 지수 이동 평균(EMA)과 RSI라는 두 가지 지표를 통합합니다. 동영상 설명에 제공된 링크에서 다운로드할 수 있는 Python 코드를 사용하여 백테스팅을 수행합니다.
백 테스트를 위해 서로 다른 시간 프레임을 기반으로 하는 세 가지 버전의 전략을 사용할 것입니다. 하나는 1분 캔들, 다른 하나는 15분 캔들, 세 번째는 1시간 캔들입니다. 이 비디오의 초점은 15분 시간 프레임에 있지만 세 가지 버전을 모두 다룰 것입니다.
전략은 특정 규칙을 따릅니다. 먼저 200 EMA와 관련하여 현재 가격을 분석합니다. 가격이 200 EMA 이상에서 거래되면 상승 추세로 간주합니다. 반대로 가격이 200 EMA 아래에서 거래되면 하락세로 간주합니다. 상승추세에서는 매수 포지션만 찾고 하락추세에서는 매도 포지션만 찾습니다.
다음으로 두 연속 캔들의 RSI 값을 조사합니다. 처음에는 1분 시간 프레임에 대해 2개 캔들 RSI를 사용합니다. 그러나 몇 년 동안 1분 양초로 백테스팅하면 엄청난 양의 데이터가 생성되므로 15분 시간 프레임부터 시작하겠습니다. 이 경우 시간 프레임에 따라 RSI 길이를 3개 또는 4개 캔들로 조정할 수 있습니다. 1분 동안 우리는 2개 캔들 RSI와 10 미만 및 90 이상 테스트 수준을 사용할 것입니다.
상승 추세에서는 구매 포지션을 실행하기 전에 RSI가 10 아래로 떨어질 때까지 기다립니다. 판매 포지션의 경우 RSI가 90 이상으로 상승할 때까지 기다립니다. 이러한 RSI 수준은 거래의 진입점 역할을 합니다. 비디오는 전략이 가격 및 RSI 기준에 따라 진입 위치를 식별하는 방법에 대한 시각적 예를 제공합니다.
다음 단계는 거래에 대한 손절매 및 이익실현 가치를 결정하는 것입니다. 고정 거리 정지 손실, ATR 관련 정지 거리 또는 후행 정지 값과 같은 다양한 방법을 사용할 수 있습니다. 마찬가지로 이익실현은 고정된 거리로 설정하거나 특정 이익실현/손절매 비율로 손절매 거리와 관련하여 설정할 수 있습니다.
전략의 효과를 평가하기 위해 Python 코드를 작성하여 1~3년 간의 데이터에 대한 백테스팅을 수행합니다. 또한 편향을 피하기 위해 별도로 보관된 새로운 데이터에 대해 전략을 테스트하여 전략의 견고성을 확인하는 단계를 도입합니다.
비디오는 Jupyter 노트북에서 코드를 분석하는 과정을 진행합니다. 데이터를 로드하고, 볼륨이 0인 항목(주말 또는 공휴일 표시)을 제거하여 데이터를 정리하고, 200 EMA 및 RSI 값을 계산하는 것으로 시작합니다. ATR(Average True Range)도 잠재적인 손절매 거리 결정을 위해 계산됩니다.
필요한 신호가 계산되면 비디오는 차트에서 이러한 신호의 시각화를 보여줍니다. 가격 캔들, 200 EMA 곡선 및 진입 위치(매수 및 매도)를 플롯하여 지표의 동작을 시각적으로 분석합니다.
신호를 분석한 후 비디오는 수익성을 평가하기 위해 장기간에 걸쳐 전략을 백테스팅하는 것의 중요성을 설명합니다. 처음에는 이 전략을 더 짧은 기간에 걸쳐 테스트했지만 결과는 다양했습니다. 따라서 장기간에 걸친 백테스팅은 전략의 전반적인 효과를 평가하는 데 매우 중요합니다.
비디오는 상당한 기간 동안 전략의 성과를 백테스팅하고 확인해야 할 필요성을 강조합니다. 백 테스트의 최종 결과를 검토하여 전략이 수익성 있고 강력한지 여부를 확인할 수 있습니다.
An Automated RSI Scalping Strategy is presented and backtested using python algorithmic trading over 3 years of data showing positive returns. The Test deta...
이 Crypto Scalping Indicator가 실제로 작동합니까!
이 Crypto Scalping Indicator가 실제로 작동합니까!
오늘은 비트코인 시장의 백테스팅에서 VWAP(볼륨 가중 평균 가격)를 사용한 스컬프팅 전략을 살펴보겠습니다. 이 전략을 구현하고 결과를 분석하기 위해 Python 알고리즘을 작성합니다.
먼저 컨텍스트를 설정해 보겠습니다. VWAP는 동적 지원 및 저항 값을 제공하므로 알고리즘 거래를 위한 강력한 도구입니다. 사용되는 시간 프레임과 독립적으로 유지되므로 최적화할 매개 변수의 수가 줄어들기 때문에 알고리즘 거래에 유리합니다.
이 전략에서는 비트코인-미국 달러 거래 가격에 대해 15분 시간 프레임을 사용합니다. 100일 이동 평균(DMA)과 VWAP라는 두 가지 지표를 고려할 것입니다. 이러한 지표와 관련된 가격 변동을 분석하여 시장 추세를 결정할 수 있습니다. 일정 수의 캔들이 100 이평선 아래 또는 위에서 거래되면 각각 하락세 또는 상승세를 나타냅니다. 마찬가지로 양초가 VWAP 곡선 아래 또는 위에서 거래되면 추세 방향을 확인합니다.
상승세에서는 매수 포지션만 찾고 하락세에서는 매도 포지션에 집중합니다. 우리 포지션의 진입점은 가격이 VWAP 곡선에 대한 특정 고정 거리 내에 있을 때 트리거됩니다.
Python에서 이 전략을 구현하기 위해 pandas_ta 패키지를 사용하여 VWAP 및 100 DMA를 계산합니다. 그런 다음 데이터 프레임에 EMA 신호와 VWAP 신호라는 두 개의 새로운 열을 생성합니다. EMA 신호는 하락 추세 또는 상승 추세를 확인하기 위해 EMA 곡선 아래 또는 위로 떨어지는 백 캔들 수를 계산합니다. 마찬가지로 VWAP 신호는 VWAP 곡선 아래 또는 위에 있는 백 캔들 수를 계산합니다.
우리는 이러한 신호를 데이터 프레임의 전체 신호 열로 병합하여 구매 및 판매 위치의 트리거 역할을 합니다. 구매 포지션의 경우 총 신호가 2이고 열린 거래가 없는지 확인합니다. 또한 가격이 VWAP 곡선에 충분히 가까운지 확인합니다. 마찬가지로 매도 포지션의 경우 총 신호 1을 고려하고 VWAP 곡선에서 가격의 거리를 확인합니다.
매수(보라색) 및 매도(녹색) 신호와 함께 캔들을 플로팅하여 차트에 신호를 시각화할 수 있습니다.
전략을 백테스트하기 위해 변동성의 척도로 ATR(Average True Range)을 계산합니다. 손절 거리는 현재 ATR의 0.8배로 설정되고 이익실현 거리는 손절매 거리의 2배가 됩니다. 이러한 매개변수를 사용하여 손절매 및 이익 실현 값을 고려하여 구매 및 판매 포지션을 트리거할 수 있습니다. 우리는 $100,000의 현금 금액과 5의 레버리지로 시작할 것입니다.
백 테스트를 실행하면 거래 시스템의 결과를 관찰할 수 있습니다. 알고리즘은 3년 후 약 1,000만 달러의 최종 자본금으로 높은 수익률을 보여줍니다. 이에 비해 매수 후 보유 전략은 248%의 수익만 달성했습니다. 그러나 알고리즘의 성능이 변동하고 특정 기간 동안 어려움을 겪을 수 있다는 점에 유의하는 것이 중요합니다. 이는 변화하는 시장 상황에 대한 동적인 적응의 필요성을 강조합니다.
주식의 안정성을 평가하기 위해 수년에 걸쳐 주식 곡선을 그릴 수 있습니다. 이 알고리즘은 2년 동안 예외적으로 잘 수행되었지만 작년에는 문제에 직면했습니다. 이는 고정 매개변수에 의존하고 시장 변화에 적응하기 위해 조정이 필요할 수 있는 알고리즘의 수동적 특성을 강조합니다.
여기에 소개된 VWAP 기반 전략은 관심과 시간을 투자한 좋은 방법입니다. 몇 가지 제한 사항이 있음에도 불구하고 장기간에 걸쳐 상당한 수익을 입증했습니다. 추가 최적화 및 추가 필터 및 표시기 포함을 탐색하여 개선할 수 있습니다.
S&P 500에서 Python을 사용하여 주식 시장 전략을 백테스트하는 방법
S&P 500에서 Python을 사용하여 주식 시장 전략을 백테스트하는 방법
안녕하세요 여러분, 오늘은 S&P 500의 과거 데이터를 사용하여 간단한 스컬프팅 전략에 대한 자세한 테스트를 수행할 예정입니다. 전략의 기본 사항을 설명하고 백테스팅 목적으로 Python으로 코드를 작성합니다. 우리는 전략의 성과와 결과를 평가하기에 충분한 정보를 제공할 3년 치의 데이터를 가지고 있습니다.
늘 그렇듯이 이 전략에 대한 코드는 아래 설명에 있는 링크를 통해 다운로드할 수 있습니다. 원하는 경우 다른 시간 프레임을 실험할 수 있지만 이 테스트에는 15분의 시간 프레임을 사용합니다. 시간이 짧을수록 잡음과 변동이 증가하여 제어하기가 더 어려울 수 있습니다.
이 전략은 약세 또는 강세 신호일 수 있는 삼키는 패턴을 식별하는 데 중점을 둡니다. 신호를 세분화하기 위해 두 가지 조건을 추가합니다. 첫 번째 조건은 최소 삼켜지는 높이로 이전 캔들의 종가와 삼켜지는 초의 시가의 차이입니다. 우리는 신호를 확인하기 위해 삼키는 양초의 시가에 대한 최소 거리 요구 사항을 설정할 것입니다. 즉, 개장 가격은 최소 삼키는 높이보다 높아야 합니다.
두 번째 조건은 최대 캔들 테일 길이로, 캔들의 테일 또는 심지의 길이를 말합니다. 최대 테일 길이에 대한 제한을 설정하고 지정된 매개변수보다 작은지 확인합니다. 이 조건은 특정 패턴을 필터링하는 데 도움이 됩니다.
거래 시간 내내 신호의 수를 늘리기 위해 일반적인 침몰 패턴에 변형을 도입할 것입니다. 하나의 양초가 이전 양초를 삼키도록 엄격하게 요구하는 대신, 우리는 두 개 이상의 연속 양초가 반대 방향에 있고 삼키는 조건을 충족하는 한 삼키기를 달성하도록 허용할 것입니다. 삼키는 데 허용되는 양초의 수는 코드에서 변수가 되어 유연성과 실험을 허용합니다.
이 시점에서 프로그램 작성을 시작하고 백테스팅을 통해 결과를 테스트할 수 있습니다. 이 데모에서는 Jupyter Notebook 파일을 사용합니다. 먼저 read_csv 함수를 사용하여 기록 데이터를 df_spy라는 DataFrame에 로드합니다. 15분 기간과 2019년부터 2022년까지의 날짜 범위를 지정합니다. DataFrame의 인덱스는 GMT 시간 열로 설정됩니다.
다음으로 DataFrame과 현재 캔들의 인덱스라는 두 가지 매개변수를 사용하는 is_engulfing이라는 함수를 정의합니다. 이 기능은 양초가 삼키는 패턴을 달성하는지 여부를 테스트합니다. 삼키는 패턴, 삼키기 차이 및 최대 양초 꼬리 길이를 달성하기 위해 허용되는 최대 양초 수에 대한 매개변수를 설정합니다. 이 함수는 약세 및 강세 삼킴 패턴에 대한 다양한 조건을 확인하고 약세의 경우 1, 강세 신호의 경우 2의 신호를 반환합니다.
움직임이 없는 양초(높은 값이 낮은 값과 같은 경우)를 필터링하여 DataFrame의 복사본을 만듭니다. 이 단계는 주말과 공휴일을 제거합니다. 필터링된 데이터를 df라는 DataFrame에 저장합니다. 또한 각 행/초에 대한 신호를 저장하기 위해 신호라는 새 목록을 정의합니다.
DataFrame df의 각 행에 대해 해당 인덱스 및 DataFrame을 매개 변수로 사용하여 is_engulfing 함수를 사용하여 신호를 계산합니다. 신호 목록에 신호를 저장합니다. 마지막으로 신호 목록을 DataFrame의 새 열로 추가합니다.
신호를 시각화하기 위해 캔들 아래 또는 위에 점이 있는 캔들 차트를 플로팅하는 플로팅 기능을 사용하여 강세 또는 약세 신호를 나타냅니다. 특정 범위의 촛불을 선택하여 신호를 플로팅하고 관찰할 수 있습니다.
시각화를 용이하게 하기 위해 DataFrame의 인덱스를 정수 인덱스로 재설정하고 날짜/GMT 시간 인덱스를 제거합니다. 그런 다음 신호를 플로팅하고 관찰할 양초 범위를 선택합니다.다음은 캔들스틱 차트를 사용하여 거래 전략을 백테스팅하는 것과 관련된 단계를 요약한 것입니다.
데이터 준비 : 각 기간(예: 분, 시간, 일)에 대한 시가, 고가, 저가 및 종가를 포함하는 원하는 금융 상품(예: 주식, 암호화폐)에 대한 과거 가격 데이터를 얻습니다. 데이터가 쉽게 분석할 수 있는 형식인지 확인합니다.
전략 정의 : 캔들스틱 패턴을 기반으로 거래 전략을 정의합니다. 예를 들어, 강세를 삼키는 패턴과 같은 강세 패턴이나 별똥별과 같은 약세 패턴을 찾을 수 있습니다. 이러한 패턴을 기반으로 거래 시작 및 종료 규칙을 결정합니다.
신호 생성 : 과거 가격 데이터를 분석하고 정의된 전략에 따라 신호를 생성합니다. 시작 또는 종료 기준을 충족하는 특정 캔들스틱 패턴의 발생을 식별합니다.
포트폴리오 시뮬레이션 : 가상의 포트폴리오를 추적하여 거래 전략을 시뮬레이션합니다. 고정된 자본금으로 시작하고 생성된 신호를 기반으로 거래를 시뮬레이션합니다. 백테스팅 기간 내내 포트폴리오의 가치와 성과를 추적하십시오.
성과 평가 : 수익성, 위험 조정 수익률, 하락률 및 기타 관련 측정과 같은 다양한 지표를 사용하여 거래 전략의 성과를 평가합니다. 전략의 성과를 벤치마크 또는 대체 전략과 비교하여 효율성을 평가합니다.
시각화 : 캔들스틱 차트를 사용하여 백테스트 결과를 시각화합니다. 과거 가격 데이터를 플로팅하고 생성된 신호(진입 및 종료 지점)를 차트에 표시합니다. 이 시각화는 전략의 성과를 이해하고 개선이 필요한 영역을 식별하는 데 도움이 될 수 있습니다.
다음 단계를 따르면 캔들스틱 차트를 사용하여 거래 전략을 백테스트할 수 있습니다. 백테스팅은 과거 실적을 제공하며 미래의 결과를 보장하지 않는다는 점에 유의해야 합니다. 또한 거래 전략을 개발하고 실행할 때 거래 비용, 미끄러짐, 시장 조건과 같은 다른 요소를 고려하는 것이 중요합니다.
Python의 알고리즘 거래를 위한 가격 행동 전략
Python의 알고리즘 거래를 위한 가격 행동 전략
여러분, 안녕하세요! Huffman의 재고 되돌림 막대에 대한 세 번째 비디오에 오신 것을 환영합니다. 이 전략은 여러 거래 대회에서 우승했기 때문에 몇 달 또는 더 오랜 기간 동안 긍정적인 수익을 제공할 수 있는 자동화된 버전을 만들려고 생각했습니다. 이 비디오를 간결하게 유지하려면 전략을 자세히 설명하는 이전 두 비디오를 시청하는 것이 좋습니다. 설명에서 해당 비디오에 대한 링크를 찾을 수 있습니다.
간단히 말해서 전략에는 되돌림 막대를 식별하고 추세 정의를 위한 특정 기울기를 유지하는 것이 포함됩니다. 상승 추세에서는 막대의 특정 모양을 찾고 하락 추세에서는 되돌림 막대의 반전된 모양을 찾습니다. 하지만 이번 영상에서는 조건을 하나 더 추가하겠습니다. 되돌림 막대는 이전 막대와 미래 막대보다 높거나(상승 추세에서) 낮아야 합니다(하락 추세에서). 본질적으로 우리는 추세를 되돌리려는 판매자 또는 구매자의 강력한 반응을 나타내는 피벗 포인트 역할을 하는 되돌림 막대를 찾고 있습니다.
이 추가 조건을 알고리즘 거래 전략에 구현하는 것은 개념을 설명하는 것보다 더 어렵습니다. 표시된 예에서 상승 추세가 있고 높은 피벗 포인트 역할을 하는 Huffman 되돌림 막대를 식별합니다. 또한, 우리는 이 Huffman 막대의 고점을 넘어선 돌파를 관찰하여 상승 추세가 계속될 가능성이 있음을 나타냅니다. 이러한 모든 조건을 Python 알고리즘에 통합하고 이전 비디오에서 얻은 결과를 개선하는지 평가합니다.
간략한 개요를 제공하기 위해 2003년부터 2022년까지 1시간 동안 EUR/USD 통화 쌍의 과거 데이터를 로드합니다. 지수 이동 평균(EMA)과 평균 실제 범위(ATR)를 계산합니다. 손절매 및 이익 실현 값을 설정하는 데 유용합니다. Huffman 전략의 조건 중 하나이므로 EMA의 기울기를 계산합니다. 또한 Huffman 캔들의 높음 또는 낮음과 비교할 캔들의 수를 결정하는 총 신호 백 캔들(왼쪽 및 오른쪽)이라는 두 가지 새로운 매개변수를 도입했습니다.
알고리즘은 상승 추세 또는 하락 추세에서 허프만 막대를 식별하기 위한 조건을 정의합니다. 이 비디오에서는 Huffman 막대가 피벗 포인트 역할도 하는지 확인하기 위해 추가 조건을 추가합니다. Huffman 막대의 저점(하락 추세) 또는 고점(상승 추세)을 지정된 범위 내 이전 및 미래 캔들과 비교합니다. 조건이 충족되면 하락 추세에 1, 상승 추세에 2 값을 할당하고 신호를 데이터 프레임의 "tot 신호"라는 새 열에 저장합니다.
알고리즘이 올바르게 작동하는지 확인하기 위해 Huffman 막대를 나타내는 자주색 점을 시각화하여 차트에 신호를 플로팅합니다. 알고리즘이 특성에 따라 막대를 올바르게 식별하고 있음을 확인할 수 있습니다.
다음으로 추세 방향에 대한 확인 신호로 EMA 신호를 통합합니다. 또한 Huffman 막대 위 또는 아래의 중단을 감지하고 그에 따라 신호를 할당하는 Huffman 중단 신호 기능을 구현합니다.
전략을 백테스트하기 위해 사용된 특정 조건 및 지표에 따라 달라질 수 있는 손절매 및 이익 실현 값을 설정합니다. 이 경우 ATR을 사용하여 손절매와 이익실현/손절매 비율을 1.5로 정의합니다. $10,000의 시작 보증금, 1:50의 증거금, 한 번에 한 거래로 백 테스트를 수행합니다.
처음에는 -70%의 수익률과 큰 손실로 결과가 만족스럽지 않습니다. 그러나 이것이 반드시 전략이나 지표가 본질적으로 나쁘다는 것을 의미하지는 않습니다. 이는 전략의 성과에 상당한 영향을 미칠 수 있는 자금 관리, 손절매 및 이익실현 가치 선택과 같은 다른 요소를 고려하는 것의 중요성을 강조합니다.
전략의 성과를 개선하기 위해 매개변수를 최적화하고 자금 관리 규칙을 조정할 수 있습니다. 이 예에서는 Huffman 막대의 높음 또는 낮음과 비교할 양초 수를 결정하는 총 신호 백 양초 매개변수를 최적화합니다. 2에서 10까지 다양한 값을 테스트하고 결과를 평가합니다.
매개변수를 최적화한 후 187%의 수익과 감소된 손실로 더 나은 성능을 얻습니다. 이것은 알고리즘 거래 전략에서 매개변수 최적화의 중요성을 보여줍니다.
전략을 더욱 강화하기 위해 추가 필터 또는 조건을 통합하는 것을 고려할 수 있습니다. 예를 들어 일일 또는 주간 차트와 같은 더 높은 기간을 사용하여 추세 필터를 구현할 수 있습니다. 이것은 거래가 전체 추세의 방향으로만 이루어지도록 하는 데 도움이 될 수 있습니다.
또한 가격 조치 또는 변동성에 따라 트레일링 스탑 또는 동적 이익실현 수준과 같은 다양한 출구 전략을 탐색할 수 있습니다. 이러한 추가 구성 요소를 테스트하고 알고리즘에 통합하여 잠재적으로 성능을 향상시킬 수 있습니다.
과거 성과가 미래 결과를 보장하지 않는다는 점에 유의해야 합니다. 전략은 과거 데이터와 강력한 백테스팅 방법을 사용하여 철저하게 테스트하고 검증해야 합니다. 실시간 거래 환경에서 전략을 실행할 때 거래 비용, 슬리피지 및 거래의 기타 실질적인 측면을 고려하는 것도 중요합니다.
결론적으로 Huffman의 재고 되돌림 막대 전략은 시장에서 잠재적 피벗 포인트와 추세 반전을 식별하는 데 유용한 도구가 될 수 있습니다. 추가 조건을 통합하고 매개변수를 최적화함으로써 전략의 성능을 향상시킬 수 있습니다. 그러나 포괄적이고 효과적인 거래 시스템을 개발하려면 철저한 테스트를 수행하고 자금 관리 및 출구 전략과 같은 다른 요소를 고려하는 것이 필수적입니다.
이것으로 Python에서 Huffman의 재고 되돌림 막대 전략을 구현하는 방법에 대한 비디오를 마무리합니다. 이 시리즈가 귀하의 거래 노력에 유익하고 도움이 되었기를 바랍니다. 질문이나 의견이 있으시면 언제든지 아래에 남겨주세요. 시청해 주셔서 감사합니다. 즐거운 거래 되세요!
Python에서 되돌림 막대 거래 전략을 코딩하는 방법
Python에서 되돌림 막대 거래 전략을 코딩하는 방법
안녕하세요 여러분, Hoffman의 Inventory Bar 되돌림 방법의 연속에 오신 것을 환영합니다. 이전 영상에서는 이 방법을 소개하고 특정 캔들 모양과 가격 추세를 감지하는 코드에 대해 설명했습니다. 코드에 관심이 있는 경우 아래 설명에 제공된 링크에서 Jupyter Notebook 파일을 다운로드할 수 있습니다.
이 비디오에서는 이전에 거래 전략에서 식별한 Hoffman의 막대를 사용하고 시스템을 백테스트하고 결과를 평가합니다. 이 전략은 상승 추세 또는 하락 추세에서 특정 캔들 모양을 식별하고 이러한 캔들의 고점 이상 또는 저점 이하 돌파를 확인하는 데 중점을 둡니다.
상승세가 있는 경우를 예로 들어 보겠습니다. 위쪽 꼬리가 전체 양초 볼륨의 45% 이상인 호프만 되돌림 막대를 감지합니다. 이는 판매자가 상승세 움직임에 대응하려고 노력하고 있음을 나타냅니다. 그러나 다음 캔들에서는 종가가 이전 호프만 캔들의 고점보다 높은 것을 볼 수 있습니다. 이것은 구매자가 시장에서 여전히 강하고 가격을 계속 올릴 가능성이 있음을 시사합니다.
Python에서 이 전략을 구현하기 위해 각 캔들의 종가를 반복하고 호프만 되돌림 막대를 형성하는 이전 인접 캔들이 있는지 확인합니다. Hoffman's bar를 검색할 때 고려할 캔들 수를 결정하는 "back_candles"라는 매개변수를 정의합니다. 이 매개변수는 다른 값으로 실험하기 위해 조정할 수 있습니다.
호프만 캔들의 고점 이상 또는 저점 이하에서 돌파가 발생하면 현재 가격 추세에 따라 각각 매수 또는 매도 포지션을 취합니다. 또한 가격 추세에 따라 ATR(Average True Range) 또는 이전 캔들의 최고/최저 값을 기반으로 할 수 있는 손절매 및 이익 실현 값을 설정할 수 있습니다.
이제 Python으로 전략을 작성하고 몇 개월 간의 과거 데이터를 사용하여 백테스트하여 결과를 평가해 보겠습니다. Jupyter Notebook 파일에는 15분 기간 동안 yfinance 모듈을 사용하여 59일 데이터를 로드하는 것으로 시작하는 코드가 포함되어 있습니다. 지수 이동 평균(EMA), ATR 및 이동 평균의 기울기를 계산합니다.
다음으로 이동 평균의 기울기와 캔들 모양을 기반으로 호프만 막대를 식별합니다. 차트에서 신호를 시각화한 다음 Hoffman의 캔들 패턴을 검색할 때 고려할 현재 캔들의 인덱스와 백 캔들 수라는 두 가지 매개변수를 사용하는 "hofmann_break_signal"이라는 새 함수를 정의합니다.
함수 내에서 각 캔들을 반복하고 Hoffman's bar 및 브레이크아웃 조건이 충족되는지 확인합니다. 그렇다면 상승 추세에 대한 구매 신호 또는 하락 추세에 대한 판매 신호를 반환합니다.
이 함수를 데이터 프레임의 각 행에 적용하고 결과를 시리즈로 저장합니다. 마지막으로 신호를 시각화하고 Hoffman's candle이 제대로 감지되는지 확인합니다.
양초 감지를 확인한 후 전략을 백테스트합니다. 우리는 이전 캔들 중 최저 가격을 기준으로 손절매를 설정하고 손절매에 대한 비율을 사용하여 이익을 얻습니다. 이 예에서는 손절매 비율이 1.5인 ATR 기반 접근 방식을 사용합니다.
우리는 3개월간의 데이터를 통해 전략을 테스트하고 수익, 거래 성공 비율 및 자기자본 곡선을 계산합니다. 이 초기 테스트에서 수익률은 51%로 긍정적이지만 주식 곡선은 안정적인 증가를 보이지 않습니다.
또한 이전 양초의 최고가 또는 최저가를 고려하여 손절매 및 이익실현 수준을 설정하는 다른 방법을 모색합니다. 그러나 이 경우 수익률은 -4.8%로 마이너스이며 이는 자금 관리 전략이 제대로 수행되지 않았음을 나타냅니다.
이 전략은 이 비디오에서 최적화되지 않았습니다. Python 구현을 시연하기 위해 빠르게 개발되었습니다. 이 전략이 흥미롭다면 자유롭게 코드를 복사하고 추가 기술 지표를 추가하여 추가로 사용자 정의하십시오.
이 비디오를 시청해 주셔서 감사합니다. 다음 거래도 지켜봐주시고 안전하게 거래하시고 다음에 또 만나요!
알고리즘 트레이딩을 위해 파이썬으로 코딩된 되돌림 바코드
알고리즘 트레이딩을 위해 파이썬으로 코딩된 되돌림 바코드
안녕하세요, 이번 영상에서는 Huffman's Inventory Retracement Bar를 소개하고 Python에서 감지를 자동화하는 방법을 시연합니다. 코드에 관심이 있는 경우 설명에 제공된 링크에서 Jupyter Notebook 파일을 다운로드할 수 있습니다.
이 전략의 첫 번째 규칙은 20일 이동 평균(MA) 기울기가 수평선과 45도 각도를 이루는지 확인하여 가격 추세를 감지하는 것입니다. 20일 MA가 예로 사용되었으며 이동 평균에 대해 다른 기간을 실험할 수 있습니다. 하락추세를 따르고 있다면 음의 기울기도 수평선과 최소 45도 각도를 이루어야 합니다. 그러나 이 45도 각도만을 신호로 사용하는 것은 수학적으로 의미가 없다는 점을 언급하는 것이 중요합니다. 거래 차트에서 이 각도를 정확하게 정의하는 것은 불가능하기 때문입니다. 알고리즘 트레이딩은 이 문제에 대한 해결책을 제공하며, 이에 대해서는 비디오 후반부에서 살펴보겠습니다.
이 전략의 두 번째 규칙은 테일이 전체 캔들 길이의 45% 이상인 캔들을 식별하는 것입니다. 예를 들어, 상승추세에서 우리는 캔들의 전체 움직임의 45%보다 더 큰 위쪽 꼬리를 가진 캔들을 찾습니다. 마찬가지로 하락추세에서는 하단 꼬리가 양초 볼륨의 45%보다 큰 양초를 찾습니다. 이 캔들 패턴은 판매자나 구매자가 추세에 저항하거나 반전하려는 순간을 나타냅니다. 캔들 패턴을 통해 시장 역학을 이해함으로써 맞춤형 전략을 정의할 수 있습니다.
예에서 우리는 이러한 특정 양초를 식별하고 시장이 높은 값을 넘어설 때까지 기다립니다. 양초가 허프만 양초의 고점 위로 종가를 형성하면 매도자가 매수 추세에 저항할 수 없고 매수자가 여전히 우위를 점하고 있음을 나타냅니다. 이는 상승세가 지속될 가능성이 높다는 것을 의미하며, 매수자 입장에서 롱포지션에 진입할 수 있습니다. 이러한 가정의 결과를 분석한 결과 대부분의 경우 가격이 우리의 예상을 따른다는 사실을 알게 되었습니다.
그러나 이 지표의 장기적인 결과를 확인하려면 Python 코드를 사용하여 백테스트를 수행해야 합니다. 이 비디오에서는 Huffman의 양초를 감지하고 발생 시 신호를 생성하는 방법을 설명하는 데 중점을 둡니다. 별도의 비디오에서 우리는 완전한 거래 전략에서 이 지표를 활용하고 적절한 백테스트를 수행할 것입니다.
시작하려면 yfinance 모듈을 사용하여 데이터를 다운로드합니다. 예제는 15분 기간으로 59일 동안 Euro/USD 데이터를 다운로드합니다. 더 많은 데이터가 필요한 경우 일괄적으로 다운로드하고 데이터 프레임을 연결할 수 있습니다. 데이터를 다운로드한 후 길이 20의 지수 이동 평균(EMA)을 계산하고 이동 평균의 기울기를 계산합니다. 기울기 값은 데이터 프레임의 slope_ema라는 새 열에 저장됩니다.
다음으로 각 행을 반복하여 신호를 계산합니다. 현재 캔들의 기울기가 음수이고 기울기 제한을 초과하여 하락세를 나타내는 경우 캔들의 하단 꼬리를 고-저 범위로 나눈 값이 백분율 제한보다 큰지 확인합니다. 이는 하락 추세에 있는 허프만 캔들을 의미하며 총 신호는 1로 설정됩니다. 마찬가지로 기울기가 양수이고 기울기 한계를 초과하여 상승 추세를 나타내고 캔들의 상단 꼬리를 고저 범위로 나눈 값은 다음과 같습니다. 백분율 제한보다 크면 상승 추세에 허프만 캔들이 있고 총 신호는 2로 설정됩니다.
신호를 계산하고 신호라는 목록에 결과를 저장하면 데이터 프레임에 tot_signal이라는 새 열로 추가합니다. 그런 다음 Plotly를 사용하여 그래프의 신호를 시각화할 수 있습니다.
다음은 코드가 없는 Huffman의 Inventory Retracement Bar 전략에 대한 단계별 설명입니다.
가격 데이터 다운로드: 주식 또는 통화 쌍과 같은 원하는 금융 상품에 대한 과거 가격 데이터를 얻습니다. Python의 yfinance와 같은 라이브러리를 사용하여 데이터를 검색할 수 있습니다.
지수 이동 평균(EMA) 계산: 특정 기간을 사용하여 종가의 EMA를 계산합니다. EMA는 가격 데이터의 추세 및 잠재적 반전을 식별하는 데 도움이 되는 일반적으로 사용되는 지표입니다.
기울기 계산: 각 데이터 포인트에서 EMA 선의 기울기를 계산합니다. 기울기는 추세의 방향과 강도를 나타냅니다. 기울기 또는 회귀와 같은 수학적 기법을 사용하여 기울기를 계산할 수 있습니다.
매개변수 설정: 신호 감지를 위한 매개변수를 정의합니다. Huffman의 Inventory Retracement Bar 전략에서는 일반적으로 기울기 제한과 꼬리 비율 제한을 설정합니다. 기울기 제한은 잠재적 신호의 최소 기울기 값을 결정하는 반면 꼬리 백분율 제한은 위쪽 또는 아래쪽 꼬리가 있어야 하는 촛불 범위의 최소 백분율을 설정합니다.
신호 식별: 데이터를 반복하고 현재 기울기와 이전 기울기를 비교합니다. 두 기울기가 모두 음의 기울기 한계보다 낮으면 현재 캔들의 하단 꼬리가 꼬리 비율 한계보다 큰지 확인합니다. 그렇다면 강세 신호로 표시하십시오. 마찬가지로 두 기울기가 양의 기울기 한계보다 높으면 현재 캔들의 위쪽 꼬리가 꼬리 백분율 한계보다 큰지 확인하십시오. 그렇다면 약세 신호로 표시하십시오.
신호 시각화: 가격 데이터의 차트 또는 그래프를 생성합니다. Huffman의 양초를 시각화하기 위해 차트에 신호를 플로팅합니다. Plotly 또는 Matplotlib와 같은 플로팅 라이브러리를 사용하여 차트를 만들고 신호 지점을 표시할 수 있습니다.
전략은 이러한 단계에 국한되지 않으며 요구 사항 및 거래 기본 설정에 따라 맞춤화하고 세분화할 수 있습니다. 또한 손절매 주문 또는 포지션 크기 조정과 같은 위험 관리 기술을 구현하는 것은 성공적인 거래에 필수적입니다.
Python에서 거래 패턴을 자동화하는 방법 | 머리와 어깨 패턴
Python에서 거래 패턴을 자동화하는 방법 | 머리와 어깨 패턴
Python에서 헤드앤숄더 패턴 감지를 자동화하기 위해 텍스트에 설명된 알고리즘 단계를 따를 수 있습니다. 다음은 각 단계에 대한 자세한 설명입니다.
피벗 포인트 감지:
피벗 포인트 시각화:
머리와 어깨 패턴 감지:
Python의 삼각형 가격 패턴 감지 | 알고리즘 트레이딩 지표
Python의 삼각형 가격 패턴 감지 | 알고리즘 트레이딩 지표
이 비디오에서는 특정 알고리즘을 사용하여 삼각형 패턴을 자동으로 감지하는 방법을 살펴봅니다. 가격 변동 삼각형의 다양한 모양을 감지하는 간단한 방법을 제시하고 외환 데이터에서 이를 테스트하기 위해 Python 코드를 작성합니다. 마지막에는 발견된 패턴을 플롯하여 결과를 시각화합니다. 코딩 부분이 궁금하신 분들은 영상 설명에 제공된 링크에서 Python 코드가 포함된 Jupyter Notebook 파일을 다운로드 받으실 수 있습니다.
삼각형 패턴은 트레이딩 전략에 사용될 때 트레이더에게 특히 중요합니다. 예를 들어, 일부 트레이더는 삼각형 돌파를 거래합니다. 표시된 예에서 가격은 돌파 방향의 미래 추세를 따릅니다. 한 예에서 가격은 하락 추세에 따라 삼각형 가장자리를 벗어났습니다. 또 다른 예에서 가격은 상승 추세에 따라 삼각형 가장자리를 벗어났습니다. 두 경우 모두 돌파 추세가 지속되었습니다.
방법의 단계는 다음과 같습니다.
피벗 포인트 계산: 피벗 포인트는 이웃보다 큰 가격 값입니다. 피벗 저점의 경우 캔들의 저점은 그 전후에 지정된 수의 캔들의 저점보다 낮아야 합니다. 피벗 고점의 경우 캔들의 고점은 그 전후에 지정된 수의 캔들의 고점보다 높아야 합니다.
선형 기울기에 최대값과 최소값 맞추기: 최대값의 경우 높은 값을 비교하고 그 전후에 지정된 양초 수보다 높은 값을 가진 중앙 양초를 찾습니다. 미니마의 경우 낮은 값을 비교하고 그 전후에 지정된 양초 수보다 낮은 낮은 값을 가진 중앙 양초를 찾으십시오.
삼각형 형태 감지: 원하는 삼각형 형태에 따라 최대값과 최소값의 기울기를 기반으로 패턴을 식별합니다. 예를 들어 최대 기울기가 음수이고 최소 기울기가 양수일 때 수렴 삼각형을 감지할 수 있습니다. 하강 삼각형은 최대 기울기가 음수이고 최소 기울기가 0 또는 수평선에 가까울 때 감지될 수 있습니다.
이제 Python으로 코드를 작성하여 이 메서드를 구현하고 어떻게 작동하는지 살펴보겠습니다. Jupyter Notebook 파일에는 데이터 가져오기, 정리, 피벗 포인트 계산, 피벗 양초 시각화 및 삼각형 패턴 감지를 위한 코드가 포함되어 있습니다. Pandas, NumPy 및 Plotly와 같은 라이브러리를 사용하여 데이터 조작 및 시각화 작업을 처리합니다.
필요한 라이브러리와 데이터를 가져온 후 지정된 이웃 수를 기반으로 피벗 포인트를 식별하는 "pivot_id"라는 함수를 정의합니다. 이 함수는 "pivot"이라는 새 열을 데이터 프레임에 추가하여 양초가 피봇 로우(1)인지 피벗 하이(2)인지를 나타냅니다.
그런 다음 "points_position"이라는 함수를 정의하여 양초를 표시하고 피벗 상태에 따라 위와 아래에 점을 추가합니다. 이 함수는 "point_position" 열을 사용하여 포인트의 y 좌표를 결정합니다.
Plotly 라이브러리를 사용하여 양초와 피벗 포인트를 플로팅하여 결과를 시각화합니다. 이를 통해 피벗 포인트가 올바르게 식별되었는지 확인할 수 있습니다.
다음으로 삼각형 패턴을 감지하는 코드를 구현합니다. 특정 양초를 선택하고 그 앞의 지정된 수의 양초를 스캔하여 해당 영역에 삼각형 패턴이 있는지 확인합니다. 양초를 반복하고 최대값과 최소값의 좌표를 별도의 NumPy 배열에 저장합니다. 그런 다음 선형 회귀를 사용하여 이 점을 선형 기울기에 맞추고 최대값과 최소값에 대한 기울기를 계산합니다.
양초, 피벗 포인트, 최대값과 최소값의 기울기를 플로팅하여 삼각형 패턴을 시각화합니다. 상관 계수(r_min 및 r_max)와 같이 삼각형 모양에 대해 정의된 조건을 확인하여 삼각형 패턴이 있는지 확인할 수 있습니다. 조건이 충족되면 플롯에 삼각형 패턴을 표시합니다.
마지막으로 데이터 세트의 모든 양초를 반복하고 삼각형 패턴을 감지하는 프로세스를 반복합니다. 패턴이 발견될 때마다 삼각형의 좌표를 나중에 시각화하기 위해 별도의 목록에 저장합니다.
코드 끝에서 Plotly를 사용하여 양초, 피벗 포인트 및 감지된 삼각형 패턴을 플로팅합니다. 이것은 가격 데이터에서 식별된 삼각형의 시각적 표현을 제공합니다.
코드를 실행하고 플롯을 검사하여 감지된 삼각형 패턴을 확인하고 모양을 분석할 수 있습니다. 이 정보는 삼각형 패턴을 거래 전략에 통합하려는 거래자에게 유용할 수 있습니다.
Jupyter Notebook 파일에 제공된 코드는 삼각형 패턴 감지의 가능한 구현 중 하나일 뿐입니다. 이 문제에 접근하는 다양한 방법이 있으며 다양한 알고리즘을 탐색하거나 특정 요구 사항에 맞게 기존 코드를 수정할 수 있습니다.
Python AlgoTrading 백테스트: 매수/매도 신호에 대한 이동 평균과 함께 RSI 및 ADX 사용
Python AlgoTrading 백테스트: 매수/매도 신호에 대한 이동 평균과 함께 RSI 및 ADX 사용
여러분, 안녕하세요! 이번 영상에서는 ADX(Average Directional Index)와 RSI(Relative Strength Indicator)를 기반으로 다른 확인 지표와 함께 스컬프팅 전략에 대한 자세한 테스트를 진행합니다. 이 전략은 스캘핑에 대한 수익성 있는 접근 방식으로 광고됩니다. 우리는 우리가 설명할 알고리즘에 의해 자동으로 생성되는 가격 차트의 빨간색 화살표 바로 아래에 있는 보라색 점에 초점을 맞출 것입니다.
이 특정 예에서 자주색 점은 매도 신호를 나타내며 이러한 신호 뒤에 가격 하락이 따른다는 점은 주목할 가치가 있습니다. 이는 이러한 신호가 거래에서 승리하는 결과를 가져왔기 때문에 이 전략이 유망함을 시사합니다. 코딩 측면을 더 자세히 알아보려면 설명에 제공된 링크에서 Jupyter Notebook 파일인 Python 코드를 다운로드할 수 있습니다.
우리의 목표는 우리가 잠자는 동안 거래를 설정하고, 코드를 실행 상태로 두고, 잠재적으로 이익을 얻을 수 있도록 Python에서 자동화된 조각 전략을 개발하는 것입니다. 그러나 성공을 달성하는 것이 처음에 들리는 것처럼 간단하지 않을 수 있음을 인정하는 것이 중요합니다.
이 특정 전략에 권장되는 대로 5분의 시간 프레임에서 테스트를 시작할 것입니다. 가격 추세를 결정하기 위해 50 지수 이동 평균(EMA)을 활용합니다. 가격이 이 곡선 위에서 거래되면 상승 추세를 나타내며 매수 포지션에만 집중할 것입니다. 반대로 가격이 50 EMA 아래에서 거래되면 하락세를 나타내며 우리는 매도 포지션을 독점적으로 고려할 것입니다.
또한 RSI를 기간 3으로 통합하고 트리거 수준을 20과 80으로 설정합니다. RSI가 20 아래로 떨어지면 시장이 과매도 상태임을 시사하여 구매 신호를 트리거합니다. 반대로 RSI가 80을 초과하면 시장이 과매수 상태임을 나타내며 매도 신호가 됩니다.
우리의 전략은 또한 ADX(Average Directional Index)를 5주기로 통합합니다. ADX가 30을 넘으면 강한 추세를 나타내며 상승 추세와 하락 추세 모두에 대한 확인 지표 역할을 합니다. 두 경우 모두 30 이상의 레벨을 검색합니다.
이러한 모든 조건이 충족되면 신호의 첫 번째 부분이 생성됩니다. 이 신호를 더 검증하기 위해 우리는 양초 패턴 접근 방식을 사용할 것입니다. 특히 추세와 일치하는 삼키는 양초를 검색합니다. 추세가 상승하면 우리는 완고한 양초를 찾을 것입니다. 추세가 하향이면 우리는 약세를 뒤덮는 양초를 찾을 것입니다.
다행스럽게도 이러한 모든 지표는 Python에서 자동화되고 과거 데이터에서 테스트될 수 있습니다. 우리가 사용할 예제는 데이터 세트에서 무작위로 선택되었습니다. 매도 신호에 이어 가격이 하락하는 경향이 있는 반면 매수 신호에 이어 가격이 상승하는 경우가 많기 때문에 초기 관찰 결과는 긍정적인 신호를 나타냅니다.
이 전략을 궁극적인 테스트에 적용하기 위해 우리는 Python을 사용하여 백 테스트를 수행하고 결과에 따라 실행 가능성을 결정할 것입니다. 특히 5분 캔들스틱을 사용하여 2019년부터 2022년까지 EUR/USD 통화 쌍에 대한 과거 데이터를 가져올 것입니다. 또한 주말 및 공휴일과 같이 거래 활동이 없는 기간을 제거하여 데이터를 정리합니다.
Pandas TA(기술 분석) 패키지를 사용하여 데이터 프레임에 4개의 열을 추가합니다. 50 EMA, 기간이 3인 RSI, 기간이 5인 ADX 및 ATR(Average True Range)입니다. 후자는 정지 손실 거리를 계산하는 데 활용됩니다. EMA 추세 신호는 양초가 50 EMA 곡선 아래 또는 위에서 거래되는지 여부를 나타내어 우리가 하락세에 있는지 아니면 상승세에 있는지를 각각 결정합니다.
하락 추세에 있는 경우 RSI가 과매도 상태를 나타내는 20 미만인지 확인합니다. 하락 추세와 과매도 조건이 모두 충족되면 매도 신호가 생성됩니다.
마찬가지로 상승추세에 있는 경우 RSI가 과매수 상태를 나타내는 80 이상인지 확인합니다. 상승 추세와 과매수 조건이 모두 충족되면 매수 신호가 생성됩니다.
이러한 신호를 추가로 검증하기 위해 트렌드와 일치하는 삼키는 캔들 패턴을 찾을 것입니다. 매도 신호의 경우, 현재 캔들의 몸체가 이전 캔들의 몸체를 아래쪽 방향으로 완전히 감싸고 있는 하락형 캔들을 찾을 것입니다. 매수 신호의 경우, 현재 캔들의 몸체가 이전 캔들의 몸체를 위쪽 방향으로 완전히 감싸고 있는 상승형 캔들을 찾을 것입니다.
신호가 생성되면 ATR(Average True Range)을 사용하여 손절매 거리를 계산합니다. ATR은 지정된 기간 동안 평균 가격 범위의 추정치를 제공하여 합리적인 손절매 수준을 결정하는 데 도움이 될 수 있습니다.
백테스팅 단계에서 과거 데이터를 반복하고 이러한 규칙을 적용하여 거래 신호를 생성하고 평가합니다. 각 신호에 대해 신호가 생성된 후 다음 캔들의 시작 가격에 포지션을 입력한다고 가정하여 거래를 시뮬레이션합니다. 또한 특정 보상 대 위험 비율을 기반으로 고정 이익실현 수준을 정의합니다.
시뮬레이션 중에 각 거래의 손익을 추적하고 총 이익, 총 손실, 승률 및 거래당 평균 수익과 같은 주요 성과 지표를 계산합니다. 이는 전략의 효율성을 평가하고 수익성을 결정하는 데 도움이 됩니다.
과거 데이터에 대한 백테스팅 결과가 미래의 성능을 보장하지 않는다는 점에 유의해야 합니다. 시장 상황은 변할 수 있으며 과거에 잘 통했던 전략이 미래에는 그렇게 효과적이지 않을 수 있습니다. 따라서 실시간 시장 상황에 따라 거래 전략을 지속적으로 평가하고 조정하는 것이 중요합니다.
결론적으로 ADX(Average Directional Index), RSI(Relative Strength Indicator) 및 삼키는 양초 패턴을 기반으로 한 조각 전략을 설명했습니다. 우리는 Python을 사용하여 이 전략을 자동화하고 과거 데이터에 대한 백테스팅을 수행하는 프로세스에 대해 논의했습니다. 백테스트 결과는 전략의 성과에 대한 통찰력을 제공하고 스캘핑에 대한 수익성 있는 접근 방식으로서의 실행 가능성을 평가하는 데 도움이 됩니다.
Python에서 거래 전략 분석을 위해 거래량 지표를 사용하는 방법
Python에서 거래 전략 분석을 위해 거래량 지표를 사용하는 방법
오늘 우리는 대량 거래 전략을 테스트하면서 흥미진진한 여정을 시작합니다. 이 특정 전략은 일일 시간 프레임에서 작동하며 이론적으로 최소한의 위험을 수반하기 때문에 안전하다고 알려져 있습니다. 볼륨 및 기타 기술적 지표에 의존하기 때문에 "볼륨 거래 전략"이라고 적절하게 명명했습니다.
우리의 목표는 최대 18년에 걸친 과거 데이터를 사용하여 이 전략을 자동으로 테스트할 수 있는 코드를 개발하는 것입니다. 그렇게 함으로써 우리는 전략의 성과를 포괄적으로 이해할 수 있습니다. 코딩 측면에 관심이 있는 사용자는 비디오 설명에서 Jupyter Notebook Python 파일을 찾을 수 있습니다. 이 테스트에 사용할 전체 파일을 다운로드할 수 있는 링크가 있습니다.
먼저 200일 지수 이동 평균(EMA)을 첫 번째 지표로 활용합니다. 가격이 이 곡선 아래에서 거래되면 하락세를 나타내고 200 EMA 위에서 거래되면 상승세를 나타냅니다. 우리의 첫 번째 규칙은 간단합니다. 하락 추세를 식별하면 매도 포지션만 고려하고 상승 추세의 경우 매수 포지션에만 집중합니다.
이제 구체적인 전략을 살펴보겠습니다. 우리는 우세한 추세에 반하여 이동하는 4개의 연속 캔들을 검색할 것입니다. 즉, 가격을 이동 평균에 더 가깝게 되돌립니다. 사용자의 선호도에 따라 양초의 수를 조정할 수 있다는 점에 유의하는 것이 중요합니다. Jupyter Notebook에서는 언제든지 이 매개변수를 수정할 수 있는 유연성을 제공했습니다. 지금은 최소 4개의 양초를 사용합니다.
다음으로 추세의 방향과 일치해야 하는 다음 캔들을 살펴봅니다. 예를 들어 하락세에 있는 경우 약세 캔들을 찾습니다. 거래일이 끝날 때 캔들이 닫히면 볼륨을 확인합니다. 거래량이 이전 캔들보다 많으면 하락 추세에서 매도 신호 역할을 합니다. 반대로 상승추세에서는 최소 4개의 연속적인 약세 양초와 이전 양초보다 거래량이 많은 강세 양초를 찾습니다. 이는 구매 포지션을 의미합니다.
이제 손절매와 이익 실현 수준을 결정하는 복잡한 부분이 있습니다. 이 비디오에서는 두 가지 접근 방식을 살펴보고 그 결과를 평가합니다. 첫 번째 방법은 매도 또는 매수 포지션에서 ATR의 두 배 또는 세 배와 같은 ATR(Average True Range) 관련 손절매 거리를 사용하는 것입니다. 두 번째 방법은 이전 몇 개의 캔들 중 가장 높은 것을 하락세 및 매도 포지션에 대한 손절매로 간주합니다. 손절매를 설정하기 위해 고려해야 할 양초의 수는 Python 프로그램의 변수이므로 다양한 시나리오를 실험하고 테스트할 수 있습니다. 일반적으로 거래 신호를 확인하는 데 사용되는 숫자와 유사한 4개의 양초로 시작합니다. 상승추세 및 구매 포지션을 위해 우리는 이전 몇 개의 캔들 중에서 가장 낮은 저점을 찾습니다.
이제 코드를 살펴보고 모든 것이 어떻게 함께 작동하는지 살펴보겠습니다. Jupyter Notebook 파일에서 2003년부터 2022년까지 일일 EUR/USD 환율이 포함된 CSV 데이터 파일을 읽는 데 사용할 Pandas를 포함하여 필요한 라이브러리를 가져오는 것으로 시작합니다. 또한 다음과 같은 다른 자산에 대한 데이터를 로드합니다. 아마존, 이베이, 폭스바겐 주식, 우리는 주식 시장에서도 이 전략을 테스트할 계획입니다. 일일 데이터로 작업하고 있기 때문에 초기 데이터 세트는 6,858개의 행으로 구성되며 데이터 정리 프로세스 중에 더 줄어듭니다. 또한 열 제목이 요구 사항과 일치하는지 확인하고 서로 다른 데이터 파일 간의 일관성을 위해 이름을 "시간", "열기", "높음", "낮음", "닫기" 및 "볼륨"으로 바꿉니다.
차트에 신호를 그린 후 손절매 및 이익실현 수준을 정의하는 단계로 넘어갑니다. 이 예제에서는 두 가지 방법을 테스트합니다. 첫 번째 방법은 ATR(Average True Range)을 사용하여 손절매 거리를 결정하는 것입니다. 손절매는 진입점에서 ATR의 특정 배수로 설정됩니다. 두 번째 방법은 지정된 수의 이전 캔들 중에서 매도 포지션의 최고점 또는 매수 포지션의 최저점을 고려하여 손절매 수준을 결정하는 것입니다.
손절매 및 이익실현 수준이 정의되면 각 거래에 대한 손익(P&L)을 계산합니다. 총 신호가 매수 또는 매도 신호인지 확인하고 그에 따라 손익을 계산합니다. 매수 신호인 경우 다음 캔들의 종가와 진입가의 차이로 P&L을 계산합니다. 매도 신호일 경우 진입가와 다음 캔들의 종가의 차이로 P&L을 계산합니다.
그런 다음 누적 손익은 개별 거래 손익을 합산하여 계산됩니다. 또한 긍정적인 P&L을 기반으로 총 거래 수와 승률(성공한 거래의 백분율)을 계산합니다.
마지막으로 총 손익, 거래 수, 승률을 포함한 결과를 출력합니다.
Jupyter Notebook에 제공된 코드를 사용하면 전략을 추가로 사용자 정의하고 테스트할 수 있습니다. 추세 결정을 위해 고려할 백 캔들 수, 가격 신호 생성을 위한 이전 캔들 수, 손절매 계산을 위한 ATR 배수, 손절매 레벨 결정을 위해 고려할 이전 캔들 수와 같은 매개변수를 수정할 수 있습니다.
이 코드는 200일 지수 이동 평균(EMA), 거래량 및 가격 움직임과 같은 기술 지표를 기반으로 거래량 거래 전략을 구현합니다. 지정된 과거 데이터 기간 동안 전략을 테스트하고 수익성 및 성과 지표를 계산합니다.
Python에서 테스트된 자동화된 RSI 스캘핑 전략
Python에서 테스트된 자동화된 RSI 스캘핑 전략
오늘은 RSI(Relative Strength Index)를 기반으로 한 스캘핑 전략을 테스트해보려고 합니다. 이 전략은 지수 이동 평균(EMA)과 RSI라는 두 가지 지표를 통합합니다. 동영상 설명에 제공된 링크에서 다운로드할 수 있는 Python 코드를 사용하여 백테스팅을 수행합니다.
백 테스트를 위해 서로 다른 시간 프레임을 기반으로 하는 세 가지 버전의 전략을 사용할 것입니다. 하나는 1분 캔들, 다른 하나는 15분 캔들, 세 번째는 1시간 캔들입니다. 이 비디오의 초점은 15분 시간 프레임에 있지만 세 가지 버전을 모두 다룰 것입니다.
전략은 특정 규칙을 따릅니다. 먼저 200 EMA와 관련하여 현재 가격을 분석합니다. 가격이 200 EMA 이상에서 거래되면 상승 추세로 간주합니다. 반대로 가격이 200 EMA 아래에서 거래되면 하락세로 간주합니다. 상승추세에서는 매수 포지션만 찾고 하락추세에서는 매도 포지션만 찾습니다.
다음으로 두 연속 캔들의 RSI 값을 조사합니다. 처음에는 1분 시간 프레임에 대해 2개 캔들 RSI를 사용합니다. 그러나 몇 년 동안 1분 양초로 백테스팅하면 엄청난 양의 데이터가 생성되므로 15분 시간 프레임부터 시작하겠습니다. 이 경우 시간 프레임에 따라 RSI 길이를 3개 또는 4개 캔들로 조정할 수 있습니다. 1분 동안 우리는 2개 캔들 RSI와 10 미만 및 90 이상 테스트 수준을 사용할 것입니다.
상승 추세에서는 구매 포지션을 실행하기 전에 RSI가 10 아래로 떨어질 때까지 기다립니다. 판매 포지션의 경우 RSI가 90 이상으로 상승할 때까지 기다립니다. 이러한 RSI 수준은 거래의 진입점 역할을 합니다. 비디오는 전략이 가격 및 RSI 기준에 따라 진입 위치를 식별하는 방법에 대한 시각적 예를 제공합니다.
다음 단계는 거래에 대한 손절매 및 이익실현 가치를 결정하는 것입니다. 고정 거리 정지 손실, ATR 관련 정지 거리 또는 후행 정지 값과 같은 다양한 방법을 사용할 수 있습니다. 마찬가지로 이익실현은 고정된 거리로 설정하거나 특정 이익실현/손절매 비율로 손절매 거리와 관련하여 설정할 수 있습니다.
전략의 효과를 평가하기 위해 Python 코드를 작성하여 1~3년 간의 데이터에 대한 백테스팅을 수행합니다. 또한 편향을 피하기 위해 별도로 보관된 새로운 데이터에 대해 전략을 테스트하여 전략의 견고성을 확인하는 단계를 도입합니다.
비디오는 Jupyter 노트북에서 코드를 분석하는 과정을 진행합니다. 데이터를 로드하고, 볼륨이 0인 항목(주말 또는 공휴일 표시)을 제거하여 데이터를 정리하고, 200 EMA 및 RSI 값을 계산하는 것으로 시작합니다. ATR(Average True Range)도 잠재적인 손절매 거리 결정을 위해 계산됩니다.
필요한 신호가 계산되면 비디오는 차트에서 이러한 신호의 시각화를 보여줍니다. 가격 캔들, 200 EMA 곡선 및 진입 위치(매수 및 매도)를 플롯하여 지표의 동작을 시각적으로 분석합니다.
신호를 분석한 후 비디오는 수익성을 평가하기 위해 장기간에 걸쳐 전략을 백테스팅하는 것의 중요성을 설명합니다. 처음에는 이 전략을 더 짧은 기간에 걸쳐 테스트했지만 결과는 다양했습니다. 따라서 장기간에 걸친 백테스팅은 전략의 전반적인 효과를 평가하는 데 매우 중요합니다.
비디오는 상당한 기간 동안 전략의 성과를 백테스팅하고 확인해야 할 필요성을 강조합니다. 백 테스트의 최종 결과를 검토하여 전략이 수익성 있고 강력한지 여부를 확인할 수 있습니다.