알고리즘 트레이딩에서의 파이썬 - 페이지 19

 

Python에서 CandleStick 패턴 백테스트를 사용한 스캘핑 전략



Python에서 CandleStick 패턴 백테스트를 사용한 스캘핑 전략

이 비디오에서는 이전 두 비디오에서 제시된 개념을 기반으로 하는 간단한 조각 전략에 대해 논의하고 시연합니다. 이 전략에 대한 특정 세부 정보와 Python 코드에 관심이 있는 경우 비디오 설명에서 링크를 찾을 수 있습니다.

우리가 사용하는 전략은 빠름, 중간, 느림의 세 가지 지수 이동 평균(EMA)을 중심으로 합니다. 이러한 EMA의 정렬을 분석하여 가격 추세가 상향 또는 하향인지 추정할 수 있습니다. 상승 추세에서 빠른 EMA는 느린 EMA 위에 있는 중간 EMA 위에 있습니다. 반대로 하락추세에서는 순서가 반전됩니다.

상승 추세에서 포지션을 구매하려면 빠른 EMA 아래에서 시작하고 위에서 닫는 양초를 찾습니다. 반면 하락추세에서 포지션을 매도하려면 빠른 EMA 위에서 시작하고 아래에서 닫히는 캔들을 찾습니다. 비디오는 상승 추세에서 포지션을 구매하기 위해 이러한 기준을 충족하는 양초의 예를 제공합니다.

이 전략은 이전에 레버리지 비율이 1:100인 레버리지 계정을 사용하여 테스트 및 최적화되었습니다. 테스트는 3년에 걸쳐 진행되었으며, 그 결과 수익률은 445%, 승률은 55%였습니다. 그러나 이 전략은 큰 하락 기간을 보였고 3년 동안 주식 곡선이 안정적이지 않았다는 점에 유의해야 합니다.

전략을 개선하기 위해 추가 조건이 도입됩니다. 빠른 EMA를 교차하는 양초 외에도 이제 양초 심지의 길이를 고려합니다. 상승 추세라면 양봉의 하단 꼬리가 매우 짧아 강한 상승 모멘텀을 나타내야 합니다. 마찬가지로 하락추세에서는 양봉에 높은 꼬리가 없어야 합니다. 이 조건은 모멘텀이 약한 신호를 걸러내는 것을 목표로 합니다.

이 추가 조건의 효과를 평가하기 위해 Python을 사용하여 전략을 백테스트합니다. 백테스트를 위한 소스 코드는 비디오 설명의 링크에서 다운로드할 수 있는 Jupyter Notebook 파일로 제공됩니다.

백테스팅은 2019년부터 2022년까지 3년간의 데이터를 다루는 유로/달러 15분 차트 데이터를 사용하여 수행됩니다. 데이터는 볼륨이 0인 양초를 제거하고 데이터 프레임의 인덱스를 재설정하여 전처리됩니다. 3개의 이동 평균(50, 100, 150)과 ATR(Average True Range)이 데이터 프레임에 추가됩니다.

이 전략은 이동 평균의 정렬을 기반으로 신호를 생성하고 추세와 동일한 방향으로 빠른 EMA를 교차하는 캔들을 식별하여 전체 신호를 얻습니다. 비디오는 이러한 신호를 차트에서 시각화하는 방법을 보여줍니다.

손절매 및 이익 실현 값을 설정하는 다양한 방법이 테스트됩니다. 여기에는 고정 거리, ATR 관련 거리, 후행 손절매, 가격에서 관찰되는 손절매가 포함됩니다. 각 방법에 대한 결과는 세 번째 조건을 추가하기 전과 후를 비교합니다.

세 번째 조건이 추가되면 전략은 테스트된 모든 방법에서 상당한 개선을 보여줍니다. 고정 거리 손절매 및 이익 실현 방법은 59%의 승률로 1805%의 수익을 산출합니다. ATR 관련 방식은 249%의 수익과 51%의 승률을 달성합니다. 이전에 손해를 보던 트레일링 스톱 로스 방식은 이제 394%의 수익과 42.5%의 승률을 산출합니다. 마지막으로 가격에서 관찰된 손절매 역시 손실을 보았고 이제 49%의 승률로 373%의 수익을 창출합니다.

개선된 수익률 외에도 모든 방법에 대한 주식 곡선은 전반적으로 상승 추세를 보여 이전 결과보다 더 안정적이고 긍정적인 성과를 나타냅니다.

비디오는 이 전략이 완전한 거래 시스템으로 제시된 것이 아니라 낮은 심지 조건을 추가한 영향에 대한 설명으로 제시되었음을 강조합니다.

비디오는 이 전략을 사용할 때 고려해야 할 몇 가지 중요한 사항을 강조하면서 결론을 내립니다.

  1. 비디오에서 시연된 전략은 단순화된 예이며 포괄적인 거래 시스템으로 간주되어서는 안 됩니다. 특정 조건을 추가하면 전략의 성능을 향상시킬 수 있는 방법을 보여 주는 역할을 합니다.

  2. 백테스팅 결과는 미래의 성능을 나타내지 않습니다. 전략이 테스트 기간 동안 개선된 수익을 보였지만 시장 상황은 변할 수 있으며 과거 결과는 미래에 복제되지 않을 수 있습니다.

  3. 전략을 실제 거래에 적용하기 전에 철저한 테스트와 최적화를 수행하는 것이 필수적입니다. 백테스팅을 통해 다양한 시장 조건에서 전략의 성과를 평가하고 더 나은 결과를 위해 매개변수를 조정할 수 있습니다.

  4. 위험 관리가 중요합니다. 손절매 및 이익실현 수준을 적절하게 설정하는 것은 자본을 보호하고 위험을 관리하는 데 필수적입니다. 비디오는 이러한 수준을 설정하는 다양한 방법을 보여주지만 적절한 값을 결정할 때 위험 허용 범위와 계정 크기를 고려하는 것이 중요합니다.

  5. 성공적인 거래를 위해서는 정서적 규율이 필요합니다. 전략을 고수하고 단기 시장 변동에 따라 충동적인 결정을 내리지 마십시오.

  6. 이 전략을 보완할 수 있는 다른 요인과 지표를 고려하십시오. 모든 시장 상황에서 완벽하게 작동하는 단일 전략은 없으므로 보다 포괄적인 분석을 위해 여러 지표와 기법을 결합하는 것이 좋습니다.

  7. 전략의 성과를 지속적으로 모니터링하고 평가합니다. 시장 상황이 변함에 따라 수익성을 유지하기 위해 접근 방식을 조정하고 개선해야 할 수도 있습니다.

금융 시장에서 거래하는 것은 위험을 동반하므로 실제 자금을 투자하기 전에 스스로 교육하고, 전문가의 조언을 구하고, 신중하게 연습하는 것이 중요합니다. 비디오는 교육 자료로 사용되며 거래 스타일과 위험 허용 범위에 맞게 전략을 추가로 탐색하고 사용자 정의하는 것은 귀하에게 달려 있습니다.

Scalping Strategy With CandleStick Pattern Backtest In Python
Scalping Strategy With CandleStick Pattern Backtest In Python
  • 2022.03.10
  • www.youtube.com
This is a scalping Trading Strategy optimization using CandleStick Wick length pattern to confirm price momentum along with 3 moving exponential averages to ...
 

Python에서 간단한 EMA 스캘핑 거래 전략 백테스트(1부)


Python에서 간단한 EMA 스캘핑 거래 전략 백테스트(1부)

오늘 우리는 스캘핑 전략을 테스트하기 위한 여정을 시작합니다. 최근에 많은 분들이 이것을 요청하고 있다는 것을 알고 있으며 인정해야 합니다. 저는 일반적으로 짧은 시간 프레임과 스캘핑이 위험한 접근 방식이고 종종 감정적으로 고갈되는 것을 발견하기 때문에 피합니다.

그러나 알고리즘 방법의 경우 작업이 더 쉬울 수 있습니다. 알고리즘을 사용하면 전략을 테스트하고 예상 결과를 명확하게 이해할 수 있습니다. 따라서 우리 모델이 이미 백테스트를 거쳤기 때문에 불쾌한 놀라움이 없기를 바랍니다. 평소와 같이 코딩 부분에 관심이 있는 경우 비디오 설명의 링크에서 Python 코드를 다운로드할 수 있습니다. 그렇지 않은 경우 비디오를 즐기면서 우리의 전략이 어떤 결과를 가져올 수 있는지 확인할 수 있습니다.

시작하려면 상대적으로 간단한 것을 선택했습니다. 세 가지 지수 이동 평균을 사용합니다. 하나는 빠르고, 다른 하나는 중간이고, 세 번째는 느립니다. 이러한 이동 평균을 사용하여 추세를 감지합니다. 이러한 이동 평균이 특정 순서로 정렬되면(느린 이동 평균 위의 중간보다 빠르게) 상승 추세가 있습니다. 반대로 반대 순서는 하락 추세를 나타냅니다.

추세의 정확성을 보장하기 위해 조건을 하나 더 추가했습니다. 이 곡선의 기울기는 같은 방향을 가리켜야 합니다. 상승 추세에서는 세 곡선의 기울기가 양수여야 하고 하락 추세에서는 기울기가 음수여야 합니다.

