Các công cụ tốt hơn làm cho công việc tốt hơn - học cách sử dụng môi trường nghiên cứu để phân tích các nguyên tắc giao dịch

Tác giả:Lydia., Tạo: 2022-12-27 16:33:51, Cập nhật: 2023-09-20 09:17:27

img

Các công cụ tốt hơn làm việc tốt hơn học cách sử dụng môi trường nghiên cứu để phân tích các nguyên tắc giao dịch

Thuật ngữ hedging là một khái niệm rất cơ bản trong lĩnh vực giao dịch định lượng và giao dịch chương trình. Trong giao dịch định lượng của tiền kỹ thuật số, các chiến lược phòng ngừa rủi ro thường được sử dụng là: phòng ngừa rủi ro tại chỗ tương lai, phòng ngừa rủi ro xuyên kỳ và phòng ngừa rủi ro tại chỗ, về cơ bản là các giao dịch cho sự khác biệt giá. Có lẽ khi nói đến khái niệm, nguyên tắc và chi tiết của phòng ngừa rủi ro, nhiều sinh viên vừa bước vào lĩnh vực giao dịch định lượng vẫn chưa rõ ràng. Nó không quan trọng. Hãy sử dụng công cụ QuantAnalyze do nền tảng FMZ Trading cung cấp để dễ dàng tìm hiểu và nắm vững kiến thức này.

Trong bảng điều khiển của nền tảng FMZ Quant, bấm Analyze để chuyển đến trang công cụ:

img

Ở đây tôi tải tập tin phân tích trực tiếp: Tài liệu phân tích này là một phân tích về quá trình mở và đóng một vị trí phòng hộ tương lai tại chỗ trong quá trình backtesting.quartergiao dịch ngoại hối OKX và cặp giao dịch làBTC_USDTĐể phân tích quá trình hoạt động của phòng hộ hợp đồng tương lai, bạn có thể xem các tập tin môi trường nghiên cứu cụ thể sau đây, được viết trong hai phiên bản: một phiên bản ngôn ngữ Python, một phiên bản ngôn ngữ JavaScript.

Môi trường nghiên cứu Python file ngôn ngữ

Phân tích về nguyên tắc bảo hiểm giao dịch tương lai tại chỗ.ipynb Trong [1]:

from fmz import *
task = VCtx('''backtest
start: 2019-09-19 00:00:00
end: 2019-09-28 12:00:00
period: 15m
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD", "stocks":1}, {"eid":"OKX","currency":"BTC_USDT","balance":10000,"stocks":0}]
''')
# Create backtesting environment
import matplotlib.pyplot as plt
import numpy as np
# Import the plot library matplotlib and library numpy

Trong [2]:

exchanges[0].SetContractType("quarter")    # The first exchange object OKX Futures (eid: Futures_OKCoin) calls the function to set the current contract as a quarterly contract
initQuarterAcc = exchanges[0].GetAccount() # The initial account information of OKX Futures Exchange is recorded in the variable initQuarterAcc
initQuarterAcc

Ra khỏi [2]: {Chỉ số: 0.0, FrozenBalance: 0.0, Stock: 1.0, FrozenStock: 0.0}

Trong [3]:

initSpotAcc = exchanges[1].GetAccount()    # The initial account information of the OKX Spot Exchange is recorded in the variable initSpotAcc
initSpotAcc

Ra khỏi [1]: {Chỉ số: 10000.0, FrozenBalance: 0.0, Stock: 0.0, FrozenStock: 0.0}

Trong [4]:

quarterTicker1 = exchanges[0].GetTicker()  # Get the futures exchange ticker, recorded in the variable quarterTicker1
quarterTicker1

Ra khỏi [1]: {Time: 1568851210000, High: 10441.25002, thấp : 10441.25, Bán : 10441.25002, Buy: 10441.25, Last: 10441.25001, Bộ số: 1772.0, OpenInterest: 0.0}

Trong [5]:

spotTicker1 = exchanges[1].GetTicker()     # Get the spot exchange ticker, recorded in the variable spotTicker1
spotTicker1

