
점점 더 많은 트레이더가 완전 자동 거래를 위한 프로그램을 작성하고 있지만, 대부분은 여전히 수동 트레이더입니다. 실제로, 주관적인 수동 거래자도 주관적인 거래를 돕기 위해 몇 가지 작은 도구를 작성할 수 있습니다. 예를 들어, 때로는 좋은 진입 포지션을 찾아서 초기 포지션에 대한 고정 손절매와 추적 이익실현을 설정하기로 계획합니다. 그러면 시장의 후속 모니터링과 같은 에너지 소모적인 작업을 피할 수 있습니다. 확립된 손절매 및 이익 실현 계획을 따르고 프로그램이 시장을 모니터링하도록 하세요. 배팅에 지면 손실을 멈추고, 이긴 경우 수익 목표를 추적하여 수동 거래를 지원하세요.
Pine 언어를 사용하여 이러한 요구 사항을 설계하는 전략은 매우 간단합니다. 요구 사항에 따라 기능을 구현하려면 다음 매개변수를 설계해야 합니다.
/*backtest
start: 2022-09-24 00:00:00
end: 2022-09-27 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
args: [["v_input_1",20],["v_input_2",0],["v_input_4",50],["v_input_5",20],["RunMode",1,358374],["ZPrecision",0,358374],["XPrecision",3,358374]]
*/
strategy("跟踪止损止盈委托", overlay = true)
varip targetPrice = na
varip high_lowPrice = na
varip isTrade = false
varip isAlert = false
varip isAlertMinTick = false
varip isAlertFinished = false
varip offset = input(30, "offset", "跟踪止损止盈偏移")
varip limit = input(-1, "limit", "初始开仓价格,-1为不开仓,0为立即开仓,其它具体数值为限价价格")
varip amount = input(1, "amount", "开仓量")
varip loss = input(30, "loss", "止损")
varip targetOffset = input(30, "targetOffset", "触发跟踪止盈止损偏移量")
varip minTick = input(1, "minTick", "价格一跳")
tradeType = input.string("long", "direction", tooltip="下单方向,long做多,short做空", options=["long", "short"])
if not barstate.ishistory and not isAlertMinTick
runtime.log("检查syminfo.mintick是否正确!syminfo.mintick:", syminfo.mintick, "#FF0000")
if syminfo.mintick < minTick
runtime.error("系统syminfo.mintick < minTick参数", "#FF0000")
isAlertMinTick := true
if not barstate.ishistory and limit == -1 and not isAlert
runtime.log("没有设置开仓价格,当前limit为-1(防止误开仓,初始默认limit为-1),禁止开仓", "#FF0000")
isAlert := true
if isTrade and strategy.position_size == 0 and not isAlertFinished
runtime.log("所有委托流程执行完毕,仓位为0", "#FF0000")
isAlertFinished := true
if not barstate.ishistory and not isTrade and limit != -1
if limit == 0
strategy.entry("open", tradeType == "long" ? strategy.long : strategy.short, amount)
else if limit > 0
strategy.entry("open", tradeType == "long" ? strategy.long : strategy.short, amount, limit=limit)
if tradeType == "long"
targetPrice := (limit == 0 ? close : limit) + targetOffset
else
targetPrice := (limit == 0 ? close : limit) - targetOffset
strategy.exit("exit", "open", amount, loss=loss, trail_price=targetPrice, trail_offset=offset)
runtime.log("每点价格为:", syminfo.mintick, ",当前close:", close)
isTrade := true
if ((close > targetPrice and strategy.position_size > 0) or (close < targetPrice and strategy.position_size < 0)) and not barstate.ishistory
high_lowPrice := na(high_lowPrice) ? close : high_lowPrice
if strategy.position_size > 0
high_lowPrice := close > high_lowPrice ? close : high_lowPrice
else
high_lowPrice := close < high_lowPrice ? close : high_lowPrice
plot(targetPrice, "trail_price 触发线")
plot(strategy.position_size!=0 ? high_lowPrice : na, "当前最高价/最低价")
plot(strategy.position_size!=0 ? (strategy.position_size > 0 ? high_lowPrice-syminfo.mintick*offset : high_lowPrice+syminfo.mintick*offset) : na, "移动止损触发线")
전략 설계는 복잡하지 않습니다. 사용할 때는 보통 “실시간 가격 모델”로 설정해야 하는데, 매 순간 가격을 확인해야 하기 때문입니다.

매개변수의 손절매는 포인트(한 번의 가격 상승)로 표현되고, 오프셋 추적 이익 실현 오프셋도 포인트(한 번의 가격 상승)로 표현됩니다. targetOffset은 이익실현 트리거 라인의 오프셋을 추적하며 가격 거리로 표현됩니다(예를 들어, 30으로 설정하면 30위안의 거리를 의미합니다). 가격상승이 1일 때, 30번의 상승은 30위안의 차이를 의미합니다.
이러한 위탁 전략은 초기 롱 포지션뿐만 아니라 초기 숏 포지션도 허용하도록 설계되었습니다. 그러면 공매도 방향에 따라 손절매와 수익 추적이 처리됩니다.
디자인에서 구현된 기능을 설명해 보겠습니다.
1. 이 전략을 실행하는 동안 기본 포지션을 즉시 오픈한 다음 매개변수에 따라 손절매와 추적 이익실현을 설정합니다.

방향은 롱으로 설정되고, 제한 매개변수는 0으로 설정됩니다. 즉, 전략이 시장에 진입하고 실행되면 즉시 롱으로 전환되고, 금액은 1로 설정되며 전략은 1의 포지션을 오픈합니다. 계약.

2. 제한 매개변수와 진입 가격을 지정합니다.
다른 매개변수 설정은 변경되지 않으며 제한 매개변수 가격만 1276으로 지정하면 됩니다.

3. 기본 한도 매개변수는 -1이며, 이는 실수로 포지션을 여는 것을 방지하기 위해 아무런 작업도 수행되지 않음을 의미합니다.

Pine 언어 전략을 사용할 때는 가격 상승 데이터에 특별히 주의하세요. 시스템의 구체적인 가격 상승은 매개변수의 “가격 통화 정확도”와 관련이 있습니다.

“가격 통화 정밀도” 매개변수는 0으로 설정되어 있으며, 이는 가격 데이터 값이 단위 숫자까지 정확하다는 것을 의미합니다(즉, 소수 자릿수가 0임). 그러면 가격 변화의 최소 단위는 1입니다. 일부 매개변수는 특정 가격 상승과 관련이 있으므로 이 지점에 특별한 주의를 기울여야 합니다.
네, 위의 내용은 이 반자동 위탁 전략의 완전한 설계 내용이지만, 실제 거래에도 이를 사용합니다. 하지만 이러한 도구는 당신의 거래 습관에 맞게 이해하고 사용해야 하며, 당신 스스로 수정하고 최적화할 수도 있습니다. 여기의 전략 코드는 설계 방법과 논리에 대한 대중의 공유, 소통, 학습을 위한 것일 뿐입니다.
파인언어는 사용하기 매우 쉽고, 편리하며, 배우기도 쉬운 것을 알 수 있습니다. Pine 언어를 사용하면 복잡한 프로그램 설계에 대해 걱정할 필요 없이 원하는 도구를 빠르게 설계할 수 있습니다. FMZ Quantitative에서 Pine 언어를 사용하면 양적 거래가 더 쉽고 간단해집니다.