명확한 추세 신호가 있으면 진입점을 찾습니다. 예를 들어 매수 포지션을 찾고 있다면 빠른 이동 평균 아래에서 시작하여 그 위에서 닫히는 캔들을 기다릴 것입니다. 이 캔들은 상승 추세의 지속을 나타내며 진입점 역할을 합니다.

여기서 흥미로운 점은 이 모든 것을 Python으로 코딩하고 전략을 백테스트할 수 있다는 것입니다. 처음에는 이 비디오를 간결하게 유지하고 싶기 때문에 최적화에 크게 초점을 맞추지 않을 것입니다. 그러나 향후 비디오에서는 매개변수를 최적화하고 거래에서 성공적인 조합을 달성할 수 있는지 확인하려고 시도할 것입니다.

이제 Python 코드를 살펴보고 백테스팅 결과를 살펴보겠습니다. 2019년부터 2022년까지 Euro/USD 통화 쌍을 15분 캔들스틱과 함께 사용할 것입니다. 데이터 프레임은 105,000개의 행으로 구성되며 각 행은 15분 캔들을 나타냅니다. 시장 움직임이 없는 주말과 휴일에 해당하는 볼륨이 0인 행을 제거하여 데이터 프레임을 정리합니다.

다음으로, pandas_ta(Pandas 기술 분석) 모듈을 가져오고 EMA 50, EMA 100 및 EMA 150의 세 가지 이동 평균을 계산합니다. 또한 10개 캔들의 롤링 윈도우를 사용하여 이러한 이동 평균의 기울기를 계산합니다.

이 단계에서 데이터 프레임에는 시가, 고가, 저가 및 종가, 거래량, 세 가지 이동 평균 및 해당 슬로프가 포함됩니다. 이제 추세 감지를 위한 조건을 확인할 수 있습니다. 빠른 이동 평균이 중간 이동 평균보다 낮고 중간 이동 평균이 느린 이동 평균보다 낮으며 세 기울기가 모두 음수이면 하락 추세를 나타냅니다. 반대로 빠른 이동 평균이 중간 이동 평균 위에 있고 중간 이동 평균이 느린 이동 평균 위에 있고 세 기울기가 모두 양수이면 상승 추세 신호입니다. 이러한 조건은 데이터 프레임의 열로 추가됩니다.

차트에서 신호를 시각화하기 위해 총 신호를 기반으로 촛대 위 또는 아래에 포인트를 표시하는 함수를 정의합니다. 총 신호는 진입점을 나타내며 1은 매도 신호를 나타내고 2는 매수 신호를 나타냅니다. 포인트 위치는 데이터 프레임의 열로 추가됩니다.

특정 범위의 양초에 대한 신호와 양초를 플로팅합니다.

특정 범위의 캔들에 대한 신호와 캔들을 플로팅하여 전략의 성과를 시각적으로 분석할 수 있습니다. 녹색 원은 매수 신호를 나타내고 빨간색 원은 매도 신호를 나타냅니다. 이 시각적 표현은 전략이 실시간으로 어떻게 수행되었는지 이해하는 데 도움이 됩니다.

신호를 시각화한 후 전략의 성과를 계산합니다. $10,000의 자본금으로 시작하여 각 양초를 반복합니다. 구매 신호를 받으면 고정 크기의 롱 포지션에 들어갑니다. 매도 신호를 받으면 롱 포지션을 청산하고 진입 이후의 가격 변동에 따라 손익을 계산합니다. 누적 손익과 실행된 거래 수를 추적합니다.

백테스팅 기간이 끝나면 총 손익, 승리한 거래 수, 잃은 거래 수, 승률 및 거래당 평균 손익을 계산합니다.

비디오에서는 주어진 전략에 대한 백테스팅 결과를 제시합니다. 결과는 선택한 기간 및 통화 쌍에 따라 다릅니다. 전략은 다른 시장 상황이나 다른 매개변수에 따라 다르게 수행될 수 있습니다.

결과를 요약하면 백테스팅은 전략이 상대적으로 잘 수행되어 백테스팅 기간 동안 긍정적인 수익을 창출했음을 보여줍니다. 그러나 과거 성능이 미래 결과를 나타내지 않으며 추가 테스트 및 최적화가 필요할 수 있다는 점에 유의하는 것이 중요합니다.

Simple EMA Scalping Trading Strategy Backtest In Python (Part 1)
Simple EMA Scalping Trading Strategy Backtest In Python (Part 1)
  • 2022.02.24
  • www.youtube.com
Simple scalping Trading strategy using 3 exponential moving averages backtested in python, the scalping strategy is explained and the python code also in Jup...
 

Python에서 간단한 EMA 스캘핑 거래 전략 백테스트(2부 최적화)



Python에서 간단한 EMA 스캘핑 거래 전략 백테스트(2부 최적화)

안녕하세요! 이전 비디오의 연속인 이 비디오에 다시 오신 것을 환영합니다. 이번 영상에서는 앞서 소개한 스컬프팅 전략을 최적화하는 것을 목표로 합니다. 간단히 요약하면 이동 평균의 기울기를 계산할 때 고려해야 할 캔들 수를 결정하는 '백 롤링 n'이라는 매개 변수를 최적화하는 데 중점을 둘 것입니다. 20개, 10개 또는 5개와 같이 캔들의 수를 변경하여 이러한 이동 평균의 평균 기울기를 계산할 수 있습니다. 또한 -10에서 -4와 같은 특정 임계값 미만의 기울기에 대한 테스트와 같이 이동 평균 기울기에 조건을 추가할 가능성을 탐색할 것입니다. 이러한 매개변수를 실험함으로써 우리는 추세를 식별하기 위한 더 나은 필터를 만드는 것을 목표로 합니다.

또한 고정 손절매 및 이익 실현 가치, 후행 손절매 및 ATR(Average True Range) 관련 손절매 및 이익 실현을 포함한 다양한 거래 관리 접근 방식을 살펴볼 것입니다. 이러한 다양한 접근 방식을 검토하여 어떤 무역 관리 전략이 가장 유리한 결과를 가져오는지 결정하기를 희망합니다.

이 스컬프팅 시스템은 15분 단위로 작업하므로 빠른 거래 스타일을 위해 설계되지 않았다는 점에 유의해야 합니다. 그러나 시장 노이즈 증가로 인해 더 어려울 수 있지만 동일한 시스템을 더 짧은 기간에 테스트할 수 있습니다.

코드를 살펴보기 전에 전략을 자세히 설명한 이전 비디오를 시청하는 것이 좋습니다. 이를 통해 우리가 제시할 최적화 프로세스를 더 잘 이해할 수 있습니다.

이제 Jupyter Notebook 파일로 이동하겠습니다. 데이터 프레임을 생성하고 데이터를 정리하는 것으로 시작합니다. 다음으로 세 가지 이동 평균을 계산하고 이러한 이동 평균의 기울기를 계산합니다. 여기에서 전략 테스트를 시작합니다.

처음에는 10개 캔들의 롤링 윈도우를 고려합니다. 즉, 이 10개 캔들의 데이터를 사용하여 빠른 이동 평균, 중간 이동 평균 및 느린 이동 평균에 대한 기울기를 평균화합니다. 이 코드를 실행하여 이전 비디오에서 소개한 신호를 포함하여 모든 것이 올바르게 작동하는지 확인합니다.

테스트를 용이하게 하기 위해 15분 양초로 작업하는 경우 4개의 양초가 1시간을 나타내는 것으로 시간 척도를 설정합니다. 이 설정을 사용하면 데이터 프레임의 특정 조각을 선택하여 전략을 테스트할 수 있습니다. 예를 들어 시작 인덱스를 37,000으로 지정하고 해당 길이를 선택하여 3개월 기간을 선택할 수 있습니다.

선택한 기간 동안 데이터를 로드한 후 백 테스트를 실행할 수 있습니다. 우리의 초기 로트 크기는 우리 자본의 30%로 설정되어 있으며 40핍의 손절매와 45핍의 이익실현을 고려합니다. 또한 현금 잔고가 100인 레버리지 계정을 시작점으로 반영하여 1/100의 증거금을 적용합니다.

백 테스트를 실행하면 3개월 동안 107%의 수익률을 볼 수 있습니다. 그러나 모델의 견고성을 보장하려면 다양한 시간 조각에서 전략을 테스트하는 것이 중요합니다. 시작 지수를 변경하여 다양한 기간을 선택하고 성과를 평가할 수 있습니다. 예를 들어, 우리는 47의 다른 시작 지수를 시도하고 백 테스트를 실행하여 30%의 수익을 얻습니다.

여러 기간에 걸쳐 전략의 성과를 분석하기 위해 다른 시작 지표로 이 프로세스를 반복할 수 있습니다. 그러나 더 긴 기간 동안 테스트하려면 데이터 프레임의 더 작은 부분을 선택해야 합니다. 예를 들어 연간 성과를 평가하기 위해 10개월 또는 12개월 분할을 선택할 수 있습니다.

1년 동안 전략을 테스트하여 100%의 수익을 달성하여 초기 금액을 효과적으로 두 배로 늘렸습니다. 이는 긍정적이지만 거래 빈도는 상대적으로 낮으며 한 해 동안 거래가 193건에 불과합니다. 승률은 약 44%로 개선의 여지가 있음을 나타냅니다.