Ra khỏi [5]: {Time: 1568851210000, cao : 10156.60000002, thấp: 10156.6, Bán : 10156.60000002, Buy: 10156.6, Last: 10156.60000001, Bộ số: 7.4443, OpenInterest: 0.0}

Trong [6]:

quarterTicker1.Buy - spotTicker1.Sell      # The price difference between going short on futures and going long on spot.

Ra ngoài[6]: 284.6499999799999985

Trong [7]:

exchanges[0].SetDirection("sell")                       # Set up a futures exchange and trade in the direction of going short
quarterId1 = exchanges[0].Sell(quarterTicker1.Buy, 10)  # Futures go short to place orders. The order quantity is 10 contracts. The returned order ID is recorded in the variable quarterId1.
exchanges[0].GetOrder(quarterId1)                       # Check the details of the order with futures order ID quarterId1.

Ra ngoài[7]: {Id: 1, Giá : 10441.25, Số tiền: 10,0 Điều giao dịch: 10.0, Giá trung bình: 10441.25, Loại: 1, Thiết kiệm : 0, Tình trạng: 1, Định dạng hợp đồng : bquarter }

Trong [8]:

spotAmount = 10 * 100 / quarterTicker1.Buy                 # Calculate the currency equivalent of 10 contracts as the order quantity of the spot.
spotId1 = exchanges[1].Buy(spotTicker1.Sell, spotAmount)   # Place orders on the spot exchange
exchanges[1].GetOrder(spotId1)                             # Check the order details of the spot order ID of spotId1

Ra ngoài[8]: {Id: 1, Giá : 10156.60000002, Số tiền: 0,0957, Số tiền giao dịch: 0.0957, Giá trung bình: 10156.60000002, Loại: 0, Thiết kiệm : 0, Tình trạng: 1, ContractType: bBTC_USDT_OKX}

Bạn có thể thấy rằng các lệnh hàng quýId1 và lệnh ngay lập tứcId1 đã được hoàn thành hoàn toàn, tức là việc bảo hiểm các vị trí mở đã hoàn thành.

Trong [9]:

Sleep(1000 * 60 * 60 * 24 * 7)       # Hold the position for a while and wait for the price difference to become smaller to close the position.

Sau thời gian chờ đợi, chuẩn bị để đóng vị trí.quarterTicker2, spotTicker2và in chúng. Hướng giao dịch của đối tượng giao dịch tương lai được thiết lập để đóng vị trí ngắn:exchanges[0].SetDirection("closesell")đặt lệnh để đóng vị trí. In chi tiết lệnh đóng lệnh, cho thấy lệnh đóng đã được hoàn thành, vị trí đóng đã hoàn thành.

Trong [10]:

quarterTicker2 = exchanges[0].GetTicker()     # Get the current futures exchange ticker, recorded in the variable quarterTicker2
quarterTicker2

Ra khỏi[10]: {Time: 1569456010000, cao: 8497.20002, thấp: 8497.2, Bán : 8497.20002, Buy: 8497.2, Last: 8497.20001, Bộ số: 4311.0, OpenInterest: 0.0}

Trong [11]:

spotTicker2 = exchanges[1].GetTicker()       # Get the current ticker of the spot exchange, recorded in the variable spotTicker2
spotTicker2

Ra khỏi [1]: {Time: 1569456114600, High: 8444.70000001, thấp : 8444.69999999, Bán : 8444.70000001, Buy: 8444.69999999, Last: 8444.7, Bộ : 78.6273, OpenInterest: 0.0}

Trong [12]:

quarterTicker2.Sell - spotTicker2.Buy        # The price difference between closing a short futures position and closing a long spot position.

Ra khỏi [1]: 52.5000200100003

Trong [13]:

exchanges[0].SetDirection("closesell")                   # Set the current trading direction of the futures exchange to close short positions.
quarterId2 = exchanges[0].Buy(quarterTicker2.Sell, 10)   # The futures exchange places an order to close a position and records the order ID to the variable quarterId2.
exchanges[0].GetOrder(quarterId2)                        # Check futures close out order details

