Sifat-sifat strategi

Setiap strategi Pine mempunyai sejumlah sifat yang menentukan perilakunya:

  1. Modal Permulaan
  2. Mata Wang Asas
  3. Saiz Pesanan
  4. Pempiramidan
  5. Komisen
  6. Sahkan Harga Untuk Pesanan Had
  7. Gelinciran
  8. Margin
  9. Kira semula

Mereka tersedia dalam tetapan strategi, di tab Sifat: 


Setiap parameter yang ditentukan dalam sifat strategi dapat diubah dengan mengedit argumen fungsi panggilan strategy()  dalam skrip Pine:

strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick)

Mari kita perhatikan setiap parameter input di menu Sifat dan parameter yang berkaitan dalam bahasa Pine:

1 - Initial Capital (parameter: initial_capital)  mewakili jumlah dana yang awalnya tersedia untuk strategi perdagangan, dalam mata wang yang ditentukan dalam Mata Wang Asas. Secara lalai, nilai ini sama dengan 100,000. Anda mungkin perlu meningkatkan nilai ini agar perdagangan berlaku pada simbol tertentu.

2 - Base Currency (parameter: currency) menentukan mata wang yang digunakan untuk pengiraan. Hasil yang muncul di tab Penguji Strategi  (keuntungan, kerugian, penarikan, dll) dinyatakan dalam mata wang ini.

Lalai, USD, EUR, AUD, GBP, NZD, CAD, CHF, HKD, JPY, NOK, SEK, SGD, TRY, ZAR. Sekiranya pilihan Lalai dipilih, strategi akan menggunakan mata wang lalai untuk simbol ini dan tidak ada penukaran mata wang.

3 - Order Size (parameters: default_qty_value, default_qty_type). Ini memerlukan nilai dan mod pengiraan. Perhatikan bahawa nilai yang dikira boleh dikenakan kekangan kerana kuantiti minimum yang dapat diperdagangkan untuk simbol:

  • Contracts (argument: strategy.fixed) - Strategi ini akan memasukan bilangan kontrak / saham / lot yang ditentukan.
  • Amount in currency (argument: strategy.cash) - Strategi ini akan memasuki jumlah yang dinyatakan dalam mata wang asas.
  • Percentage of equity (argument: strategy.percent_of_equity) - Saiz kedudukan akan dikira sebagai peratusan ekuiti yang ada apabila perdagangan dibuka. 

4 - Pyramiding (parameter: pyramiding) Menentukan bilangan maksimum penyertaan berturut-turut yang dibenarkan dalam arah yang sama. Apabila Pempiramidan nyahdayakan, strategi ini hanya boleh membuka satu kedudukan yang panjang atau pendek, walaupun keadaan kemasukan dipenuhi. Pempiramidan hanya memberi kesan kepada penyertaan yang dibuat menggunakan fungsi strategy.entry(). Ia tidak mempunyai kesan ke atas pesanan yang dibuat menggunakan strategy.order().

5 - Commission (parameters: commission_type, commission_value). Ia adalah jumlah yuran yang perlu dibayar dalam perdagangan untuk setiap perdagangan. Mod nilai dan pengiraan mesti dibekalkan. Perlu diingatkan bahawa komisen digunakan pada kedua-dua penyertaan dan keluar, dan apabila peratusan digunakan, komisen yang dikira akan berbeza berdasarkan nilai transaksi:

  • Percentage of the transacted value (argument: strategy.commission.percent) - mengenakan komisen pada setiap pesanan yang sama dengan peratusan yang ditentukan.
  • Currency per contract (argument: strategy.commission.cash_per_contract) - mengenakan komisen pada setiap kontrak.
  • Currency per order (argument: strategy.commission.cash_per_order) - mengenakan komisen pada setiap pesanan.

6 - Verify Price For Limit Orders (parameter: backtest_fill_limits_assumption) Membuat keadaan untuk memasuki kedudukan menggunakan pesanan had yang lebih ketat. Secara lalai, nilai ini adalah 0, I.E. Pesanan had diisi pada data sejarah sebaik sahaja harga yang ditunjukkan dalam urutan dicapai. Sekiranya parameter itu tidak sifar, maka pesanan had boleh memasuki kedudukan di dalam bar hanya jika harga pasaran telah melebihi tahap pesanan had  dengan bilangan tanda yang ditentukan.

 

7 - Slippage (parameter: slippage) Menentukan nilai dalam tanda yang akan ditambah kepada harga mengisi pasaran atau pesanan henti. Ia boleh digunakan untuk mengira spread.

8 - Margin For Long and Short Positions (parameters: margin_long, margin_short) menunjukkan margin untuk setiap dagangan, cth, peratusan posisi yang pedagang mesti danakan. Sebagai contoh, jika Margin for long positions adalah ditetapkan pada 25%, pedagang hendaklah mempunyai cukup dana untuk menampung 25% daripada kedudukan untuk dagangan yang dibuka dan berpotensi untuk mengambil sehingga 400% daripada ekuiti mereka dalam setiap dagangan.

