이중 입력 평균 가격 추적 손절 전략


생성 날짜: 2023-12-01 13:33:48 마지막으로 수정됨: 2023-12-01 13:33:48
복사: 0 클릭수: 576
avatar of ChaoZhang ChaoZhang
1
집중하다
1619
수행원

이중 입력 평균 가격 추적 손절 전략

개요

이 전략은 이중 입구 방식을 채택하고, 첫 입구 지점에서 입구한 후, 가격이 첫 번째 정지 지점에 도달하지 않으면, 더 높은 가격으로 다시 입구하여, 상장 효과를 달성한다. 또한, 전략은 동 가격 추적 스톱 로드 방식을 채택하고, 실시간으로 스톱 로드 라인의 위치를 업데이트하고, 스톱 로드 라인을 입구 평균 가격의 일정한 퍼센트 이상으로 설정하여 수익을 잠금하고, 위험을 제어한다.

전략 원칙

전략은 우선 가격이 200일 간소 이동 평균보다 낮은지 판단하고, 만약 그렇다면, 진입 조건을 충족한다. 전략은 매일 14:29 - 15:00 사이에 진입하여 첫 번째 진입 지점을 형성한다. 그 후 전략은 첫 번째 스톱 라인과 스톱 라인을 그리게 된다.

가격이 상승하지만 첫 번째 정지 목표에 도달하지 않으면, 첫 번째 입구 지점에서 입구 가격보다 5% 높은 위치에서 다시 입구하여 부가가치를 달성합니다. 이 때, 전략은 중지 선의 위치를 업데이트하여 현재 지분의 평균 입구 가격의 1.15 배로 설정합니다. 동시에 두 번째 정지 선도 그려집니다.

이 전략은 두 개의 스톱 목표와 추적 스톱로스로 수익을 잠금화할 수 있으며, 동시에 포지션으로 더 많은 수익을 얻을 수 있다.

우위 분석

이 전략에는 다음과 같은 장점이 있습니다.

  1. 이중 입금 방식은 위험을 증가시키지 않고 더 높은 수익을 얻을 수 있습니다.

  2. 실시간으로 스톱 라인 위치를 업데이트하고, 평균 가격 추적 스톱 방식을 채택하여 위험을 잘 제어하고, 수익을 잠금 할 수 있다.

  3. 하락시장에 포지션을 개설하고, 역시장 운영 능력을 갖춘다.

  4. 입장시간과 장소는 합리적으로 설정되어 있어, 덫을 피한다.

  5. 변수 설정은 합리적이고, 스톱 스톱 손실 지점은 충분히 단단하며, 수익 위험은 높다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 이중 입점 상장 방식은 손실을 증가시킬 수 있다. 두 입점 모두 결국 손실이 멈춘다면 손실이 증가한다.

  2. 만약 스톱포인트가 잘못 설정되어 위험성을 효과적으로 통제하지 못한다면, 감당할 수 있는 것보다 더 큰 손실을 초래할 수 있다.

  3. 입학시간을 잘못 선택하면 입학을 앞당기게 될 가능성이 높아진다.

  4. 매개 변수 설정이 잘못되면, 중지 지점이 너무 멀리 있거나 중지 지점이 너무 가까이 있으면 수익이 떨어질 수 있습니다.

이러한 위험은 합리적인 매개 변수 최적화와 엄격한 위험 통제를 통해 감소 및 피할 수 있습니다.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 다양한 기술 지표를 입시 조건으로 테스트하고, 더 나은 입시 지점을 찾습니다.

  2. 스톱톱 스톱 손실 지점을 테스트하고 최적화하여 수익 위험 비율을 극대화하십시오.

  3. 다양한 가설을 테스트하여 최적의 가설배수를 결정한다.

  4. 트렌드를 판단하는 규칙에 가입하여 역전입을 피하십시오.

  5. 입학 시기를 최적화하여 입학 시기를 앞당기지 않도록하십시오.