Ra khỏi [1]: 2 người. Giá : 8497.20002, Số tiền: 10,0 Điều giao dịch: 10.0, Giá trung bình: 8493.95335, Loại: 0, Tiền bồi thường: 1, Tình trạng: 1, Định dạng hợp đồng : bquarter }

Trong [14]:

spotId2 = exchanges[1].Sell(spotTicker2.Buy, spotAmount) # The spot exchange places an order to close a position and records the order ID, which is recorded to the variable spotId2.
exchanges[1].GetOrder(spotId2)      # Check spot close out order details

Ra khỏi [1]: 2 người. Giá : 8444.69999999, Số tiền: 0,0957, Số tiền giao dịch: 0.0957, Giá trung bình: 8444.69999999, Loại: 1, Thiết kiệm : 0, Tình trạng: 1, ContractType: bBTC_USDT_OKX}

Trong [15]:

nowQuarterAcc = exchanges[0].GetAccount()   # Get the current futures exchange account information, recorded in the variable nowQuarterAcc.
nowQuarterAcc

Ra khỏi [1]: {Chỉ số: 0.0, FrozenBalance: 0,0, Stock: 1.021786026184, FrozenStocks: 0.0}

Trong [16]:

nowSpotAcc = exchanges[1].GetAccount()      # Get the current spot exchange account information, recorded in the variable nowSpotAcc.
nowSpotAcc

Ra khỏi [1]: { Số dư: 9834.74705446, FrozenBalance: 0,0, Stock: 0,0, FrozenStocks: 0.0}

Bằng cách so sánh tài khoản ban đầu với tài khoản vãng lai, lợi nhuận và lỗ của hoạt động phòng ngừa rủi ro được tính toán.

Trong [17]:

diffStocks = abs(nowQuarterAcc.Stocks - initQuarterAcc.Stocks)
diffBalance = nowSpotAcc.Balance - initSpotAcc.Balance
if nowQuarterAcc.Stocks - initQuarterAcc.Stocks > 0 :
    print("profits:", diffStocks * spotTicker2.Buy + diffBalance)
else :
    print("profits:", diffBalance - diffStocks * spotTicker2.Buy)

Ra khỏi [1]: Lợi nhuận: 18,72350977580652

Bây giờ chúng ta hãy xem tại sao việc bảo hiểm có lợi. Chúng ta có thể thấy biểu đồ được vẽ. Giá tương lai là một đường màu xanh và giá giao ngay là một đường màu cam. Cả hai giá đều giảm. Giá tương lai giảm nhanh hơn giá giao ngay.

Trong [18]:

xQuarter = [1, 2]
yQuarter = [quarterTicker1.Buy, quarterTicker2.Sell]

xSpot = [1, 2]
ySpot = [spotTicker1.Sell, spotTicker2.Buy]
plt.plot(xQuarter, yQuarter, linewidth=5)
plt.plot(xSpot, ySpot, linewidth=5)
plt.show()

Ra khỏi [1]:

img

Chúng ta hãy xem xét sự thay đổi của chênh lệch giá. Sự khác biệt giá dao động từ 284 tại thời điểm phòng ngừa vị trí mở (tức là, tương lai đi ngắn, và giao ngay đi dài) đến 52 tại thời điểm đóng vị trí (tương lai đóng vị trí ngắn, giao ngay đóng vị trí dài). Sự khác biệt giá từ lớn đến nhỏ.

Trong [19]:

xDiff = [1, 2]
yDiff = [quarterTicker1.Buy - spotTicker1.Sell, quarterTicker2.Sell - spotTicker2.Buy]
plt.plot(xDiff, yDiff, linewidth=5)
plt.show()

Ra khỏi [1]:

img