Sekiranya satu posisi telah dibuka dan ia mula mengalami kerugian sehingga dana yang ada tidak mencukupi untuk menampung bahagian mereka di dalam dagangan, satu Panggilan Margin akan berlaku dan secara paksa akan mencairkan satu bahagian daripada posisi permulaan. Bilangan tepat unit yang akan dicairkan adalah 4 kali nilai ia akan mengambil untuk menampung kerugian. Ia adalah dikira mengikut algoritma berikut:

1. Kira Wang Digunakan, jumlah wang pedagang telah gunakan untuk membuka posisi.

Position Size * Entry Price

2. Mengira Market Value of Security (MVS).

Position Size * Current Price

3. Mengira Keuntungan Buka. Jika arah dagangan adalah singkat dan Keuntungan Buka adalah satu nombor positif, keputusan masih negatif, jadi kami darabkan nilai mutlak pengiraan kami dengan -1.

ABS(MVS - Money Spent) * -1

4. Mengira Ekuiti, cth., wang yang tersedia kepada padagang pada masa terkini.

Initial Capital + Net Profit + Open Profit

5. Menukar Peratusan Margin kepada Nisbah Margin.

Margin Percent / 100

6. Mengira Margin, cth, jumlah sebenar wang diperlukan untuk menampung bahagian mereka pada posisi buka.

MVS * Margin Ratio

7. Mengira Dana Tersedia, cth., jumlah kehilangan wang yang pedagang tidak dapat menampung dengan ekuiti terkini mereka.

Equity - Margin

8. Mengira jumlah wang kerugian pedagang.

Available Funds / Margin Ratio

9. Mengira banyak mana unit yang pedagang perlu jual untuk menampung kerugian. Nilai adalah dibundarkan kepada titik perpuluhan yang sama dengan saiz minima kontrak untuk simbol terkini.

TRUNCATE(Step #8 / Current Price)

10. Mengira banyak mana unit yang broker perlu jual untuk menampung kerugian. Broker contoh kami menjual 4 kali unit untuk memastikan panggilan margin adalah tidak akan selalu tercetus jika kerugian berlaku. Nilai ini akan menjadi positif untuk dagangan singkat kerana broker membeli unit untuk menampung kerugian dan bukannya menjual mereka.

Step #9 * 4

Untuk memeriksa pengiraan ini dengan lebih lanjut, mari tambahkan Supertrend Strategy terbina dalam kepada carta NASDAQ:TSLA pada rangka masa 1D. Tetapkan Order size kepada 300% ekuiti dan Margin for long positions  25%.

Masukan pertama kami terjadi pada bar pembukaan pada 16 Sep 2010. Kami membeli 682438 unit (Position size) untuk 4.43 USD (Entry price). Kemudian, pada 23 Sep 2010, apabila harga berada pada 3.9 (Current price), 111052 unit adalah dicairkan secara paksa melalui panggilan margin.

1. Wang Digunakan: 682438 * 4.43 = 3023200.34

2. MVS: 682438 * 3.9 = 2661508.2

3. Keuntungan Buka: −361692.14

4. Ekuiti: 1000000 + 0 − 361692.14 = 638307.86

5. Nisbah Margin: 25 / 100 = 0.25

6. Margin: 2661508.2 * 0.25 = 665377.05

7. Dana Tersedia: 638307.86 - 665377.05 = -27069.19

8. Wang Rugi: -27069.19 / 0.25 = -108276.76

9. Saham diperlukan untuk menampung kerugian: TRUNCATE(-108276.76 / 3.9) = TRUNCATE(-27763.27) = -27763

10. Saiz Panggilan Margin: -27763 * 4 = - 111052

9 - Recalculate menentukan berapa kerap strategi perlu dikira semula. Secara lalai, strategi dikira semula pada penutupan setiap bar, tetapi menggunakan pilihan di bawah, ia juga boleh dikira semula:

  • After Order is Filled (parameter: calc_on_order_fills) - Membenarkan strategi untuk melakukan pengiraan pesanan intra-bar tambahan dengan serta-merta selepas pesanan di isi. Pengiraan tambahan ini berlaku pada kedua-dua bar sejarah dan masa nyata.
  • On Every Tick (parameter: calc_on_every_tick). Secara lalai, strategi hanya mengira pada penutup bar realtime. Parameter ini membolehkan strategi untuk mengira setiap kemas kini bar realtime, seperti sesuatu kajian dilakukan. Perlu diperhatikan bahawa tanda data akan hilang apabila carta disegarkan, jadi strategi yang menggunakan pilihan ini akan mengecat semula. Parameter ini tidak menjejaskan tingkah laku strategi pada bar sejarah. Juga perlu diambil perhatian bahawa strategi yang menggunakan ciri ini tidak akan menunjukkan hasil yang realistik pada bar sejarah, kerana ia tidak mengandungi tanda data.