
Chiến lược này sử dụng phương pháp tăng dần, dựa trên so sánh giá đóng cửa với giá đóng cửa ngày hôm trước để đánh giá xu hướng. Khi đánh giá là cơ hội đi lên, nó sẽ tăng dần nhiều lần; Khi đánh giá là cơ hội giảm, nó sẽ tăng dần nhiều lần. Số lần đặt hàng có thể được thiết lập thông qua các tham số.
So sánh giá đóng cửa dòng K hiện tại với giá đóng cửa dòng K trước đó[1], nếu close > close[1], thì đánh giá là cơ hội mua, đặt longCondition=1; nếu close < close[1], được coi là cơ hội giảm giá, thiết lập shortCondition=1。
Trong khoảng thời gian cho phép giao dịch, nếu longCondition = 1, hãy đặt nhiều hơn; nếu shortCondition = 1, hãy đặt ít hơn.
Số lần nạp được thiết lập bởi tham số pyramiding, có thể chọn từ 1 đến 5 lần nạp, mặc định là 4 lần.
Sau mỗi lần gia tăng, điều kiện bảo hiểm sẽ được thiết lập đồng thời, và nếu tình hình biến đổi, sẽ dừng lỗ ngay lập tức.
Có thể chọn để xuất tín hiệu giao dịch đến các giao diện giao dịch khác nhau, chẳng hạn như toast, telegram, v.v.
Chiến lược này chủ yếu xem xét các ưu điểm của chiến lược đột phá và chiến lược trung bình, trong khi đợt tăng giá hoặc giảm giá, phương pháp gia tăng dần dần, có thể theo dõi xu hướng đầy đủ và kiểm soát rủi ro. Đồng thời kết hợp lọc thời gian, tránh tín hiệu GENERATED trong thời gian giao dịch không chính.
Tiếp theo, các nhà đầu tư có thể tăng thêm một lần nữa để theo dõi xu hướng.
Có thể điều chỉnh số lần lưu trữ, linh hoạt hơn
Có thể chọn giao dịch giao dịch khác nhau, mở rộng số lượng
Có cơ chế ngăn chặn, có thể kiểm soát rủi ro
Tính năng lọc thời gian, tránh tín hiệu sai
Thiết lập tham số không đúng có thể làm tăng lỗ
Vấn đề mạng có thể dẫn đến việc không thể ngăn chặn kịp thời
Cần điều chỉnh các tham số phù hợp để phù hợp với các giống khác nhau
Cần dừng lỗ kịp thời để khóa lợi nhuận
Giải pháp:
Điều chỉnh số lần gia tăng, mặc định là 4 lần
Kiểm tra kết nối
Điều chỉnh tham số theo đặc điểm của giống
Thiết lập Stop Loss
Có thể xem xét thêm các chỉ số để đánh giá tín hiệu mạnh mẽ
Có thể kiểm tra hiệu quả tối ưu hóa các tham số khác nhau
Các tham số tối ưu hóa cho thuật toán học máy có thể được thêm vào
Có thể tối ưu hóa cơ chế quản lý rủi ro
Chiến lược phá vỡ đường trung bình tăng dần này kết hợp các ưu điểm của theo dõi xu hướng và kiểm soát rủi ro, theo dõi xu hướng bằng cách tăng dần khi xác định tín hiệu hiệu quả, điều chỉnh số lần tăng để kiểm soát lỗ hổng rủi ro. Đồng thời kết hợp các chức năng như lọc khoảng thời gian để kiểm soát tín hiệu sai. Chiến lược này có thể được tối ưu hóa bằng nhiều cách và có khả năng mở rộng lớn.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © torresbitmex
//@version=5
strategy("torres_strategy_real_test_v1.0", process_orders_on_close=true, overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.03, calc_on_order_fills=false, pyramiding=4)
in_trade(int start_time, int end_time) =>
allowedToTrade = (time>=start_time) and (time<=end_time)
if barstate.islastconfirmedhistory
var myLine = line(na)
line.delete(myLine)
myLine := line.new(start_time, low, start_time, high, xloc=xloc.bar_time, color = color.rgb(255, 153, 0, 50), width = 3, extend = extend.both, style = line.style_dashed)
allowedToTrade
// 매매시간세팅
start_time = input(timestamp("31 Jan 2024 00:00 +0900"), title="매매 시작", group='매매 시간세팅')
end_time = input(timestamp("31 Dec 2030 00:00 +0900"), title="매매 종료", group='매매 시간세팅')
start_trade = true
bgcolor(start_trade ? color.new(color.gray, 90) : color(na))
var bool Alarm_TVExtbot = false
var bool Alarm_Alert = false
bot_mode = input.string(title='봇선택', defval = "POA", options = ["TVEXTBOT", "POA"], group = "봇선택", inline = '1')
if bot_mode == "TVEXTBOT"
Alarm_TVExtbot := true
else if bot_mode == "POA"
Alarm_Alert := true
else
Alarm_TVExtbot := false
Alarm_Alert := false
// 계정정보
account = input.string(title='계정', defval='아무거나입력', inline='1', group='계정정보')
token = input.string(title='TVExtBot 인증키', defval='', inline='1', group='계정정보')
mul_input = input.float(4, minval=1, maxval=5, step=1, title="분할진입수", group='진입 세팅', inline='1')
// 진입주문메세지입력
buyOrderid = input.string(title='롱 진입1', defval='', group='진입주문 메세지입력', inline='2')
buyOrderid2 = input.string(title='롱 진입2', defval='', group='진입주문 메세지입력', inline='3')
buyOrderid3 = input.string(title='롱 진입3', defval='', group='진입주문 메세지입력', inline='4')
buyOrderid4 = input.string(title='롱 진입4', defval='', group='진입주문 메세지입력', inline='5')
buyOrderid5 = input.string(title='롱 진입5', defval='', group='진입주문 메세지입력', inline='6')
sellOrderid = input.string(title='숏 진입1', defval='', group='진입주문 메세지입력', inline='2')
sellOrderid2 = input.string(title='숏 진입2', defval='', group='진입주문 메세지입력', inline='3')
sellOrderid3 = input.string(title='숏 진입3', defval='', group='진입주문 메세지입력', inline='4')
sellOrderid4 = input.string(title='숏 진입4', defval='', group='진입주문 메세지입력', inline='5')
sellOrderid5 = input.string(title='숏 진입5', defval='', group='진입주문 메세지입력', inline='6')
// 종료주문메세지입력
buycloseOrderid = input.string(title='롱 전체종료', defval='', group='종료주문 메세지입력', inline='1')
sellcloseOrderid = input.string(title='숏 전체종료', defval='', group='종료주문 메세지입력', inline='1')
longCondition = 0, shortCondition = 0
if(close[1] < close)
longCondition := 1
else
longCondition := 0
if(close[1] > close)
shortCondition := 1
else
shortCondition := 0
if start_trade
if Alarm_Alert
if strategy.position_size == 0
if (longCondition == 1)
strategy.entry("buy1", strategy.long, alert_message = buyOrderid)
if (shortCondition == 1)
strategy.entry("sell1", strategy.short, alert_message = sellOrderid)
if strategy.position_size > 0
if (longCondition == 1)
if (strategy.opentrades == 1) and (mul_input == 2 or mul_input == 3 or mul_input == 4 or mul_input == 5)
strategy.entry("buy2", strategy.long, alert_message = buyOrderid2)
if (strategy.opentrades == 2) and (mul_input == 3 or mul_input == 4 or mul_input == 5)
strategy.entry("buy3", strategy.long, alert_message = buyOrderid3)
if (strategy.opentrades == 3) and (mul_input == 4 or mul_input == 5)
strategy.entry("buy4", strategy.long, alert_message = buyOrderid4)
if (strategy.opentrades == 4) and (mul_input == 5)
strategy.entry("buy5", strategy.long, alert_message = buyOrderid5)
if strategy.position_size < 0
if (shortCondition == 1)
if (strategy.opentrades == 1) and (mul_input == 2 or mul_input == 3 or mul_input == 4 or mul_input == 5)
strategy.entry("sell2", strategy.short, alert_message = sellOrderid2)
if (strategy.opentrades == 2) and (mul_input == 3 or mul_input == 4 or mul_input == 5)
strategy.entry("sell3", strategy.short, alert_message = sellOrderid3)
if (strategy.opentrades == 3) and (mul_input == 4 or mul_input == 5)
strategy.entry("sell4", strategy.short, alert_message = sellOrderid4)
if (strategy.opentrades == 4) and (mul_input == 5)
strategy.entry("sell5", strategy.short, alert_message = sellOrderid5)
if (longCondition == 1 and strategy.position_size > 0)
if mul_input == 1 and strategy.opentrades == 1
strategy.close_all(comment='롱전체종료', alert_message = buycloseOrderid)
if mul_input == 2 and strategy.opentrades == 2
strategy.close_all(comment='롱전체종료', alert_message = buycloseOrderid)
if mul_input == 3 and strategy.opentrades == 3
strategy.close_all(comment='롱전체종료', alert_message = buycloseOrderid)
if mul_input == 4 and strategy.opentrades == 4
strategy.close_all(comment='롱전체종료', alert_message = buycloseOrderid)
if mul_input == 5 and strategy.opentrades == 5
strategy.close_all(comment='롱전체종료', alert_message = buycloseOrderid)
if (shortCondition == 1 and strategy.position_size < 0)
if mul_input == 1 and strategy.opentrades == 1
strategy.close_all(comment='숏전체종료', alert_message = sellcloseOrderid)
if mul_input == 2 and strategy.opentrades == 2
strategy.close_all(comment='숏전체종료', alert_message = sellcloseOrderid)
if mul_input == 3 and strategy.opentrades == 3
strategy.close_all(comment='숏전체종료', alert_message = sellcloseOrderid)
if mul_input == 4 and strategy.opentrades == 4
strategy.close_all(comment='숏전체종료', alert_message = sellcloseOrderid)
if mul_input == 5 and strategy.opentrades == 5
strategy.close_all(comment='숏전체종료', alert_message = sellcloseOrderid)
else if Alarm_TVExtbot
if strategy.position_size == 0
if (longCondition == 1)
strategy.entry("buy1", strategy.long, alert_message = '롱 1차 진입 📈📈 TVM:{"orderid":"' + buyOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if (shortCondition == 1)
strategy.entry("sell1", strategy.short, alert_message = '숏 1차 진입 📉📉 TVM:{"orderid":"' + sellOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if strategy.position_size > 0
if (longCondition == 1)
if (strategy.opentrades == 1) and (mul_input == 2 or mul_input == 3 or mul_input == 4 or mul_input == 5)
strategy.entry("buy2", strategy.long, alert_message = '롱 2차 진입 📈📈 TVM:{"orderid":"' + buyOrderid2 + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if (strategy.opentrades == 2) and (mul_input == 3 or mul_input == 4 or mul_input == 5)
strategy.entry("buy3", strategy.long, alert_message = '롱 3차 진입 📈📈 TVM:{"orderid":"' + buyOrderid3 + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if (strategy.opentrades == 3) and (mul_input == 4 or mul_input == 5)
strategy.entry("buy4", strategy.long, alert_message = '롱 4차 진입 📈📈 TVM:{"orderid":"' + buyOrderid4 + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if (strategy.opentrades == 4) and (mul_input == 5)
strategy.entry("buy5", strategy.long, alert_message = '롱 5차 진입 📈📈 TVM:{"orderid":"' + buyOrderid5 + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if strategy.position_size < 0
if (shortCondition == 1)
if (strategy.opentrades == 1) and (mul_input == 2 or mul_input == 3 or mul_input == 4 or mul_input == 5)
strategy.entry("sell2", strategy.short, alert_message = '숏 2차 진입 📉📉 TVM:{"orderid":"' + sellOrderid2 + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if (strategy.opentrades == 2) and (mul_input == 3 or mul_input == 4 or mul_input == 5)
strategy.entry("sell3", strategy.short, alert_message = '숏 3차 진입 📉📉 TVM:{"orderid":"' + sellOrderid3 + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if (strategy.opentrades == 3) and (mul_input == 4 or mul_input == 5)
strategy.entry("sell4", strategy.short, alert_message = '숏 4차 진입 📉📉 TVM:{"orderid":"' + sellOrderid4 + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if (strategy.opentrades == 4) and (mul_input == 5)
strategy.entry("sell5", strategy.short, alert_message = '숏 5차 진입 📉📉 TVM:{"orderid":"' + sellOrderid5 + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if (longCondition == 1 and strategy.position_size > 0)
if mul_input == 1 and strategy.opentrades == 1
strategy.close_all(comment='롱전체종료', alert_message = '롱 종료 📈⛔TVM:{"orderid":"' + buycloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if mul_input == 2 and strategy.opentrades == 2
strategy.close_all(comment='롱전체종료', alert_message = '롱 종료 📈⛔TVM:{"orderid":"' + buycloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if mul_input == 3 and strategy.opentrades == 3
strategy.close_all(comment='롱전체종료', alert_message = '롱 종료 📈⛔TVM:{"orderid":"' + buycloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if mul_input == 4 and strategy.opentrades == 4
strategy.close_all(comment='롱전체종료', alert_message = '롱 종료 📈⛔TVM:{"orderid":"' + buycloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if mul_input == 5 and strategy.opentrades == 5
strategy.close_all(comment='롱전체종료', alert_message = '롱 종료 📈⛔TVM:{"orderid":"' + buycloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if (shortCondition == 1 and strategy.position_size < 0)
if mul_input == 1 and strategy.opentrades == 1
strategy.close_all(comment='숏전체종료', alert_message = '숏 종료 📉⛔TVM:{"orderid":"' + sellcloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if mul_input == 2 and strategy.opentrades == 2
strategy.close_all(comment='숏전체종료', alert_message = '숏 종료 📉⛔TVM:{"orderid":"' + sellcloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if mul_input == 3 and strategy.opentrades == 3
strategy.close_all(comment='숏전체종료', alert_message = '숏 종료 📉⛔TVM:{"orderid":"' + sellcloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if mul_input == 4 and strategy.opentrades == 4
strategy.close_all(comment='숏전체종료', alert_message = '숏 종료 📉⛔TVM:{"orderid":"' + sellcloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')
if mul_input == 5 and strategy.opentrades == 5
strategy.close_all(comment='숏전체종료', alert_message = '숏 종료 📉⛔TVM:{"orderid":"' + sellcloseOrderid + '","memo":"' + account + '","token":"' + token + '"}:MVT')