파인 언어를 사용하여 반 자동 거래 도구를 작성

저자:작은 꿈, 창작: 2022-09-29 14:36:32, 업데이트: 2023-09-15 20:53:45

img

파인 언어를 사용하여 반 자동 거래 도구를 작성

프로그래밍을 작성하여 자동으로 거래하는 거래자가 증가하고 있지만, 더 큰 그룹은 여전히 수동 거래자입니다. 실제로 수동 주관 거래자는 또한 몇 가지 작은 도구를 작성하여 자신의 주관 거래를 보조할 수 있습니다. 예를 들어, 때로는 좋은 입구 위치를 발견하여 초기 포지션의 고정 손실을 설정하고, 트래킹 스톱을 계획하고, 그 다음 후속 스톱과 같은 비교적 힘쓰는 일을 피하고, 자신의 기존 스톱 손실 스톱 계획에 완전히 따라 프로그램을 사용하여 자신의 스톱을 도울 수 있습니다. 스톱 손실을 당하고, 스톱 손실을 당하고, 스톱 손실을 추적하는 인공 보조 거래를하십시오.

매개 변수 설계

파인 언어를 사용하여 이러한 요구 사항을 설계하는 전략은 매우 간단하며, 요구 사항에 따라 기능을 구현하는 데 다음과 같은 몇 가지 매개 변수를 설계해야합니다.

1, 오프셋: 추적 정지선을 촉발할 때, 정지선의 오프셋 거리를 정의하기 위해 최고 가격, 최저 가격을 오프셋한다. 2,limit: A. 초기 하위 포스트를 직접 구매하는 것을 제어하는 매개 변수; B. 구매를 기다리는 가격을 지정하는 것; C. 아무것도 하지 않는 것. 3,amount: 하위 지점 개장 시 단위량. 4,loss: 스톱 손실 포인트 수. 5. 타겟 오프셋: 트래킹 정지 트리거를 일으키는 시점 가격 오프셋. 6 minTick: 가격 점프. 7、direction: 아래쪽의 위치와 아래쪽의 위치.

디자인 전략

/*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, "移动止损触发线")

또한 전략 설계는 복잡하지 않으며, 사용 시에는 일반적으로 "실제 가격 모델"로 설정되어야합니다. 왜냐하면 항상 가격을 탐지하기 때문입니다.

img

참고로 매개 변수에서 StopLoss는 점으로 표시되며, 오프셋 추적 스톱?? 오버레이션도 점으로 표시됩니다. 타겟 오프셋 추적 스톱?? 트리거 라인의 오버레이션은 가격 거리로 표시됩니다. 예를 들어, 30을 설정하면 30원 거리가 됩니다. 가격 한 점이 1일 때 30는 30원 거리에 있습니다.

이 위탁 정책은 초기 하위 포즈를 더 많이 할 수 있을 뿐만 아니라 초기 하위 포즈를 빈 상태로 만들 수 있도록 설계되었다. 그러면 손해 중지 및 추적 차단은 빈 방향에 따라 처리된다.

이 프로젝트의 특징은 다음과 같습니다.

1. 이 전략이 실행되면 즉시 하위 포즈를 열고 입장을 시작하여 파라미터에 따라 중지 손실, 추적 중지 포즈를 설정하십시오.

img

direction는 long로 설정되고, limit는 0으로 설정되어 있습니다. 즉, 전략이 실행될 때 즉시 더 많은 것을 입력하고, amount는 1로 설정되어 있으며, 전략은 1개의 계약을 개설합니다.

img

2, 제한 매개 변수를 지정하고 입시 가격을 지정합니다

다른 매개 변수는 변경되지 않습니다. 한계 매개 변수값을 지정하면 됩니다: 1276

img

3, 기본 제한 변수는 -1입니다. 아무것도 작동하지 않습니다. 잘못된 입장을 방지합니다.

img

파인 언어 전략을 사용할 때, 이 데이터에 대한 가격 점프에 특히 주의를 기울여야 한다. 시스템의 가격 점프의 구체적인 정도는 매개 변수에서 "가격화 통화 정확성"과 관련이 있다.

img

"가격화 통화 정밀성"라는 매개 변수는 0으로 설정되어 있는데, 이는 가격 데이터의 수치값이 1자리까지 정확하다는 것을 의미합니다. (즉 소수자리는 0입니다). 그러면 가격의 최소 변동 단위는 1입니다. 일부 매개 변수는 가격의 한 점 점에 얼마나 관련이있는지와 관련이 있기 때문에, 이 부분은 특히 주의가 필요합니다.

OK, 위의 것은 이 반자동계탁 정책의 전체 설계 내용입니다. 비록 저는 실제 사용도 가지고 있습니다. 그러나 이러한 도구는 자신의 거래 습관에 따라 사용에 대해 이해해야하며, 직접 수정, 최적화 할 수 있습니다. 이 전략 코드는 공개 공유, 교환 학습 디자인, 논리입니다.

파인 언어는 사용이 좋고 편리하며 배우기 쉽다. 우리는 파인 언어를 사용하여 복잡한 프로그램 설계에 신경쓰지 않고 원하는 도구를 빠르게 설계 할 수 있습니다. FMZ에서 양량화에는 파인 언어를 사용하여 양량화 거래를 더 쉽게 간단하게 만듭니다.


관련

더 많은