Ví dụ: a1 là giá tương lai tại thời điểm 1, và b1 là giá giao ngay tại thời điểm 1. A2 là giá tương lai tại thời điểm 2, và b2 là giá giao ngay tại thời điểm 2.Miễn là chênh lệch giá giao ngay tương lai tại thời điểm 1 (a1-b1) lớn hơn chênh lệch giá giao ngay tương lai tại thời điểm 2 (a2-b2), a1 - a2>b1 - b2 có thể được đưa vào. Có ba tình huống: (số lượng các vị trí tương lai và giao ngay là như nhau)

  1. a1 - a2 lớn hơn 0, b1 - b2 lớn hơn 0 a1 - a2 đề cập đến chênh lệch giá của lợi nhuận tương lai, và b1 - b2 đề cập đến chênh lệch giá của lỗ tại chỗ (vì giao dịch đã đi dài, giá bắt đầu mua cao hơn giá bán để đóng vị trí, do đó tiền bị mất), nhưng lợi nhuận tương lai lớn hơn lỗ tại chỗ. Vì vậy, nó có lợi nhuận nói chung. Tình huống này tương ứng với biểu đồ ở bước [8].

  2. a1 - a2 lớn hơn 0, b1 - b2 nhỏ hơn 0 a1 - a2 là chênh lệch giá của lợi nhuận tương lai, và b1 - b2 là chênh lệch giá của lợi nhuận tức thời (b1 - b2 nhỏ hơn 0, cho thấy b2 lớn hơn b1, tức là giá mở và mua vị trí thấp, và giá bán và đóng cao, vì vậy nó có lợi nhuận).

  3. a1 - a2 ít hơn 0, b1 - b2 ít hơn 0 a1 - a2 là chênh lệch giá của lỗ tương lai, và b1 - b2 là chênh lệch giá của lợi nhuận tức thời. Vì a1 - a2 > b1 - b2, giá trị tuyệt đối của a1 - a2 nhỏ hơn giá trị tuyệt đối của b1 - b2, và lợi nhuận tức thời lớn hơn các lỗ tương lai. Nó có lợi nhuận nói chung.

Không có trường hợp a1 - a2 nhỏ hơn 0 và b1 - b2 lớn hơn 0, bởi vì a1 - a2 > b1 - b2 đã được xác định. Tương tự, nếu a1 - a2 bằng 0, vì a1 - a2 > b1 - b2 được xác định, b1 - b2 phải nhỏ hơn 0. Do đó, miễn là phương pháp phòng ngừa tương lai ngắn và giao ngay dài đáp ứng các điều kiện a1 - b1 > a2 - b2, các hoạt động mở và đóng vị trí là phòng ngừa lợi nhuận.

Ví dụ, mô hình sau đây là một trong những trường hợp:

Trong [20]:

a1 = 10
b1 = 5
a2 = 11
b2 = 9

# a1 - b1 > a2 - b2 launches: a1 - a2 > b1 - b2

xA = [1, 2]
yA = [a1, a2]

xB = [1, 2]
yB = [b1, b2]
plt.plot(xA, yA, linewidth=5)
plt.plot(xB, yB, linewidth=5)
plt.show()

Ra khỏi [1]:

img

Môi trường nghiên cứu tệp ngôn ngữ JavaScript

Môi trường nghiên cứu hỗ trợ không chỉ Python, mà còn JavaScript Tôi cũng đưa ra một ví dụ về môi trường nghiên cứu JavaScript:

Phân tích về nguyên tắc phòng ngừa rủi ro tại chỗ tương lai (JavaScript).ipynb Trong [1]:

// Import the required package, click "Save settings" on the FMZ's "Strategy editing page" to get the string configuration and convert it to an object.
var fmz = require("fmz")                           // Import the talib, TA, and plot libraries automatically after import
var task = fmz.VCtx({
start: '2019-09-19 00:00:00',
end: '2019-09-28 12:00:00',
period: '15m',
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD","stocks":1},{"eid":"OKX","currency":"BTC_USDT","balance":10000,"stocks":0}]
})

Trong [2]:

exchanges[0].SetContractType("quarter")  // The first exchange object OKX Futures (eid: Futures_OKCoin) calls the function to set the current contract as a quarterly contract.
var initQuarterAcc = exchanges[0].GetAccount()  // The initial account information of OKX Futures Exchange is recorded in the variable initQuarterAcc.
initQuarterAcc