전략을 향상시키기 위해 "back rolling n" 매개변수에 대해 다른 값을 탐색할 것입니다. 20개, 10개 또는 5개와 같이 다양한 양초를 테스트하여 전략의 성과에 미치는 영향을 평가할 수 있습니다. 예를 들어 "back rolling n" 값을 20으로 설정하고 백 테스트를 다시 실행하도록 코드를 수정할 수 있습니다.

20의 "백롤링 n"으로 테스트한 결과 3개월 동안 초기 설정인 10보다 약간 낮은 90%의 수익을 관찰했습니다. 이는 더 작은 "백롤링 n"이 단기 트렌드 포착.

다음으로 이동 평균의 기울기에 따라 추가 조건을 도입합니다. 예를 들어 세 이동 평균의 기울기가 모두 -4 미만이어야 한다는 요구 사항을 구현할 수 있습니다. 이것은 세 기울기가 모두 음수이고 -4 미만인 경우에만 거래에 진입한다는 것을 의미합니다. 이에 따라 코드를 수정하고 백 테스트를 실행합니다.

추가 조건을 구현하면 전략을 더욱 세분화할 수 있습니다. 테스트 결과, 3개월 동안 127%의 수익률이 관찰되었으며 이는 초기 결과에 비해 개선되었음을 나타냅니다. 그러나 이러한 조건은 보다 엄격한 필터를 제공하므로 거래 빈도를 줄일 수도 있다는 점에 유의하는 것이 중요합니다.

이제 다양한 무역 관리 접근 방식을 살펴보겠습니다. 우리는 두 매개 변수에 대해 미리 결정된 값을 설정하는 고정 손절매 및 이익 실현 전략을 구현하는 것으로 시작합니다. 예를 들어, 40핍의 고정 손절매와 45핍의 이익실현을 설정할 수 있습니다. 코드를 수정하고 백테스트를 실행한 후 결과를 분석합니다.

고정 손절매 및 이익실현 접근 방식을 사용하면 3개월 동안 95%의 수익을 얻을 수 있습니다. 이는 초기 결과보다 약간 낮지만 제어된 위험 관리 시스템을 제공합니다. 그러나 그 효과를 평가하기 위해서는 더 긴 기간과 다양한 시장 조건에 대한 성과를 평가하는 것이 중요합니다.

다음으로 후행 손절매 전략을 살펴봅니다. 고정 값을 사용하는 대신 거래가 우리에게 유리하게 진행됨에 따라 정지 손실이 동적으로 조정됩니다. 예를 들어, 후행 손절매를 30핍으로 설정할 수 있습니다. 즉, 가격이 30핍만큼 유리하게 움직이면 손절매가 손익분기점으로 이동합니다. 이에 따라 코드를 수정하고 백테스트를 다시 실행합니다.

후행 손절매 접근 방식을 통해 3개월 동안 120%의 수익을 달성했습니다. 이는 손절매를 동적으로 조정하여 이익을 보호하고 이익을 극대화할 수 있는 가능성을 보여줍니다. 그러나 견고성을 보장하기 위해 다양한 기간과 시장 조건에 대한 성과를 평가하는 것이 필수적입니다.

마지막으로 ATR(Average True Range)에 기반한 거래 관리 전략을 살펴봅니다. ATR은 손절매를 설정하고 이익 실현 수준을 설정하는 데 사용할 수 있는 시장 변동성을 측정합니다. ATR을 전략에 통합함으로써 우세한 시장 상황에 맞게 위험 관리를 조정할 수 있습니다. ATR 기반 손절매를 구현하고 이익 수준을 취하고 백 테스트를 실행하도록 코드를 수정합니다.

ATR 기반 손절매 및 이익실현 수준을 통합하여 3개월 동안 110%의 수익을 달성했습니다. 이것은 우리의 위험 관리를 시장 변동성에 적응시키는 잠재적 효과를 나타냅니다.

결론적으로 최적화 프로세스를 통해 조각 전략을 개선하기 위해 다양한 매개 변수와 거래 관리 접근 방식을 탐색했습니다. "백 롤링 n" 매개변수를 변경하고, 이동 평균 기울기를 기반으로 추가 조건을 구현하고, 다양한 거래 관리 기술을 탐색하여 전략의 성능을 향상시킬 수 있었습니다. 그러나 실시간 거래에 적용하기 전에 다양한 기간, 시장 상황에서 추가 테스트를 수행하고 전략의 견고성을 평가하는 것이 중요합니다.

Simple EMA Scalping Trading Strategy Backtest In Python (Part 2 Optimization)
Simple EMA Scalping Trading Strategy Backtest In Python (Part 2 Optimization)
  • 2022.03.03
  • www.youtube.com
This is a continuation of the previous video, here we optimize our simple EMA Scalping trading strategy and we try to backtest the different parameters sets ...
 

레버리지 효과를 이용한 고수익 거래 전략



레버리지 효과를 이용한 고수익 거래 전략

안녕하세요 여러분, 제 채널에 다시 오신 것을 환영합니다. 오늘은 이전에 다루지 않았던 주제인 레버리지에 대해 자세히 알아보겠습니다. 나는 내재된 위험 때문에 그것에 대해 상당히 회의적이었다는 것을 인정해야 합니다. 그러나 이러한 동영상은 기본적으로 교육용이라는 점을 강조하고 싶습니다. 그 의미를 완전히 이해하지 못한 채 레버리지 거래 시스템을 맹목적으로 채택하는 것은 권장하지 않습니다. 따라서 이 비디오에서는 이전 비디오에서 이미 논의한 이전에 사용한 거래 전략을 사용하고 레버리지를 거래 시스템에 통합하는 효과를 탐색합니다.

레버리지 작동 방식에 대한 간략한 소개부터 시작하겠습니다. 일반적으로 레버리지는 1:10에서 최대 1:1000과 같은 비율로 표시되지만 1:10에서 1:50 사이의 비율을 찾는 것이 더 일반적입니다. 즉, $1,000의 계정이 있는 경우 1:10 레버리지 비율을 선택하면 최대 $10,000의 가치로 포지션을 매수하거나 매도할 수 있습니다. 레버리지 비율을 1:50으로 높이면 계정에 있는 동일한 $1,000로 최대 $50,000의 가치로 구매할 수 있습니다. 사용 가능한 특정 레버리지 옵션은 중개인, 운영 국가, 규정 및 계정 유형과 관련된 기타 요인에 따라 다릅니다.

그러나 레버리지에 비용이 들지 않는 것은 아니라는 점에 유의해야 합니다. 잠재적인 이익을 증폭시킬 수 있지만 위험을 확대하고 계정 잔액을 빠르게 고갈시킬 수 있습니다. 초보자는 경험 부족을 이용하는 대형 거래자 또는 중개인의 표적이 되는 경우가 많습니다. 이것을 명심하는 것이 중요합니다.

레버리지를 사용할 때 염두에 두어야 할 두 가지 주요 규칙이 있습니다. 첫째, 전략의 승률이 높은 경우 레버리지는 수익을 확대하는 데 도움이 될 수 있습니다. 반대로 전략의 승률이 낮으면 손실도 커집니다. 높거나 낮은 승률의 정의는 전략 유형, 손절매 및 이익실현 가치, 자금 관리 접근 방식과 같은 다양한 요인에 따라 다릅니다. 레버리지에는 대가가 따릅니다. 보유 금액의 100배로 포지션을 매매할 수 있다면, 이는 귀하의 자금이 주로 잠재적 손실을 충당하기 위해 있다는 것을 의미하며, 이는 훨씬 더 많은 금액으로 거래할 때 빠르게 발생할 수 있습니다.

이 비디오에서는 Python을 활용하여 이전에 논의한 전략을 백테스트합니다. 일반 거래 계정을 사용하여 수익을 확인하는 것으로 시작한 다음 알고리즘 거래 전략에 레버리지 계정을 도입합니다. 우리는 이러한 변화를 백 테스트하고 결과를 검토하며 레버리지 계정 사용과 관련된 이점과 위험을 평가할 것입니다. Python 사용의 이점은 원하는 대로 매개 변수를 수정하고 반환 비율에 미치는 영향을 관찰할 수 있다는 것입니다. 이 계산 능력을 통해 우리는 레버리지 계정 사용의 장점과 단점에 대한 통찰력을 테스트하고 얻을 수 있습니다.

우리가 사용할 Python 코드는 거래에서 martingale 접근 방식에 대한 이전 비디오에서 사용된 코드와 유사합니다. 초기 셀에는 데이터 로드 및 정리, 인덱스 재설정 및 기타 필요한 단계 수행이 포함됩니다. 이전 동영상에서 다루었기 때문에 오늘은 코드에 많은 시간을 할애하지 않겠습니다. 추세 반전을 감지하고 거래 신호를 생성하기 위해 촛대 패턴 인식과 함께 지원 및 저항 기능을 활용할 것입니다. 이 전략에서는 잠재적인 추세 반전 신호로 지원 또는 저항 수준 근처에서 발생하는 거부 캔들스틱 패턴에 초점을 맞출 것입니다.

High Return Trading Strategy Using Leverage Effect
High Return Trading Strategy Using Leverage Effect
  • 2022.02.17
  • www.youtube.com
