이동평균 파업 전략

저자:차오장, 날짜: 2023-11-28 13:50:49
태그:

img

전반적인 설명

이것은 이동 평균에 기반한 브레이크아웃 거래 전략입니다. 이동 평균으로 특정 기간 동안의 평균 가격을 계산합니다. 가격이 이동 평균을 통과하면 거래 신호가 생성됩니다.

전략 논리

이 전략은 주로 이동 평균 지표에 기반합니다. 이동 평균을 얻기 위해 기간 동안 평균 폐쇄 가격을 계산하기 위해 sma 함수를 사용합니다. 최신 폐쇄 가격이 이동 평균을 상향으로 돌파하면 구매 신호가 생성됩니다. 최신 폐쇄 가격이 이동 평균을 상향으로 돌파하면 판매 신호가 생성됩니다.

특히, 이동 평균 데이터 순서를 얻기 위해 전략에서 이동 평균의 소스 (최근 폐쇄 가격) 및 길이를 정의합니다. 그 다음 두 가지 조건을 설정합니다: 가격이 이동 평균보다 높을 때 긴 주문을 생성합니다. 가격이 이동 평균보다 낮을 때 짧은 주문을 생성합니다. 주문을 생성 한 후, 또한 수익을 취하고 손실을 중지합니다: 주문이 설정된 수익 비율에 도달 할 때 포지션의 일부를 폐쇄하고 주문이 미리 설정된 수익을 취하거나 손실을 중지 할 때 전체 포지션을 종료합니다.

이점 분석

이 방법은 간단하고 실용적인 전략입니다. 다음과 같은 장점이 있습니다.

  1. 논리는 명확하고 이해하기 쉽고 매개 변수를 조정합니다.
  2. 이동 평균은 시장 소음을 필터링하고 트렌드를 식별할 수 있는 일반적으로 사용되고 신뢰할 수 있는 기술 지표입니다.
  3. 동시에 수익을 취하고 손해를 멈추는 것을 설정하면 수익을 확보하고 위험을 통제할 수 있습니다.
  4. 간단한 매개 변수만 가지고 작동할 수 있습니다. 양자 입문 수준에 적합합니다.

위험 분석

이 전략은 많은 장점을 가지고 있지만 여전히 몇 가지 위험이 있습니다.

  1. 이동평균은 지연하는 경향이 있고 단기적 반전을 놓칠 수 있습니다.
  2. 전체적인 시장 환경을 고려하지 않고 함정에 빠질 가능성이 높습니다.
  3. 어떤 매개 변수 최적화도 전략 성능에 영향을 미칠 수 없습니다.
  4. 다른 지표가 필터링에 사용되지 않기 때문에 일부 잘못된 신호가있을 수 있습니다.

이러한 위험을 통제하기 위해, 우리는 필터링을 위한 다른 지표를 결합하여 최적화할 수 있습니다. 단기 시장 트렌드 판단을 도입하거나 최적의 매개 변수 조합을 찾기 위해 기계 학습 방법을 사용할 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 판단을 위해 다른 기술적 지표를 추가하여 거래 시스템을 구축하고 승률을 향상시킬 수 있습니다. MACD, KD와 같은 지표가 도입 될 수 있습니다.

  2. 스톱 손실 메커니즘을 추가합니다. 수익을 차단하고 더 큰 손실을 피하기 위해 후속 스톱 손실 또는 시간 기반 스톱 손실을 사용하십시오.

  3. 매개 변수 최적화를 수행합니다. 가장 좋은 조합을 찾기 위해 이동 평균 기간 매개 변수를 변경하십시오. 다른 유형의 이동 평균도 테스트 할 수 있습니다.

  4. 머신러닝 판단력을 높이고 추세 방향을 결정하기 위해 무작위 숲과 LSTM 같은 알고리즘을 여러 요소와 결합하여 사용하십시오.

  5. 진입 및 출구 논리를 최적화하십시오. 트렌드 끝에 가까운 트렌드에 반대되는 거래를 피하기 위해 트렌드 필터링 조건을 설정하십시오. 단계적 출구 논리를 사용하는 것을 고려하십시오.

요약

전체적으로,이 이동 평균 브레이크아웃 전략은 초보자 양자 거래 전략으로 매우 적합합니다. 그것은 간단한 논리, 이해하기 쉽고 작동하기 쉽고, 몇 가지 실용적인 효과를 가지고 있습니다. 동시에, 그것은 추가 테스트 및 최적화에 많은 공간을 남겨줍니다. 우리는 더 나은 양자 전략을 개발하기 위해이 기초에 더 많은 기술적 인 지표와 모델을 도입 할 수 있습니다.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-22 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  |-- Initialize Strategy Parameters:
strategy( 
     // |-- Strategy Title.
     title='[Tutorial][RS]Working with orders', 
     // |-- if shorttitle is specified, it will overwrite the name on the chart window.
     shorttitle='WwO', 
     // |-- if true it overlays current chart window, otherwise it creates a drawer to display plotting outputs.
     overlay=true, 
     // |-- Strategy unit type for default quantity, possible arguments: (strategy.cash, strategy.fixed, strategy.percent_of_equity)
     default_qty_type=strategy.cash, 
     // |-- Value to use for default trade size
     default_qty_value=1000, 
     // |-- Default Account size 
     initial_capital=100000, 
     // |-- Account Currency parameter
     currency=currency.USD
     )

//  |-- Strategy Profit/loss parameters:
profit = input(defval=5000, title='Take Profit')
loss = input(defval=5000, title='Stop Loss')
ratio = input(defval=2.0, title='Ratio at wich to take out a percentage off the table (take profit / ratio).')
percent = input(defval=50.0, title='Percentage of position to take profit.')
//  |-- Signal Parameters:
//  |
//  |-- Moving Average input source and length parameters.
src = input(defval=close)
length = input(defval=100)
//  |-- Moving Average Data series.
ma = sma(src, length)

//  |-- Condition for triggering a buy(long) order(trade).
if crossover(src, ma)
    //  |-- Create the order.
    strategy.order(id='Buy', long=true)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Buy Half Exit', from_entry='Buy', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Buy Full Exit', from_entry='Buy', qty_percent=100, profit=profit, loss=loss)
if crossunder(src, ma)
    //  |-- Create the order.
    strategy.order(id='Sell', long=false)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Sell Half Exit', from_entry='Sell', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Sell Full Exit', from_entry='Sell Half Exit', qty_percent=100, profit=profit, loss=loss)

//  |-- Output Functions.
plot(series=ma, title='MA', color=black)


더 많은