Ra khỏi [2]: { Số dư: 0, FrozenBalance: 0, Cổ phiếu: 1, FrozenStocks: 0 }

Trong [3]:

var initSpotAcc = exchanges[1].GetAccount()     // The initial account information of the OKX Spot Exchange is recorded in the variable initSpotAcc.
initSpotAcc

Ra khỏi [1]: { Số dư: 10 000, FrozenBalance: 0, Cổ phiếu: 0, FrozenStocks: 0 }

Trong [4]:

var quarterTicker1 = exchanges[0].GetTicker()   // Get the futures exchange ticker, recorded in the variable quarterTicker1.
quarterTicker1

Ra khỏi [1]: { Thời gian: 1568851210000, Tốc độ cao: 10441.25002, Mức thấp: 10441.25, Bán: 10441.25002, Mua: 10441.25, Cuối cùng: 10441.25001, Tập: 1772, OpenInterest: 0

Trong [5]:

var spotTicker1 = exchanges[1].GetTicker()     // Get the spot exchange ticker, recorded in the variable spotTicker1.
spotTicker1

Ra khỏi [5]: { Thời gian: 1568851210000, Tốc độ cao: 10156.60000002, Mức thấp: 10156.6, Bán: 10156.60000002, Mua: 10156.6, Cuối cùng: 10156.60000001, Số lượng: 7.4443, OpenInterest: 0

Trong [6]:

quarterTicker1.Buy - spotTicker1.Sell         // The price difference between going short on futures and going long on spot.

Ra ngoài[6]: 284.6499999799999985 Trong [7]:

exchanges[0].SetDirection("sell")             // Set up a futures exchange and trade in the direction of going short
var quarterId1 = exchanges[0].Sell(quarterTicker1.Buy, 10)  // Go short futures to place orders. The order quantity is 10 contracts. The returned order ID is recorded in the variable quarterId1.
exchanges[0].GetOrder(quarterId1)                           // Check the details of the order with futures order ID quarterId1.

Ra ngoài[7]: { ID: 1, Giá: 10441.25, Số tiền: 10 Số tiền giao dịch: 10, Giá trung bình: 10441.25, Loại: 1, Tiến độ: 0, Tình trạng: 1, ContractType: quarter }

Trong [8]:

var spotAmount = 10 * 100 / quarterTicker1.Buy                  // Calculate the currency equivalent of 10 contracts as the order quantity of the spot.
var spotId1 = exchanges[1].Buy(spotTicker1.Sell, spotAmount)    // Place orders on the spot exchange.
exchanges[1].GetOrder(spotId1)                                  // Check the order details of the spot order ID of spotId1.

Ra ngoài[8]: { ID: 1, Giá: 10156.60000002, Số tiền: 0,0957, DealAmount: 0.0957, Giá trung bình: 10156.60000002, Loại: 0, Tiến độ: 0, Tình trạng: 1, ContractType: BTC_USDT_OKX }

Bạn có thể thấy rằng các lệnh quarterId1 và spotId1 đã được hoàn thành hoàn toàn, tức là việc bảo hiểm các vị trí mở đã hoàn thành.

Trong [9]:

Sleep(1000 * 60 * 60 * 24 * 7)            // Hold the position for a while and wait for the price difference to become smaller to close the position.

Sau thời gian chờ đợi, chuẩn bị để đóng vị trí.quarterTicker2, spotTicker2và in chúng. Hướng giao dịch của đối tượng giao dịch tương lai được thiết lập để đóng vị trí ngắn:exchanges[0].SetDirection("closesell")đặt lệnh để đóng vị trí. In chi tiết lệnh đóng lệnh, cho thấy lệnh đóng đã được hoàn thành, vị trí đóng đã hoàn thành.

Trong [10]:

var quarterTicker2 = exchanges[0].GetTicker()    // Get the current futures exchange ticker, recorded in the variable quarterTicker2.
quarterTicker2

Ra khỏi[10]: { Thời gian: 1569456010000, Cao: 8497.20002, Mức thấp: 8497.2, Bán: 8497.20002, Mua: 8497.2, Cuối cùng: 8497.20001, Số lượng: 4311, OpenInterest: 0

Trong [11]:

var spotTicker2 = exchanges[1].GetTicker()       // Get the current ticker of the spot exchange, recorded in the variable spotTicker2.
spotTicker2

Ra khỏi [1]: { Thời gian: 1569456114600, Tối cao: 8444.70000001, Mức thấp: 8444.69999999, Bán: 8444.70000001, Mua: 8444.69999999, Cuối cùng: 8444.7, Số lượng: 78.6273, OpenInterest: 0

Trong [12]:

quarterTicker2.Sell - spotTicker2.Buy            // The price difference between closing short position of futures and closing long position of spot.

Ra khỏi [1]: 52.5000200100003

Trong [13]:

exchanges[0].SetDirection("closesell")           // Set the current trading direction of the futures exchange to close short positions.
var quarterId2 = exchanges[0].Buy(quarterTicker2.Sell, 10)       // The futures exchange places an order to close the position, and records the order ID to the variable quarterId2.
exchanges[0].GetOrder(quarterId2)                                // Check futures closing position order details.

Ra khỏi [1]: { ID: 2, Giá: 8497.20002, Số tiền: 10 Số tiền giao dịch: 10, Giá trung bình: 8493.95335, Loại: 0, Tiền bồi thường: 1, Tình trạng: 1, ContractType: quarter }

Trong [14]:

var spotId2 = exchanges[1].Sell(spotTicker2.Buy, spotAmount)     // The spot exchange places an order to close the position, and records the order ID to the variable spotId2.
exchanges[1].GetOrder(spotId2)                                   // Check spot closing position order details.

Ra khỏi [1]: { ID: 2, Giá: 8444.69999999, Số tiền: 0,0957, DealAmount: 0.0957, Giá trung bình: 8444.69999999, Loại: 1, Tiến độ: 0, Tình trạng: 1, ContractType: BTC_USDT_OKX }

Trong [15]:

var nowQuarterAcc = exchanges[0].GetAccount()     // Get the current futures exchange account information, recorded in the variable nowQuarterAcc.
nowQuarterAcc                                     

Ra khỏi [1]: { Số dư: 0, FrozenBalance: 0, Kho dự trữ: 1.021786026184, FrozenStocks: 0

Trong [16]:

var nowSpotAcc = exchanges[1].GetAccount()        // Get the current spot exchange account information, recorded in the variable nowSpotAcc.
nowSpotAcc

Ra khỏi [1]: { Số dư: 9834.74705446, FrozenBalance: 0, Hồ tồn kho: 0, FrozenStocks: 0 Bằng cách so sánh tài khoản ban đầu với tài khoản vãng lai, lợi nhuận và lỗ của hoạt động phòng ngừa rủi ro được tính toán.

Trong [17]:

var diffStocks = Math.abs(nowQuarterAcc.Stocks - initQuarterAcc.Stocks)
var diffBalance = nowSpotAcc.Balance - initSpotAcc.Balance
if (nowQuarterAcc.Stocks - initQuarterAcc.Stocks > 0) {
    console.log("profits:", diffStocks * spotTicker2.Buy + diffBalance)
} else {
    console.log("profits:", diffBalance - diffStocks * spotTicker2.Buy)
}

Ra khỏi [1]: Lợi nhuận: 18,72350977580652

Bây giờ chúng ta hãy xem tại sao việc bảo hiểm có lợi. Chúng ta có thể thấy biểu đồ được vẽ. Giá tương lai là một đường màu xanh và giá giao ngay là một đường màu cam. Cả hai giá đều giảm. Giá tương lai giảm nhanh hơn giá giao ngay.

Trong [18]:

var objQuarter = {
    "index" : [1, 2],                                          // The index is 1, that is, the first time, the opening time, and 2 is the closing time.
    "arrPrice" : [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = {
    "index" : [1, 2],
    "arrPrice" : [spotTicker1.Sell, spotTicker2.Buy],
}
plot([{name: 'quarter', x: objQuarter.index, y: objQuarter.arrPrice}, {name: 'spot', x: objSpot.index, y: objSpot.arrPrice}])

Ra khỏi [1]: Chúng ta hãy xem xét sự thay đổi của chênh lệch giá. Sự khác biệt giá dao động từ 284 tại thời điểm phòng ngừa các vị trí mở (tức là, tương lai đã ngắn, và giao dịch đã dài) đến 52 tại thời điểm đóng (kết thúc vị trí ngắn của tương lai, và đóng vị trí dài của giao dịch).

Trong [19]:

var arrDiffPrice = [quarterTicker1.Buy - spotTicker1.Sell, quarterTicker2.Sell - spotTicker2.Buy]
plot(arrDiffPrice)

Ra khỏi [1]:Ví dụ: a1 là giá tương lai tại thời điểm 1, và b1 là giá giao ngay tại thời điểm 1. A2 là giá tương lai tại thời điểm 2, và b2 là giá giao ngay tại thời điểm 2.Miễn là chênh lệch giá giao ngay tương lai tại thời điểm 1 (a1-b1) lớn hơn chênh lệch giá giao ngay tương lai tại thời điểm 2 (a2-b2), a1 - a2>b1 - b2 có thể được đưa vào. Có ba tình huống: (số lượng các vị trí tương lai và giao ngay là như nhau)

  1. a1 - a2 lớn hơn 0, b1 - b2 lớn hơn 0 a1 - a2 đề cập đến chênh lệch giá của lợi nhuận tương lai, và b1 - b2 đề cập đến chênh lệch giá của lỗ tại chỗ (vì giao dịch đã đi dài, giá bắt đầu mua cao hơn giá bán để đóng vị trí, do đó tiền bị mất), nhưng lợi nhuận tương lai lớn hơn lỗ tại chỗ. Vì vậy, nó có lợi nhuận nói chung. Tình huống này tương ứng với biểu đồ ở bước [8].

  2. a1 - a2 lớn hơn 0, b1 - b2 nhỏ hơn 0 a1 - a2 là chênh lệch giá của lợi nhuận tương lai, và b1 - b2 là chênh lệch giá của lợi nhuận tức thời (b1 - b2 nhỏ hơn 0, cho thấy b2 lớn hơn b1, tức là giá mở và mua vị trí thấp, và giá bán và đóng cao, vì vậy nó có lợi nhuận).

  3. a1 - a2 ít hơn 0, b1 - b2 ít hơn 0 a1 - a2 là chênh lệch giá của lỗ tương lai, và b1 - b2 là chênh lệch giá của lợi nhuận tức thời. Vì a1 - a2 > b1 - b2, giá trị tuyệt đối của a1 - a2 nhỏ hơn giá trị tuyệt đối của b1 - b2, và lợi nhuận tức thời lớn hơn các lỗ tương lai. Nó có lợi nhuận nói chung.

Không có trường hợp a1 - a2 nhỏ hơn 0 và b1 - b2 lớn hơn 0, bởi vì a1 - a2 > b1 - b2 đã được xác định. Tương tự, nếu a1 - a2 bằng 0, vì a1 - a2 > b1 - b2 được xác định, b1 - b2 phải nhỏ hơn 0. Do đó, miễn là phương pháp phòng ngừa tương lai ngắn và giao ngay dài đáp ứng các điều kiện a1 - b1 > a2 - b2, các hoạt động mở và đóng vị trí là phòng ngừa lợi nhuận.

Ví dụ, mô hình sau đây là một trong những trường hợp:

Trong [20]:

var a1 = 10
var b1 = 5
var a2 = 11
var b2 = 9

// a1 - b1 > a2 - b2 launches: a1 - a2 > b1 - b2

var objA = {
    "index" : [1, 2],
    "arrPrice" : [a1, a2],
}
var objB = {
    "index" : [1, 2],
    "arrPrice" : [b1, b2],
}
plot([{name : "a", x : objA.index, y : objA.arrPrice}, {name : "b", x : objB.index, y : objB.arrPrice}])

Ra khỏi [1]:

Thử đi, các bạn!


Có liên quan

Thêm nữa