Cara Mudah Menggunakan ChartObjectsCopyPaste di MetaTrader 5

Mike 2024.09.21 02:59 96 0 0
Lampiran

Pernahkah kamu merasa kesulitan saat ingin menyalin dan menempel objek grafik antara chart yang terbuka? Saya yakin kamu pernah mengalaminya. Menariknya, MetaTrader tidak menyediakan fitur "Copy & Paste" untuk objek-objek tersebut. Satu-satunya cara yang bisa digunakan untuk mendapatkan efek serupa adalah dengan menggunakan template (file tpl). Namun, template ini menyimpan seluruh keadaan chart, termasuk indikator, pengaturan, dan banyak hal tambahan yang mungkin tidak relevan untuk proses yang kamu butuhkan.

Oleh karena itu, saya mengembangkan indikator ChartObjectsCopyPaste.mq5. Indikator ini memungkinkan kamu untuk menyalin objek yang dipilih ke clipboard, yang kemudian dapat ditempelkan ke chart lainnya. Tanpa syarat!

Indikator ini didasarkan pada indikator lain yang diterbitkan dalam buku algotrading - ObjectGroupEdit.mq5.

Silakan ikuti tautan tersebut untuk mempelajari lebih lanjut tentang semua kelas yang mendasari (seperti ObjectMonitor, MapArray, dan lainnya) yang bekerja di belakang layar.

Indikator ini tidak memiliki buffer. Indikator ini harus dipasang pada setidaknya 2 chart: chart sumber dari mana kamu ingin menyalin objek, dan chart tujuan tempat kamu berencana untuk menempelkannya.

Saat berjalan di chart, indikator ini melacak objek grafik yang ada dan mencatat objek mana yang dipilih.

Seperti biasa, perintah "Copy & Paste" bekerja secara berpasangan:

  • Tekan tombol pintas Ctrl+Q untuk menyalin semua objek yang dipilih ke clipboard Windows sebagai teks (kamu bisa menyimpannya dan melihatnya di editor teks, contohnya ada di bawah).
  • Di chart tujuan, tekan Ctrl+J untuk menempelkan semua objek dari clipboard.

Kenapa Ctrl+Q/Ctrl+J? Kedua kombinasi tombol ini dipilih secara sukarela dari sedikit pilihan yang ada. Ini karena MetaTrader mencegat dan tidak mentransmisikan banyak tombol pintas ke program MQL. Terutama untuk Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins yang tidak berfungsi dalam konteks ini.

Karena kode sumber tersedia, kamu bisa mengubah tombol pintas ke kombinasi lain.

Karena indikator ini menggunakan DLL sistem untuk mengakses clipboard Windows, kamu harus mengizinkan impor DLL dalam dialog Properties, pada tab Dependencies.

Karena Codebase tidak mengizinkan impor DLL, kode yang berkaitan dengan clipboard dibungkus dalam direktif preprocessor kondisional #ifdef DLL_LINK, jadi silakan hapus komentar pada baris

#define DLL_LINK

sebelum kompilasi. Jika tidak, kamu akan melihat bagaimana fungsi clipboard hanya menampilkan peringatan sebagai respons terhadap penekanan tombol pintas, dan tidak ada tindakan nyata yang akan dilakukan!

Input yang tersedia adalah:

  • MakeAllSelectable - flag untuk membuat semua objek dapat dipilih (yang biasanya false untuk objek yang dibuat secara programatik);
  • LogDetails - flag untuk mencetak semua properti objek yang dipindahkan ke log;

Indikator ini tidak memeriksa apakah objek yang ditempel cocok dengan chart tujuan yang sebenarnya, seperti simbol, rentang harga, jumlah sub-window, dll. - kamu harus melakukan ini sendiri.

Berikut adalah contoh teks clipboard dengan 2 objek:

OBJ_VLINE       H1 Garis Vertikal 5578   0       0enumENUM_OBJECT_PROPERTY_INTEGER0       OBJPROP_COLOR   552951       OBJPROP_STYLE   22       OBJPROP_WIDTH   13       OBJPROP_BACK    04       OBJPROP_SELECTED        17       OBJPROP_TYPE    08       OBJPROP_TIME    172673994010       OBJPROP_SELECTABLE      111       OBJPROP_CREATETIME      172684700912       OBJPROP_TIMEFRAMES      2097151200     OBJPROP_LEVELS  0207     OBJPROP_ZORDER  0208     OBJPROP_HIDDEN  01032    OBJPROP_RAY     1enumENUM_OBJECT_PROPERTY_DOUBLE9       OBJPROP_PRICE   1.11449enumENUM_OBJECT_PROPERTY_STRING5       OBJPROP_NAME    H1 Garis Vertikal 55786       OBJPROP_TEXT    
206     OBJPROP_TOOLTIPOBJ_CHANNEL     H1 Channel Equidistant 40885    5       1enumENUM_OBJECT_PROPERTY_INTEGER0       OBJPROP_COLOR   2551       OBJPROP_STYLE   02       OBJPROP_WIDTH   13       OBJPROP_BACK    04       OBJPROP_SELECTED        17       OBJPROP_TYPE    58       OBJPROP_TIME    17267580008       OBJPROP_TIME.1  17267976008       OBJPROP_TIME.2  172675800010      OBJPROP_SELECTABLE      111      OBJPROP_CREATETIME      172684788312      OBJPROP_TIMEFRAMES      2097151200     OBJPROP_LEVELS  0207     OBJPROP_ZORDER  0208     OBJPROP_HIDDEN  01003    OBJPROP_RAY_LEFT        01004    OBJPROP_RAY_RIGHT       01031    OBJPROP_FILL    0enumENUM_OBJECT_PROPERTY_DOUBLE9       OBJPROP_PRICE   -28.1138790035587159       OBJPROP_PRICE.1 -21.7081850533807779       OBJPROP_PRICE.2 -48.04270462633452enumENUM_OBJECT_PROPERTY_STRING5       OBJPROP_NAME    H1 Channel Equidistant 408856       OBJPROP_TEXT    
206     OBJPROP_TOOLTIP

Dan berikut adalah objek-objek tersebut yang ditempelkan di chart:

2 objek grafik ditempelkan di chart melalui clipboard


Daftar
Komentar 0