Strategi saya tidak mengendahkan argumen ‘from_entry’ semasa menutupwhile closing entries

Fungsi strategy.exit() membenarkan anda untuk keluar dari satu masukan tertentu dengan menggunakan parameter from_entry.

Jika strategi mempunyai lebih daripada satu masukan (pyramiding), susunan di mana posisi pasaran ditutup dalam senarai dagangan dalam penguji strategi mungkin tidak jelas.

Secara lalai, pesanan keluar pertama dihantar oleh satu strategi menutup pesanan masukan terawal. Kemudian, pesanan keluar kedua akan menutup masukan kedua terawal dan seterusnya. Secara asasnya, strategi menutup dagangan berdasarkan kepada prinsip first in, first out  (FIFO).

Dalam contoh berikut, kami menggunakan argumen from_entry untuk menyambungkan panggilan strategy.exit kepada masukan tertentu:

//@version=5
strategy("close_entries_rule_example", overlay=true, pyramiding = 2)
 
strategy.entry("EN2", strategy.short, when = bar_index == last_bar_index - 20)
strategy.entry("EN1", strategy.short, when = bar_index == last_bar_index - 15)
 
if bar_index == last_bar_index - 10
    strategy.exit(id = "EX1", from_entry = "EN1", profit = 1, loss = 1)

if bar_index == last_bar_index - 5
    strategy.exit(id = "EX2", from_entry = "EN2", profit = 1, loss = 1)

Pertama, strategy.entry membuka satu posisi singkat EN2, dan EN1 memasuki lima bar selepas itu.

Sebaik sahaja lima bar berlalu, satu fungsi strategy.exit() yang sepadan dengan id = EX1 akan keluar dari masukan EN1, dan EX2 akan keluar dari EN2 dalam lima bar selepas itu.

Tetapi hasil penguji strategi sebenar akan kelihatan seperti ini:

Dagangan pertama dengan id EN2 ditutup dengan pesanan keluar EX1, dan EN1 ditutup oleh EX2, walaupun ia dikodkan bahawa EN2 hendaklah ditutup oleh EX2. Jadi, pesanan keluar pertama ditutup oleh pesanan masukan pertama (first entry order), dan pesanan keluar kedua menutup masukan kedua. Ini merupakan kelakuan biasa untuk FIFO.

Untuk menjadikan strategi boleh menutup pesanan dalam mana-mana jujukan, argumen close_entries_rule untuk fungsi strategy() hendaklah ditetapkan pada "ANY" (dan bukannya lalai “FIFO”), cth: 

//@version=5
strategy(..., close_entries_rule="ANY", ...)

Dengan nilai "ANY" ini, strategi boleh menentukan pesanan keluar mana yang akan menutup pada posisi tertentu. (Ambil maklum bahawa "FIFO" adalah disetkan sebagai lalai walaupun apabila argumen close_entries_rule tidak dijelaskan).


Dengan panggilan strategy() ditukar kepada

strategy("close_entries_rule_example", close_entries_rule="ANY",  overlay=true, pyramiding = 2)

hasil penguji strategi akan berbeza:

Dalam kes ini, pesanan keluar pertama (secara kronologi) EX1 menutup masukan kedua EN1, dan keluaran kedua menutup masukan pertama.