Here we Backtest an Algorithmic Trading Strategy using Python on a Leverage Account. The leverage can be a variable depending on the strategy you are intend...
 

Martingale 스윙 트레이딩 전략 Python의 알고리즘 백테스트



Martingale 스윙 트레이딩 전략 Python의 알고리즘 백테스트

오늘, 우리는 이기는 거래 전략과 결합될 때 마팅게일 접근 방식의 매혹적인 주제를 탐구할 것입니다. 마팅게일 방법에 대한 이전 동영상이나 이 채널에서 사용할 전략을 설명하는 다른 동영상을 아직 시청하지 않았다면 먼저 확인하는 것이 좋습니다. 이 비디오는 지원 및 저항 수준, 캔들 패턴을 다루고 이 비디오에서 우리의 접근 방식을 이해하기 위한 견고한 토대를 제공합니다. 편의를 위해 동영상 설명에 일부 링크를 포함하겠습니다.

또한 관심 있는 사용자는 설명에 제공된 링크에서 이 전략을 백테스트하는 데 사용하는 Python 코드를 다운로드할 수 있습니다. 이 코드를 사용하면 따라가면서 직접 결과를 탐색할 수 있습니다.

이제 우리 채널을 처음 사용하거나 이제 막 가입한 사람들을 위해 간단하게 요약해 보겠습니다. 마팅게일 방법은 손실 거래를 종료할 때마다 포지션 크기를 두 배로 늘리는 것입니다. 이 접근 방식의 기본 아이디어는 한 번의 큰 승리로 이전 손실을 복구하는 것입니다. 이전 영상에서는 매수 포지션과 매도 포지션을 무작위로 선택하는 완전 랜덤 트레이딩 전략에 마팅게일 방식을 설명하고 적용했습니다.

이 비디오에서는 다른 접근 방식을 사용합니다. 우리는 마틴게일 방법을 이기는 거래 전략에 적용할 것입니다. 우리의 전략에는 잠재적 추세 반전을 나타내는 특정 캔들 패턴뿐만 아니라 지원 및 저항 수준을 식별하는 것이 포함됩니다. 지원 또는 저항 수준 근처에서 양초 패턴을 감지하면 그에 따라 거래를 실행합니다. 손절매와 손절매 값은 손절매/손절매 비율이라는 비율에 따라 결정됩니다.

이제 이 전략의 결과가 이전 비디오에서 이미 테스트되었고 긍정적인 수익을 보였다는 점에 주목하는 것이 중요합니다. 여기서 목표는 이 전략에 마팅게일 접근 방식을 추가하여 수익을 더 높일 수 있는지 확인하는 것입니다.

좋아, 파이썬 코드에 뛰어들자. 먼저 이 비디오에 대한 2003년부터 2021년까지의 EUR/USD 일일 데이터를 로드하고 정리합니다. 그런 다음 데이터 프레임의 꼬리를 인쇄하여 데이터 프레임이 올바르게 로드되었는지 확인합니다.

다음으로 우리 프로그램에서 사용할 지원 및 저항 수준을 감지하는 기능이 있습니다. 이러한 기능에 대한 자세한 설명이 필요하면 이전 비디오를 참조하십시오.

또한 "is_engulfing", "is_star" 및 "close_to_resistance" 또는 "close_to_support" 레벨이라는 다른 기능도 있습니다. 이러한 기능은 특정 캔들스틱 패턴을 식별하고 지지 또는 저항 수준에 가까운지 판단하는 데 도움이 됩니다. 이러한 패턴은 거래 신호를 생성하는 데 사용됩니다.

신호 생성 셀에서는 감지한 양초 패턴을 기반으로 신호를 생성합니다. 약세 패턴이나 저항 수준 근처의 다른 매도 신호를 찾으면 매도 신호로 간주하고 데이터 프레임의 신호 열에 값 1을 할당합니다. 유사하게, 강세 패턴이나 지원 수준 근처의 다른 구매 신호를 찾으면 이를 구매 신호로 간주하고 신호 열에 값 2를 할당합니다. 다른 모든 경우 신호 값은 0이며 신호가 없음을 나타냅니다.

이제 backtesting.py 패키지를 포함하여 전략을 백테스트할 수 있습니다. 데이터 프레임의 각 행에 대한 신호 값을 반환하는 "신호"라는 함수를 정의합니다. 이 함수는 backtesting.py 모듈의 전략 클래스에서 상속받은 "CandleStrategy"라는 사용자 지정 클래스 내에서 사용됩니다.

CandleStrategy 클래스에서 거래 포지션의 크기를 0.05로 초기화합니다. 이는 보유 자산의 5%를 나타냅니다. 신호를 받을 때마다 이 포지션 크기로 거래합니다.

신호 값이 1(매도 신호)이면 열린 포지션이 있는지 확인합니다. 그렇게 하면 기존 위치를 닫고 위치 크기를 0으로 설정합니다. 그런 다음 앞에서 정의한 포지션 크기로 새로운 숏 포지션을 입력합니다.

반면 신호 값이 2(매수 신호)이면 유사한 프로세스를 따릅니다. 오픈 포지션이 있는지 확인하고, 필요한 경우 청산하고, 미리 정의된 포지션 크기로 새로운 롱 포지션을 입력합니다.

이제 이익 실현 및 손절매 수준을 정의합니다. 이익실현 수준은 진입가에 이익실현/손절매 비율을 곱하여 계산합니다. 손절매 수준은 진입 가격에 이익실현/손절매 비율의 음수 값을 곱하여 계산합니다. 이러한 값은 우리의 이익실현 수준이 손절매 수준보다 진입가에서 더 멀어지도록 합니다.

마지막으로 CandleStrategy 클래스를 사용하여 백 테스트를 실행하고 결과를 인쇄합니다. 총 수익률, 일일 평균 수익률, 최대 하락폭, 실행된 거래 수와 같은 다양한 성과 지표를 계산합니다.

이제 백 테스트를 실행하고 결과를 분석해 보겠습니다.

백 테스트를 실행한 후 결과를 관찰할 수 있습니다. 총 수익률, 일일 평균 수익률 및 최대 손실률은 전략의 성과를 평가하는 중요한 지표입니다.

우리의 경우 총수익률은 256.17%로 초기 투자금이 2배 이상 증가한 셈이다. 일일 평균 수익률은 0.04%로 백테스트 기간 동안 일관된 플러스 수익률을 나타냅니다. 최대 손실률은 10.98%이며, 이는 고점에서 다음 저점까지의 주식 곡선의 최대 하락을 나타냅니다.

이러한 결과는 마틴게일 접근 방식과 결합된 우리의 성공적인 거래 전략이 테스트 기간 동안 수익성이 있음을 나타냅니다. 그러나 과거 성과가 미래 결과를 나타내지 않으며 이 전략을 실시간 거래에 사용하기 전에 철저하게 평가하고 검증해야 한다는 점에 유의하는 것이 중요합니다.

결론적으로 마틴게일 접근 방식은 성공적인 거래 전략과 결합될 때 잠재적으로 전략의 전반적인 수익성을 향상시킬 수 있습니다. 그러나 대규모 손실 가능성 및 여러 배의 포지션 크기를 유지하기 위한 충분한 자본의 필요성과 같은 관련된 위험을 신중하게 고려하는 것이 필수적입니다.

이 비디오에 참여해 주셔서 감사합니다. 이 비디오가 유익하고 유용했기를 바랍니다. 질문이나 제안 사항이 있으면 아래 의견에 남겨주십시오. 더 많은 거래 전략과 튜토리얼을 보려면 저희 채널을 좋아요하고 구독하는 것을 잊지 마세요. 행복한 거래!

Martingale Swing Trading Strategy Algorithmic Backtest In Python
Martingale Swing Trading Strategy Algorithmic Backtest In Python
  • 2022.02.10
  • www.youtube.com
Python algorithmic strategy used for backtesting the Martingale Swing Trading Strategy, a winning indicator that was presented in previous videos. Martingale...
 

알고리즘 트레이딩을 위한 Martingale 트레이딩 전략 백테스팅



알고리즘 트레이딩을 위한 Martingale 트레이딩 전략 백테스팅

오늘은 거래 손실을 보상하기 위해 모든 거래 전략에 통합할 수 있는 Martingale 접근법에 대해 논의할 것입니다. Python을 사용하여 이 방법을 백테스트하고 Martingale을 구현할 때 관련된 이점과 위험을 탐구합니다.

주머니에 20달러를 가지고 카지노에 들어가 색깔에만 돈을 걸고 룰렛을 하기로 결정했다고 상상해 봅시다. 우리는 빨강이나 검정에 1달러를 걸 것입니다. 빨간색에 대한 첫 번째 내기가 지면 19달러가 남게 됩니다. 이전에 내기에서 졌기 때문에 다음 라운드에서 우리는 내기를 2달러로 두 배로 늘릴 것입니다. 이 내기도 지면 17달러가 남게 됩니다. 우리는 이전 손실을 보상하기 위해 우리가 질 때마다 내기를 계속 두 배로 늘립니다. 결국, 우리는 이전 손실을 커버하고 약간의 이익을 추가하는 승리 베팅을 할 것입니다. 이 예에서는 초기 금액보다 약간 많은 총 21달러가 됩니다. 패배 후 베팅 금액을 두 배로 늘리는 이 접근 방식을 Martingale 접근 방식이라고 합니다.

