Minta bantuan: cara mencegah pesanan pembelian dan penjualan yang berterusan di K-Line yang sama

Penulis:Xionglonghui, Dicipta: 2021-09-20 09:10:57, Dikemas kini:

Oleh kerana keterbatasan bahasa Melayu itu sendiri, strategi ini terpaksa dilaksanakan semula dengan JS.

Sejak menggunakan JS semula, banyak masalah telah dijumpai, dalam operasi rak sebenar, dijumpai pada satu K baris, kerana turun naik, akan datang semula 1-2 kali membeli dan menjual. menyebabkan kerugian.

Saya ingin bertanya kepada anda, bagaimana bahasa Melayu direka untuk mengelakkan keadaan ini, bagaimana pemikiran logiknya?

Atau: Adakah saya boleh menggunakan JS untuk mengelakkan pembelian dan penjualan kedua kali dalam talian K yang sama? Adakah anda ingin menyelesaikan masalah dengan tanda masa, tetapi mendapati bahawa pesanan yang telah diselesaikan tidak mempunyai tanda masa, maka anda boleh menggunakan JS sendiri dengan Date.parse ((new Date)))


Lebih lanjut

XionglonghuiTerdapat juga masalah, dengan kod di bawah ini, adalah untuk mengelakkan perdagangan yang berterusan pada garis K yang sama tidak menyebabkan kerugian kerana sedikit turun naik pada garis K yang sama. Tetapi terdapat juga masalah baru, iaitu selepas garis K yang sama rata, anda harus menunggu sehingga garis K seterusnya terbuka. Kodnya adalah sebagai berikut: if (before_record_time!= now_records.Time) // masa baris K yang terdahulu tidak sama dengan masa yang salah pada baris K ini, maka untuk baris K yang berbeza ♪ Jika anda menulis logik perniagaan untuk penentuan kedudukan, anda tidak boleh membuat penentuan kedudukan berulang kali pada garis K yang sama. {C:$0000FF} Jadi, penyelesaian saya ialah, sebelum ini, saya menyimpan satu variabel pada satu timestamp pada K-line, dan sekarang saya menukarnya kepada 2 storan. Satu timestamp yang melakukan pelbagai arah duo_before_record_time Tempoh yang dilakukan dalam arah kosong kong_before_record_time Jika anda melakukan lebih banyak, gunakan batasan ini, dengan garis K yang sama, dengan kedudukan yang berlainan selepas kedudukan. Kodnya adalah sebagai berikut: if (duo_before_record_time!= now_records.Time) // masa baris K yang terdahulu tidak sama dengan masa yang salah pada baris K ini, maka untuk baris K yang berbeza ♪ Jika anda menulis logik perniagaan untuk penentuan kedudukan, anda tidak boleh membuat penentuan kedudukan berulang kali pada garis K yang sama. {C:$0000FF} Apabila anda membuat ruang kosong, anda juga boleh mengehadkan kedudukan yang berlawanan dengan kedudukan yang sama selepas anda meletakkan pada garis K yang sama. if (kong_before_record_time!= now_records.Time) // masa K baris sebelumnya tidak sama dengan masa yang salah pada baris K ini, maka untuk baris K yang berbeza ♪ Jika anda menulis logik perniagaan untuk penentuan kedudukan, anda tidak boleh membuat penentuan kedudukan berulang kali pada garis K yang sama. {C:$0000FF} Dengan cara ini, selepas garis K yang sama berada dalam kedudukan yang rata, anda boleh membuka kedudukan yang berlawanan dengan segera jika syarat pembukaan berlaku. Tetapi tidak membuka kedudukan yang sama. (walaupun syarat pembukaan berlaku, ia tidak akan dibuka pada garis K yang sama) Saya berharap soalan saya dapat membantu rakan-rakan saya yang akan datang.

RumputSurat kerja telah membalas anda.

Rasa tenang dan baikAksi melintang K adalah masa, harus diselesaikan dengan masa.

XionglonghuiKodnya adalah sebagai berikut: if (before_record_time!= now_records.Time) // masa baris K yang terdahulu tidak sama dengan masa yang salah pada baris K ini, maka untuk baris K yang berbeza ♪ Jika kita menulis logik perniagaan untuk penempatan di sini, kita tidak boleh membuka penempatan berulang kali pada garis K yang sama. {C:$0000FF}

XionglonghuiPenyelesaian yang lebih baik adalah dengan mengisytiharkan satu pemboleh ubah untuk menyimpan senaraik masa K baris terkini pada setiap kali anda meletakkan pesanan (tidak kira sama ada anda melakukan banyak penempatan kosong, selagi pesanan disimpan dengan senaraik ini), dan kemudian memutuskan senaraik masa yang terakhir tidak sama dengan senaraik masa K baris terkini ini, yang dapat diselesaikan dengan sempurna.

XionglonghuiDengan kata lain, menggunakan exchange.GetOrders (().length>0 untuk menentukan tiada pesanan yang belum selesai dan menyimpan masa pesanan.

XionglonghuiSetelah mengintip-ngintip, akhirnya saya berjaya, kodnya seperti berikut: if (Math.abs ((before_order_time - now_records.Time)/1000 > now_period)) // Huruf masa yang ditukar terakhir dikurangkan daripada huruf masa pada garis K sekarang, dikurangkan dengan 1000 untuk mendapatkan bilangan saat, dan mengambil nilai mutlak yang buruk daripada kedua-duanya, jika lebih besar daripada bilangan saat pada kitaran, tidak berada di garis K yang sama. // perlu menetapkan sendiri pembolehubah before_order_time, setiap kali anda menyimpan bar masa yang anda order. before_order_time = Date.parse ((new Date)))); // merakam bar masa sekarang // Bilangan saat untuk bilangan tempoh, adalah dengan var now_period = _C ((exchange.GetPeriod); // Dapatkan tempoh semasa, seperti 5 minit, 15 minit, 1 hari, dan jumlah hasil yang dikembalikan adalah saat.

Musim panas tidak memukul andaIa sepatutnya boleh dihalang melalui timestamp dalam data K-line. Jika timestamp yang sama, anda tidak boleh memesan.