요약하다

이 전략은 전반적으로 매우 실용적이며, 강력한 실전적 의미를 갖는다. 이중 입출장 가설 방식을 채택하면 위험을 통제하는 전제하에서 더 높은 수익을 얻을 수 있으며, 평균 가격 추적 스톱 로스는 수익을 잘 잠금하고 위험을 통제할 수 있다. 합리적인 매개 변수 최적화 및 엄격한 위험 통제를 통해 이 전략은 안정적인 지속적인 알파를 얻을 수 있다.

전략 소스 코드
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//              @version=4
strategy("8 Whittle Down", "8 WD", 1, initial_capital=0)


//              DUAL ENTRIES
//              ADDS ON MORE SHARES IF THE PILOT TRADE DOES NOT REACH PROFIT TARGET
//              RED     LINE        == STOP LOSS LINE
//              GREEN   LINE        == PROFIT TARGET FOR THE 1ST TRADE
//              YELLOW  LINE        == ADD ON SHARES TO THE TRADE
//              WHITE   LINE        == PROFIT TARGET FOR THE 1ST & SECOND TRADE COMBINED


StopLossPerc        = input(1.15, "Total Stop Loss", step=0.01)


T2EntTrgPerc        = input(1.05, "Enter Second trade @ what higher 5%?", step=0.01)    //  BUY STOP LIMIT ONLY WHEN ONE TRADE IS ALREADY OPEN & AIMS TO BUY DOUBLE THE OWNED SHARES AT A HIGHER ENTRY PRICE // YELLOW LINE

T1ProfTrgPerc       = input(0.95, "First Trade Profit % Target", step=0.01)
T2ProfTrgPerc       = input(0.90, "Second Trade Profit % Target", step=0.01)


RiskRange           = close*(StopLossPerc)-1
Shares              = floor(1000*1000/RiskRange) / 3                                    //  SPLITS THE RISK OVER THREE TRADES

F1                  = close < sma(security(syminfo.tickerid, "D", close[2]), 200)       //  HIGH OF OLD DATA -- SO NO REPAINTING
F2                  = strategy.opentrades == 0
buyTime             = time(timeframe.period, "1429-1500")                               //  BUY AT THE END OF THE  DAY
 
 
StopLossLine        = strategy.position_avg_price * StopLossPerc
StopLossCol         = strategy.opentrades != 0 ? #FF0000 : na
plot(StopLossLine,  "StopLossLine", StopLossCol, 2)



strategy.cancel_all()                                                                   //  CANCELS ALL ORDERS: BECAUSE THE SYSTEM WILL ADD A BUY STOP LIMIT ORDER FOR ENTRY TWO



///==============   ENTRY 1   ==============   
if  F1 and buyTime and strategy.opentrades == 0
    strategy.entry("S1", false, qty=Shares)


T1Prof              = strategy.position_avg_price * T1ProfTrgPerc
plot(T1Prof,        "1st Profit Target", strategy.opentrades == 1 ? #00FF00 : na, 2)

strategy.exit("S1 Ex", "S1", limit=T1Prof, stop=StopLossLine )


///==============   ENTRY 2   ==============   
T2EntryTrg          = strategy.position_avg_price * T2EntTrgPerc // enters on higher target than 1st entry
plot(T2EntryTrg,    "ent2EntryTrg", strategy.opentrades == 1 ? color.yellow : na, 2)
    
    
if  strategy.opentrades == 1
    strategy.order("S2", false, stop=T2EntryTrg, limit= T2EntryTrg, qty=Shares * 2)     //  BUYS MORE SHARES

T2Prof              = strategy.position_avg_price * T2ProfTrgPerc
    
T2Col               = strategy.opentrades == 2 ? color.white : na
plot(T2Prof,        "2nd Profit Target", T2Col, 2)
    
    
strategy.exit("S2 Ex", "S2", limit=T2Prof, stop=StopLossLine )