처음에는 Martingale 방법이 유망해 보이며 빠르고 상당한 이익을 얻을 수 있다는 인상을 줄 수 있습니다. 그러나 이 접근 방식과 관련된 위험을 이해하는 것이 중요합니다. 이 방법과 그 위험을 더 잘 이해하기 위해 Monte Carlo 접근 방식을 사용하여 전략을 백 테스트할 것입니다. 이 접근 방식은 임의의 숫자를 사용하여 기술 지표나 맞춤형 예측을 완전히 무시하고 매수 또는 매도 포지션에 대한 신호를 생성합니다. 신호는 균일한 무작위 분포만을 기반으로 합니다.

백 테스트를 구현하기 위해 Python 코드를 작성합니다. 데이터 조작을 위해 pandas와 같은 필요한 라이브러리를 가져오는 것으로 시작합니다. 데이터를 로드하고 정리하여 거래량이 0인 행을 제거합니다. 데이터를 준비한 후 numpy 모듈의 random 함수를 사용하여 임의 신호를 생성합니다. 각 촛대에 대해 0과 1 사이의 난수를 생성합니다. 숫자가 0.5 미만이면 매도 신호(1)를 할당하고 0.5를 초과하면 매수 신호(2)를 할당합니다.

다음으로 백테스팅 라이브러리의 전략 클래스에서 상속되는 "MyStrategy"라는 전략 클래스를 정의합니다. 초기 위치 크기는 10 단위로 설정됩니다. 또한 Martingale 접근 방식에 따라 변경되는 위치 크기를 추적하기 위해 변수 "my_size"를 정의합니다. 긍정적인 신호가 생성되고 열려 있는 거래가 없으면 Martingale 접근 방식에 따라 "my_size"에 2를 곱한 위치 크기로 새 거래를 엽니다. 마감된 거래가 있고 마지막 거래가 수익성이 있는 경우 포지션 크기를 초기 크기로 재설정합니다. 이렇게 하면 거래에서 승리한 후 초기 위치 크기로 돌아갈 수 있습니다. 매수 또는 매도 신호가 발생하고 열려있는 거래가 없으면 마지막 종가를 기준으로 손절매 및 이익 실현 수준을 설정하고 해당 거래를 실행합니다.

전략이 정의되면 수수료 없이 $10,000의 초기 자본을 사용하여 백테스트를 실행합니다. 백 테스트 통계는 손실을 나타내는 -4.8%의 수익을 보여줍니다. 에퀴티 플롯은 전략이 처음에는 약간의 이득이 있었지만 특정 지점에서 감소하기 시작했음을 보여줍니다. 신호가 무작위이기 때문에 승률은 예상대로 50%에 가깝습니다. 총 거래 수는 100개입니다.

추가 조사를 위해 손절매를 수정하고 이익 수준을 400핍으로 설정하고 백테스트를 다시 실행합니다. 그러나 이 조정으로 문제가 해결되지는 않습니다. 감소하는 자본은 일련의 손실 거래 후 포지션 크기를 계속 두 배로 늘리기에 충분한 자금이 없는 결과입니다. 이 문제를 해결하기 위해 초기 포지션 크기를 5로 줄이고 손절매 및 이익실현 수준을 300핍으로 설정합니다. 이러한 조정을 수행한 후 백 테스트를 다시 실행합니다. 업데이트된 전략은 -0.7%의 수익을 내며 이전 버전에 비해 손실이 적음을 나타냅니다. 그러나 주식 플롯은 더 느린 속도이지만 여전히 하락 추세를 보여줍니다. 승률은 50%에 가깝고 총 거래 수는 여전히 100개입니다.

이러한 결과에서 우리는 포지션 크기, 손절매, 이익 실현 수준을 조정하더라도 Martingale 접근 방식이 이 무작위 신호 시나리오에서 수익성 있는 결과를 제공하지 않는다는 것을 관찰할 수 있습니다. 감소하는 자본은 상당한 하락의 잠재적 위험과 거래 계좌 고갈 가능성을 나타냅니다.

이 백 테스트는 무작위 신호를 가정하여 수행되었다는 점에 유의해야 합니다. 실제 거래에서는 기술 분석 또는 기본 분석을 기반으로 한 전략이 일반적으로 거래 신호를 생성하는 데 사용됩니다. 이러한 전략은 무작위 신호에 의존하지 않고 시장 데이터를 기반으로 패턴, 추세 또는 기회를 식별하는 것을 목표로 합니다. 이러한 경우 Martingale 접근 방식이 적합하지 않거나 효과적이지 않을 수 있습니다.

또한 Martingale 접근 방식은 높은 수준의 위험을 수반합니다. 연패 후 연승이 이어질 것으로 가정하여 트레이더가 손실을 만회할 수 있습니다. 그러나 실제로는 거래에서 이기는 거래가 손실 거래에 뒤따른다는 보장이 없으며 항상 연속 손실의 가능성이 있습니다. 각 손실 후 포지션 크기를 두 배로 늘리면 특히 시장 상황이 불리하거나 불안정한 경우 상당한 손실과 계정 고갈로 빠르게 이어질 수 있습니다.

Martingale 접근 방식은 빠른 회복 및 수익 가능성으로 인해 매력적으로 보일 수 있지만 관련 위험을 고려하고 거래 전략에 대한 적합성을 신중하게 평가하는 것이 중요합니다. 엄격한 손절매 수준 설정, 적절한 포지션 크기 유지, 거래 접근 방식 다양화와 같은 위험 관리 기술을 구현하면 관련된 위험을 완화하는 데 도움이 될 수 있습니다.

요약하면 Martingale 접근 방식은 특히 무작위 신호와 함께 사용할 때 위험한 전략이 될 수 있습니다. 잠재적 이익과 관련 위험을 모두 고려하여 거래 전략을 철저하게 테스트하고 평가하는 것이 중요합니다.

Martingale Trading Strategy Backtesting For Algorithmic Trading
Martingale Trading Strategy Backtesting For Algorithmic Trading
  • 2022.02.03
  • www.youtube.com
Testing the Martingale trading strategy for algorithmic trading in python, I hope you'll enjoy it.Are you interested in algorithmic trading and looking for a...
 

Python에서 이동 평균 거래 전략 백테스팅



Python에서 이동 평균 거래 전략 백테스팅

더 복잡한 모델을 위해 단순한 전략을 간과하는 경우가 많습니다. 그러나 단순함의 힘을 과소평가해서는 안 됩니다. 오늘 저는 복잡한 거래 시스템과 경쟁할 수 있고 긍정적인 수익을 낼 수 있는 간단한 방법을 제시할 것입니다. 간단한 규칙의 장점은 Python을 사용하여 알고리즘 거래를 위해 쉽게 자동화할 수 있다는 것입니다. 우리는 수익성을 보장하기 위해 다른 통화에 대해 이 전략을 백테스트할 수 있습니다.

이 간단한 전략에 대해 자세히 살펴보겠습니다. 먼저 200일 이동 평균 곡선을 지표로 고려할 것입니다. 양초가 곡선 위에 있으면 상승 추세를 나타내며 매수 포지션을 제안합니다. 반대로 캔들이 이동 평균 곡선 아래에 있으면 하락 추세를 나타내며 매도 포지션을 암시합니다.

구매 포지션의 진입점을 결정하기 위해 이전 캔들을 조사합니다. 현재 캔들의 가장 낮은 값을 이전 캔들의 가장 낮은 값과 비교할 것입니다. 현재 캔들의 낮은 값이 이 모든 이전 값보다 낮으면 구매 포지션의 진입점을 식별한 것입니다. 동일한 개념이 매도 포지션에 대해 반대 방향으로 적용됩니다.

이 전략은 간단해 보일 수 있지만 고유한 문제가 있습니다. 고려해야 할 첫 번째 매개변수는 이동 평균의 길이입니다. 200, 100 또는 다른 값이어야 합니까? 수익을 극대화하기 위해 특정 통화 쌍에 대한 백 테스트를 통해 미세 조정할 수 있습니다. 또 다른 매개변수는 고려할 이전 캔들 수입니다. 7개, 8개, 10개 또는 20개의 양초를 분석해야 합니까? 다양한 값을 실험함으로써 전략 성과에 미치는 영향을 평가할 수 있습니다.

이 지표 부분은 비교적 간단하지만 전략을 효과적으로 만들기 위해서는 거래 관리 접근 방식과 결합해야 합니다. 여기에는 손절매 및 이익 실현 값을 정의하는 것이 포함됩니다. 이러한 값을 설정하는 데는 두 가지 옵션이 있습니다. 시장의 평균 실제 범위(ATR)와 관련되거나 모든 거래에 대해 고정 값을 사용할 수 있습니다. 긍정적인 수익을 보장하기 위해 적절한 거래 관리 방식을 선택하는 것이 중요합니다. 또한 ATR을 기반으로 손절매 값을 조정하는 트레일링 손절매를 사용할 수 있습니다.

코드에서 이러한 매개변수의 다양한 조합을 실험하여 최적의 설정을 찾고 전략의 성과를 평가할 수 있습니다. 간단한 전략임에도 불구하고 상대적으로 고려해야 할 매개 변수가 많습니다.

