Cara bekerja dengan storan tempatan
Dalam artikel ini dan video yang berkaitan, kami akan menerangkan apa itu storan tempatan dan bagaimana ia boleh digunakan dalam algo cTrader anda. Kami juga akan memberikan contoh yang berguna dan menerangkan cara skop storan tempatan berfungsi.
Mengapa menggunakan storan tempatan
Terdapat banyak kes di mana anda mahu algo anda menyimpan sesuatu ke atau mengakses sesuatu dari sistem fail tempatan. Contohnya, anda mungkin ingin menyimpan log semua operasi cBot. Walau bagaimanapun, ini biasanya memerlukan algo mempunyai hak akses yang lebih tinggi (AccessRights.FullAccess), yang kurang ideal untuk pengguna. Jika algo meminta pengguna untuk memberikan kebenaran yang lebih tinggi, pengguna berkemungkinan kurang mempercayai algo tersebut, terutamanya jika ia diedarkan tanpa kod sumbernya. Storan tempatan ialah cara mudah untuk mengakses sistem fail tempatan dengan selamat tanpa menimbulkan sebarang kebimbangan keselamatan. Penggunaan storan tempatan membolehkan pembangun mengekalkan hak akses algo mereka ditetapkan kepada AccessRights.None.
Menyimpan rentetan dalam storan tempatan
Setiap jenis algo cTrader mempunyai sifat LocalStorage yang membolehkan pelaksanaan operasi baca dan tulis. Untuk menunjukkan cara storan tempatan berfungsi, kami akan mencipta cBot baharu. Dalam pengendali OnStart, kami akan menggunakan kaedah LocalStorage.SetString(string key, string value). Seperti yang anda lihat, ia mengambil dua hujah, iaitu kunci di mana maklumat harus disimpan dan nilai yang akan disimpan.
1 | |
Untuk mendapatkan semula nilai, kami akan menggunakan kaedah GetString(string key) dalam pengendali OnTick cBot.
1 | |
Selagi Message tidak null, kita boleh membina cBot dan melihat nilai yang diambil dicetak dengan betul dalam log.
Menyimpan objek dalam storan tempatan
Selain rentetan, anda boleh menggunakan storan tempatan untuk menyimpan sebarang jenis objek. Di sebalik tabir, cTrader menyerial dan menyahserial objek dalam storan tempatan yang membolehkan perkongsian sebarang jenis data. Untuk menunjukkan ini, kita boleh mencipta kelas baharu untuk menyimpan maklumat, menyimpannya dan kemudian mengambilnya semula. Kita akan menamakan kelas ini Signal.
1 2 3 4 5 6 | |
Dalam kaedah OnStart(), kita akan mencipta contoh baharu kelas ini dan mengawalkan sifatnya.
1 2 3 4 5 | |
Kita akan menggunakan kaedah SetObject(string key, Object object) untuk menyimpan dan mengambil semula baki akaun.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Jika kita membina cBot kita dan melancarkannya, kita sepatutnya melihat nilai yang betul dicetak dalam log.
Skop storan tempatan
Apabila menggunakan storan tempatan, anda juga boleh menentukan skop di mana nilai yang disimpan didedahkan untuk pengambilan semula pada masa hadapan. Terdapat tiga skop berbeza yang tersedia:
- Skop tika - nilai yang disimpan hanya tersedia untuk tika tertentu.
- Skop jenis - nilai yang disimpan tersedia untuk semua tika algoritma tertentu.
- Skop peranti - nilai yang disimpan tersedia untuk semua algoritma tanpa mengira jenisnya.
Berikut adalah contoh bagaimana penggunaan skop tika boleh kelihatan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Perhatikan bahawa kita telah menyatakan skop secara jelas dalam kaedah SetString().
Kita boleh menambah beberapa tika cBot ini dan mengkonfigurasinya supaya satu menulis ke storan tempatan manakala yang lain mengambil maklumat. Dalam kes ini, membaca maklumat sepatutnya mustahil. Walau bagaimanapun, jika hanya satu tika ditetapkan untuk melaksanakan kedua-dua operasi tulis dan baca, cBot tersebut sepatutnya berfungsi seperti yang dimaksudkan.
Berikut adalah contoh penggunaan skop jenis.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Jika kita mencipta dua tika bot ini dan menetapkannya supaya satu tika menulis ke storan tempatan dan yang lain membaca nilai yang disimpan, semuanya sepatutnya berfungsi tanpa menimbulkan sebarang ralat.
Akhir sekali, skop peranti membolehkan pertukaran maklumat antara algo yang berbeza. Berikut adalah contoh penggunaan jenis skop ini.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Kita boleh membina beberapa cBot yang semuanya menggunakan kod yang sama. Jika kita menetapkannya dengan betul, satu cBot boleh menyimpan maklumat ke storan tempatan manakala yang lain mengambilnya. Selagi skop sama dengan LocalStorageScope.Device, sistem kita sepatutnya berfungsi seperti yang dimaksudkan.
Menggunakan kaedah Flush() dan Reload()
Jika anda ingin berkongsi maklumat antara beberapa tika cTrader, panggil kaedah Flush() dan Reload().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Jika kita membina beberapa cBot dengan kod ini dan menjalankan eksperimen untuk berkongsi maklumat antara tika cTrader yang berbeza, kita akan melihat bahawa nilai yang disimpan kekal seperti yang dimaksudkan.