Python에서 이 전략을 구현하기 위해 Jupyter Notebook 파일을 사용합니다. 데이터를 로드하고 pandas-technical-analysis 모듈을 사용하여 지수 이동 평균(EMA) 및 ATR 계산을 적용합니다. 그런 다음 EMA 신호 및 높음-낮음 신호를 생성하는 기능을 정의합니다. 모든 것이 올바르게 작동하는지 시각적으로 확인하기 위해 EMA 곡선으로 데이터를 플로팅합니다.

다음으로 EMA 신호 및 고저 신호 기능을 데이터 프레임에 적용하여 매수 또는 매도 포지션에 대한 신호를 생성합니다. 플롯된 신호를 검토하여 추세 및 진입점을 식별하는 데 있어서 신호의 정확성과 효율성을 검증할 수 있습니다.

전략을 테스트하기 위해 신호를 사용하여 매수 또는 매도 포지션을 결정하고 ATR 또는 고정 비율을 기반으로 손절매 및 이익 실현 값을 설정하는 함수를 정의합니다. 2003년에서 2021년 사이에 유로-미국 달러 4시간 차트에서 이 전략을 백테스팅하면 약 29%의 플러스 수익률을 보여줍니다.

그러나 주식 곡선을 평가하고 추세 시장에서 전략이 잘 수행될 수 있지만 수평적 가격 변동 기간에는 어려움을 겪을 수 있음을 이해하는 것이 중요합니다. ATR 기반 값 대신 고정 값을 사용하는 등 다양한 손절매 및 이익실현 구성을 실험함으로써 전략의 성과를 분석하고 그에 따라 적응할 수 있습니다.

결론적으로, 가장 단순한 전략이라도 효율성을 보장하기 위해서는 매개변수와 거래 관리 접근 방식을 신중하게 고려해야 합니다. 이 전략은 이동 평균과 같은 기본 지표에 의존하지만 적절한 거래 관리 기술과 결합하면 여전히 수익성 있는 거래 신호를 생성할 수 있습니다.

전략을 구현하고 백테스팅을 수행한 후에는 성능 지표를 평가하는 것이 필수적입니다. 고려해야 할 몇 가지 주요 메트릭은 총 거래 수, 승률(수익성 있는 거래의 백분율), 거래당 평균 이익, 최대 하락(가장 높은 최고점에서 최저점까지의 하락) 및 위험 보상 비율입니다.

이러한 메트릭을 분석하여 전략이 기대치를 충족하고 위험 허용 범위와 일치하는지 확인할 수 있습니다. 완벽한 전략은 없으며 거래에는 항상 위험이 수반된다는 점을 기억하는 것이 중요합니다. 따라서 장기적인 성공을 위해서는 적절한 위험 관리와 투자 분산이 중요합니다.

또한 전략에 대한 견고성 테스트를 수행하는 것이 좋습니다. 여기에는 다양한 기간, 통화 쌍 또는 자산 클래스와 같은 다양한 시장 조건에서 성과를 평가하는 것이 포함됩니다. 그렇게 함으로써 우리는 전략의 적응성을 측정하고 그 수익성이 특정 시나리오에 국한되지 않도록 할 수 있습니다.

또한 이 간단한 전략의 한계를 고려해 볼 가치가 있습니다. 변동성이 높거나 급격한 가격 변동이 있는 기간 동안 모든 시장 뉘앙스를 포착하거나 최적의 성능을 발휘하지 못할 수 있습니다. 이 경우 성능 향상을 위해 보다 정교한 거래 시스템이나 추가 지표가 필요할 수 있습니다.

마지막으로 시장 상황이 변화함에 따라 전략을 지속적으로 모니터링하고 조정하는 것이 필수적입니다. 성과를 정기적으로 검토하고, 필요한 조정을 하고, 시장 동향과 뉴스에 대한 정보를 유지하는 것은 전략의 장기적인 실행 가능성에 기여할 것입니다.

성공적인 거래는 잘 정의된 전략, 규율 있는 실행, 지속적인 학습 및 적응의 결과임을 기억하십시오. 귀하의 거래 노력에 행운을 빕니다!

Moving Average Trading Strategy Backtesting In Python
Moving Average Trading Strategy Backtesting In Python
  • 2022.01.20
  • www.youtube.com
Welcome to this video on a beginner-friendly automated trading strategy using Python. In this video, we will be discussing a simple yet effective trading str...
 

Python의 알고리즘 트레이딩을 위한 후행 정지 백테스트



Python의 알고리즘 트레이딩을 위한 후행 정지 백테스트

여러분 안녕하세요. 이 비디오에 오신 것을 환영합니다. 오늘은 알고리즘 거래에서 손절매를 구현하는 다양한 방법을 살펴보겠습니다. 구체적으로 수치 프로그램으로 코딩하여 트레이딩 봇에 쉽게 통합할 수 있는 손절매 기술에 중점을 둘 것입니다.

손절매 값을 결정하는 방법에는 여러 가지가 있지만 일부 방법은 프로그램에 포함하기가 더 복잡하다는 점에 유의해야 합니다. 이 비디오에서는 지원 및 저항 수준과 이전에 다른 비디오에서 논의한 캔들 스틱 패턴을 사용하여 전략을 백 테스트합니다. 그러나 네 가지 다른 경우를 고려하여 손절매 값을 변경할 것입니다.

첫 번째 방법은 모든 거래에 대해 거래자가 미리 결정한 일정한 손절매 거리를 사용하는 것입니다. 매수 포지션에 관계없이 손절매 거리는 동일하게 유지됩니다.

두 번째 방법은 보다 역동적이며 ATR(Average True Range)을 활용합니다. 여기서 손절매 거리는 ATR과 직접적인 관련이 있습니다. 즉, 특정 위치에서 시장의 변동성에 따라 달라집니다.

세 번째 방법은 고정 거리 트레일링 손절매입니다. 이것은 일반적으로 사용되는 후행 손절 전략으로, 모든 위치에 대해 동일한 거리가 유지되어 후행 손절매의 역할을 합니다.

네 번째이자 마지막 방법은 트레이딩 포지션이 실행되는 순간의 평균 실제 범위를 고려하는 트레일링 손절매입니다. 즉, 정확한 순간의 시장 변동성을 반영하는 ATR을 기준으로 손절매 거리가 선택됩니다.

요약하면 손절매 값을 정의하는 이 네 가지 다른 방법을 사용하여 동일한 전략을 테스트할 것입니다. 손절매 값의 선택이 우리의 이익실현 가치에도 영향을 미친다는 점은 주목할 가치가 있습니다. 대부분의 경우 이익 실현 값은 이익 실현 거리와 손절매 거리 간의 비율에 따라 결정됩니다.

이제 Jupyter Notebook 파일을 살펴보고 이러한 메서드가 어떻게 구현되는지 살펴보겠습니다. 파일은 필요한 모듈을 가져오고 2003년부터 2021년까지 EUR/USD 통화 쌍의 가격 데이터가 포함된 CSV 파일을 로드하는 것으로 시작합니다. 데이터를 정리하고 ATR(Average True Range) 열을 추가하고 지원 및 저항 수준과 촛대 패턴.

또한 지지선 및 저항 수준에 대한 근접성뿐만 아니라 삼키는 패턴을 확인하는 기능도 도입합니다. 이러한 기능은 지원 또는 저항 수준에 가까운 캔들 패턴을 기반으로 전략을 구축하는 데 도움이 됩니다. 데이터 프레임에 신호 열을 추가하여 신호를 약세, 강세 또는 신호 없음으로 분류합니다.

전략을 백테스트하기 위해 백테스팅 모듈을 활용하고 거래자가 수동으로 설정한 고정 손절매 및 이익실현 거리를 포함하는 첫 번째 손절매 방법을 정의합니다. 우리는 $10,000의 현금 금액으로 시작하여 수익, 승률, 최고 및 최악의 거래, 최대 손실을 포함한 백 테스트 결과를 얻습니다.

다음으로 ATR을 활용하여 손절매 및 이익실현 거리를 정의하는 두 번째 방법을 구현합니다. ATR 값을 기반으로 거리를 조정하는 요소를 도입하고 전략을 백 테스트합니다. 결과를 이전 방법과 비교하고 수익 및 기타 성능 지표의 차이를 관찰합니다.

계속해서 고정된 거리의 후행 손절매인 세 번째 방법을 구현합니다. 여기서는 초기 손절매 거리만 지정하면 되고 이에 따라 후행 손절매가 조정됩니다. EUR/USD 쌍에 대해 500핍의 고정 거리를 사용하여 전략을 백테스트합니다.

마지막으로, 결과를 분석한 결과 고정된 거리를 가진 트레일링 손절매 방법이 약 131%의 가장 높은 수익률을 산출한다는 것을 발견했습니다. 다른 방법도 좋은 수익을 제공하지만 이 경우 후행 손절매 방법이 더 나은 성능을 보입니다.

결론적으로 우리는 각기 다른 이점과 고려 사항을 제공하는 네 가지 손절매 방법을 사용하여 동일한 전략을 테스트했습니다. 손절매 방법의 선택은 궁극적으로 거래자의 선호도와 특정 시장 상황에 따라 달라집니다.

일정한 정지 손실 방법은 단순성과 구현 용이성을 제공합니다. 시장 상황에 관계없이 모든 거래에서 일관된 위험 관리가 가능합니다. 그러나 변화하는 변동성 수준에 효과적으로 적응하지 못하여 변동성이 큰 기간 동안 손절매 거리가 더 넓어지거나 변동성이 낮은 기간 동안 손절매 거리가 좁아질 수 있습니다.

ATR 기반 손절매 방법은 시장 변동성에 적응하는 문제를 해결합니다. ATR을 변동성의 척도로 사용함으로써 정지 손실 거리는 현재 시장 상황에 동적으로 조정됩니다. 이것은 높은 변동성 동안 더 큰 손실로부터 보호하고 낮은 변동성 동안 더 많은 숨쉴 공간을 제공하는 데 도움이 될 수 있습니다. 그러나 변동성이 높은 기간 동안 손절매 거리가 넓어져 잠재적으로 손절매가 더 자주 발생할 수 있습니다.

고정 거리 후행 손절매 방법은 후행 손절매의 장점과 고정 거리의 단순성을 결합합니다. 그것은 거래에 유리하게 움직일 때 가격 뒤의 손절매를 추적하여 잠재적인 이익 극대화를 허용합니다. 이 방법은 더 큰 이익을 얻을 수 있는 추세 시장에서 특히 유용합니다. 그러나 고정된 거리가 변동성이 큰 상황에서 충분한 버퍼를 제공하지 못할 수 있으므로 급격한 가격 반전으로부터 효과적으로 보호하지 못할 수 있습니다.

ATR 기반 후행 손절매 방식은 ATR 기반 방식과 후행 손절매의 장점을 결합한 것입니다. 거래 진입 시점의 ATR을 고려하여 해당 시점의 시장 변동성을 기준으로 트레일링 손절매 거리를 조정합니다. 이는 위험 관리에 보다 적응적이고 대응적인 접근 방식을 제공합니다. 갑작스런 반전에 대한 보호를 제공하면서 더 큰 추세를 포착하는 데 도움이 될 수 있습니다. 그러나 높은 변동성 동안 손절매 거리가 넓어져 잠재적으로 손절매가 더 자주 발생할 수 있습니다.

손절 방법을 선택할 때 트레이더가 위험 허용 범위, 거래 스타일 및 시장 조건을 신중하게 고려하는 것이 중요합니다. 다양한 방법의 성능을 백테스팅하고 분석하면 정보에 입각한 결정을 내리는 데 도움이 될 수 있습니다. 또한 리스크 관리는 손절매 주문에만 의존해서는 안 되며 포지션 규모 조정, 다양화 및 전반적인 포트폴리오 관리도 고려해야 합니다.

손절매 방법은 완벽하지 않으며 여전히 손실이 발생할 수 있음을 기억하십시오. 적절한 위험 관리와 지속적으로 시장 상황을 모니터링하는 것은 성공적인 거래에 필수적입니다.

Trailing Stop Backtest For Algorithmic Trading in Python
Trailing Stop Backtest For Algorithmic Trading in Python
  • 2021.11.27
  • www.youtube.com
This video tests the Stop Loss VS Trailing Stop methods for Algorithmic Trading using python. Backtests are applied to one trading strategy showing the diffe...
 

Python에서 자동화된 RSI Divergence | 알고리즘 트레이딩



Python에서 자동화된 RSI Divergence | 알고리즘 트레이딩

안녕하세요 여러분, 이 비디오에 오신 것을 환영합니다. 오늘은 RSI 다이버전스에 대해 논의하고 거래에서 이 지표를 사용하는 다양한 전략을 살펴보겠습니다. 시작하기 전에 설명에 이 비디오에 사용된 Jupyter Notebook 파일에 액세스할 수 있는 다운로드 링크를 제공했습니다.

시작하려면 가격과 RSI 모두의 로컬 최소값과 최대값을 감지할 수 있는 코드를 작성해야 합니다. 이러한 점은 그래프에서 보라색 점으로 표시됩니다. 여기에 사용된 알고리즘은 각 측면에 있는 5개의 인접한 캔들보다 높으면 캔들의 최고점을 최대값으로 식별합니다. 마찬가지로 왼쪽과 오른쪽에 있는 5개의 캔들보다 낮으면 캔들의 낮은 값이 최소값으로 간주됩니다. 극단점 감지에 대한 기본 설정에 따라 이 숫자를 조정할 수 있습니다.

다음으로 감지된 가격의 최소값과 최대값 및 RSI를 선형 기울기에 맞춥니다. 여기에는 이러한 점을 통과하는 가장 적합한 직선을 찾는 것이 포함됩니다. 가격(녹색)과 RSI(보라색)의 두 가지 슬로프가 있습니다. 이 기울기는 각 지표의 추세 방향을 나타냅니다.

그런 다음 가격의 기울기와 RSI를 비교하여 다이버전스가 있는지 확인할 수 있습니다. 상승추세에서는 두 기울기가 양수여야 하며 이는 가격의 저점과 RSI의 고점을 나타냅니다. 반대로 하락 추세에서는 두 기울기가 모두 음수여야 합니다. 기울기가 가격에 대한 양의 기울기와 RSI에 대한 음의 기울기 또는 그 반대와 같이 다른 부호를 갖는 경우 다이버전스를 나타냅니다.

다이버전스를 분석하는 데는 다양한 접근 방식이 있지만 이 비디오에서는 두 가지 방법을 살펴보겠습니다. 첫 번째 방법은 다항식 회귀를 사용하여 여러 극단점을 맞추는 것이므로 한 번에 두 개 이상의 점을 고려할 수 있습니다. 두 번째 방법은 가격과 RSI의 마지막 두 최소값과 최대값을 비교하는 데 중점을 둡니다. 이 점들 사이의 차이점을 비교함으로써 차이를 식별할 수 있습니다.

RSI 다이버전스를 사용하는 전략은 수동 거래에서 자주 논의되지만 일반적으로 두 연속 지점 사이의 추세에 중점을 둡니다. 이 비디오에서는 기울기 피팅과 다항식 회귀를 활용하여 여러 지점을 동시에 분석할 수 있는 수치적 접근 방식을 소개합니다.

비디오 전반에 걸쳐 Jupyter Notebook을 사용하여 Python에서 이러한 분기 방법을 코딩합니다. 제공된 Notebook 파일은 필요한 라이브러리를 가져오고, CSV 파일에서 캔들 데이터를 읽고, RSI를 계산하고, 가격과 RSI 모두에 대한 피벗 포인트를 감지하는 기능을 정의합니다. 이러한 기능은 각 캔들을 피벗 하이, 피봇 로우, 둘 다 또는 둘 다로 분류합니다.

비디오가 끝나면 RSI 다이버전스와 거래에서 이러한 전략을 구현하는 방법을 명확하게 이해하게 될 것입니다. 이 콘텐츠가 도움이 되셨다면 동영상에 좋아요를 눌러 채널을 응원해 주세요. 귀하의 의견은 우리에게 소중하므로 언제든지 의견을 남겨주십시오.

이제 Jupyter Notebook 파일을 살펴보고 Python에서 이러한 개념을 코딩하는 방법을 살펴보겠습니다.

중단한 위치에서 계속해서 데이터 프레임에 "피벗" 열을 추가했습니다. 이 열은 각 캔들을 피벗 하이, 피벗 로우, 둘 다 또는 둘 다로 분류합니다. 이제 코드의 다음 단계로 넘어갑시다.

다음으로 x 및 y 좌표가 주어진 두 점 사이의 기울기를 계산하는 "get_slope"라는 함수를 정의합니다. 이 함수는 가격 및 RSI 데이터의 기울기를 계산하는 데 사용됩니다.

그런 다음 데이터 프레임과 피벗 범주(피벗 높음 또는 피벗 낮음)를 매개 변수로 사용하는 "fit_slope"라는 또 다른 함수를 정의합니다. 이 함수는 주어진 범주를 기반으로 피벗 포인트를 식별하고 "get_slope" 함수를 사용하여 해당 포인트에 선형 기울기를 맞춥니다. 적합선의 기울기 값을 반환합니다.

이제 이러한 함수를 사용하여 가격 및 RSI 데이터의 기울기를 계산할 수 있습니다. 데이터 프레임에 "price_slope" 및 "rsi_slope"라는 두 개의 새 열을 만듭니다. "price_slope" 열의 경우 데이터 프레임과 피벗 범주를 매개 변수로 사용하여 "fit_slope" 함수를 호출합니다. RSI 데이터에 대해 동일한 프로세스를 반복하여 RSI 피벗 포인트의 기울기를 계산하고 결과를 "rsi_slope" 열에 저장합니다.

이 시점에서 우리는 가격과 RSI 데이터 모두에 대한 기울기를 얻었습니다. 이제 이러한 기울기를 비교하여 추세 방향을 결정할 수 있습니다. 데이터 프레임에 추세가 상향, 하향 또는 정의되지 않았음을 나타내는 "추세"라는 또 다른 열을 추가합니다.

추세를 결정하기 위해 price_slope 및 rsi_slope 열의 부호를 확인합니다. 두 기울기가 양수이면 상승 추세를 나타내므로 추세 열에 "위로" 값을 할당합니다. 두 기울기가 모두 음수이면 하락 추세를 나타내므로 추세 열에 "Down" 값을 할당합니다. 기울기의 부호가 다르거나 기울기 중 하나가 0인 다른 모든 경우에는 추세 열에 "정의되지 않음" 값을 할당합니다.

추세 정보를 사용할 수 있으므로 이제 가격과 RSI 데이터 간의 차이를 확인할 수 있습니다. 분기가 있는지 여부를 나타내는 "divergence"라는 열을 데이터 프레임에 추가합니다.

차이를 확인하기 위해 price_slope 및 rsi_slope 열의 부호를 비교합니다. 징후가 반대이면 발산을 나타냅니다. 이러한 경우 분기 열에 "Divergence" 값을 할당합니다. 부호가 동일하거나 기울기 중 하나가 0이면 발산이 없으며 발산 열에 "No Divergence" 값을 할당합니다.

마지막으로 결과 데이터 프레임을 인쇄하여 각 캔들에 대해 계산된 기울기, 추세 방향 및 다이버전스를 볼 수 있습니다.

전반적으로 코드는 다음 단계를 수행합니다.

  1. 필요한 라이브러리를 가져오고 도우미 기능을 정의합니다.
  2. 촛불 데이터를 읽고 RSI를 계산합니다.
  3. 각 캔들을 피벗 하이, 피벗 로우, 둘 다 또는 둘 다로 분류하는 피벗 열을 추가합니다.
  4. 피벗 포인트를 기준으로 가격 및 RSI 데이터의 기울기를 계산합니다.
  5. 슬로프의 징후를 기반으로 추세 방향을 결정합니다.
  6. 기울기의 징후를 기반으로 가격과 RSI 데이터 간의 차이를 확인합니다.
  7. 계산된 기울기, 추세 방향 및 분기와 함께 결과 데이터 프레임을 인쇄합니다.

이 코드는 RSI 다이버전스와 가격 추세와의 관계를 분석하는 방법을 제공하여 트레이더가 잠재적으로 거래 기회를 식별할 수 있도록 합니다.

RSI Divergence Automated In Python | Algorithmic Trading
RSI Divergence Automated In Python | Algorithmic Trading
  • 2021.11.12
  • www.youtube.com
The RSI Divergence Detection is programmed in python as an automated indicator for algorithmic trading, the Jupyter notebook file is available from the link:...
 

Python에서 자동화된 가격 추세 채널



Python에서 자동화된 가격 추세 채널

안녕하세요 여러분, 오늘 이 비디오를 시청해 주셔서 감사합니다. 우리는 가격 변동 채널을 감지하는 Python 알고리즘을 제시하게 되어 기쁩니다. 아래 설명의 링크에서 코드를 Jupyter Notebook 파일로 다운로드할 수 있습니다.

우선, 이 아이디어를 제안한 댓글 섹션의 Mr. or Mrs. M에게 공이 돌아갑니다. 한 달 이상 기다려 주셔서 감사합니다. 이 영상이 여러분을 실망시키지 않기를 바랍니다.

시작하기 전에 이 채널의 목적을 명확히 합시다. 우리의 목표는 교육 콘텐츠를 제공하는 것이므로 단순히 다운로드하여 블랙박스로 사용하는 프로그램을 제공하는 것이 아닙니다. 대신, 우리는 사고 과정과 프로그램이 어떻게 구축되었는지 설명하는 것을 목표로 합니다. 이 비디오가 끝나면 여기에 제시된 알고리즘에서 영감을 받아 자신만의 알고리즘을 구축하고 확장 기능을 추가할 수도 있습니다.

그러나 시장과 같은 동적 및 비선형 환경에 적용될 때 수치 모델의 한계를 인정하는 것이 중요합니다. 가격 추세 및 예측은 여전히 연구의 열린 분야이며, 최선의 접근 방식을 찾기 위해 지속적인 연구가 진행되고 있습니다. 시장은 매우 역동적이며 추세와 변화 속도는 시간이 지남에 따라 달라질 수 있습니다. 따라서 가격 변동 예측에 내재된 한계와 복잡성을 인정하십시오.

이제 알고리즘에 대해 알아보겠습니다. 우리가 제시하는 알고리즘은 이 채널을 통해 수집된 단순한 정보와 우리의 상상을 기반으로 합니다. 접근 방식은 특정 양초 또는 날짜에 자신을 배치하고 특정 수의 양초에 대해 시간을 거슬러 올라가는 것을 포함합니다.

이 시간을 동일한 부분 또는 시간 창으로 나눕니다. 각 창에서 최대 및 최소로 알려진 최고 및 최저 가격대를 식별합니다. 우리는 모든 시간 창에 대해 이 프로세스를 반복하고 최소점과 최대점을 직선인 별도의 1차 다항식에 맞춥니다.

그러나 이러한 슬로프는 포인트를 통과하기 때문에 반드시 가격을 감싸지는 않습니다. 이 문제를 해결하려면 이러한 기울기의 절편 값을 개선해야 합니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 한 가지 접근 방식은 곡선이 시간 창의 중간에 가장 가까운 최소 지점 또는 창 내에서 발견된 최고 및 최저 지점과 같은 특정 지점을 통과하도록 절편을 조정하는 것입니다.

고려해야 할 또 다른 측면은 기간의 길이입니다. 기본 설정에 따라 백 캔들 수에 대해 다른 값을 선택할 수 있습니다. 예를 들어, 현재 캔들 뒤에 있는 30개의 막대 +/- 20개의 막대를 가져와 프로그램이 해당 범위 내에서 돌아다니도록 할 수 있습니다. 그런 다음 프로그램은 서로 다른 기울기를 평가하고 채널 감지를 나타내는 두 기울기 사이에서 가장 평행한 상황을 제공하는 촛불 수를 반환합니다.

동영상 설명에 있는 링크에서 다운로드할 수 있는 Jupyter Notebook 파일을 제공했습니다. 파일에는 알고리즘을 구현하기 위한 Python 코드가 포함되어 있습니다. 시작하려면 pandas 라이브러리를 가져오고 2003년부터 2021년까지의 유로 대 달러 촛대 데이터가 포함된 CSV 파일에서 데이터를 로드합니다.

다음으로 백 캔들 수로 정의된 시간 창 내에서 최대값과 최소값을 검색합니다. 창을 더 작은 창으로 분할하고 각 창 내에서 최대 및 최소 지점을 찾습니다. 이 포인트는 numpy 배열에 저장됩니다.

최소값과 최대값을 얻은 후 numpy polyfit 함수를 사용하여 포인트를 1차 다항식 라인에 맞춥니다. 기울기와 절편을 포함하는 결과는 변수에 저장됩니다.

기울기를 시각화하기 위해 캔들스틱 차트를 플로팅하고 기울기에 해당하는 선을 추가합니다. 이 단계에서 슬로프는 가격을 완벽하게 감싸지 못할 수 있지만 합리적인 핏을 제공합니다.

적합도를 개선하기 위해 기울기의 절편을 수정할 수 있습니다. 한 가지 접근 방식은 절편이 각 시간 창 내에서 가장 높은 지점과 가장 낮은 지점을 통과하도록 조정하는 것입니다. 시간 창 내에서 가장 높은 지점과 가장 낮은 지점을 계산하고 그에 따라 기울기의 절편을 업데이트합니다.

최적의 채널을 결정하기 위해 백 캔들 수의 다른 값을 반복하고 두 슬로프 간의 병렬성을 평가합니다. 두 경사 사이의 각도를 계산하고 사전 정의된 임계값 내에 속하는지 확인합니다. 그렇다면 유효한 채널로 간주하고 추가 분석을 위해 백 캔들 수와 각도를 저장합니다.

마지막으로 캔들스틱 차트를 플로팅하고 채널에 해당하는 선을 오버레이하여 감지된 채널을 시각화할 수 있습니다. 식별된 가격 변동 채널을 시각적으로 보여줍니다.

이 알고리즘은 단순화된 접근 방식이며 모든 유형의 가격 변동 채널을 캡처하지 못할 수 있다는 점에 유의해야 합니다. 시장은 복잡하고 이 알고리즘의 범위를 넘어서는 다양한 패턴과 역학이 있을 수 있습니다. 그러나 이 알고리즘은 채널 감지를 위한 시작점 역할을 하며 개별 요구 사항 및 기본 설정에 따라 확장하거나 사용자 정의할 수 있습니다.

Jupyter Notebook 파일을 다운로드하고 코드를 자세히 살펴보는 것이 좋습니다. 다양한 매개변수로 실험하고, 다양한 데이터 세트에서 테스트하고, 성능을 확인하세요. 필요와 아이디어에 맞게 알고리즘을 자유롭게 수정하고 향상시키십시오.

이 비디오와 함께 제공되는 코드가 자신의 채널 감지 알고리즘을 개발하는 데 필요한 통찰력과 영감을 제공하기를 바랍니다. 핵심은 기본 개념을 이해하고 특정 요구 사항과 시장 상황에 맞게 조정하는 것임을 기억하십시오.

시청해 주셔서 감사합니다. 귀하의 피드백과 질문을 기다리겠습니다. 즐거운 코딩하세요!

Price Trend Channels Automated In Python
Price Trend Channels Automated In Python
  • 2021.10.30
  • www.youtube.com
This video is about detecting price trend and price channels and how to automate this process in Python. The algorithm is presented and explained then the co...