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 0 enum ENUM_OBJECT_PROPERTY_INTEGER 0 OBJPROP_COLOR 55295 1 OBJPROP_STYLE 2 2 OBJPROP_WIDTH 1 3 OBJPROP_BACK 0 4 OBJPROP_SELECTED 1 7 OBJPROP_TYPE 0 8 OBJPROP_TIME 1726739940 10 OBJPROP_SELECTABLE 1 11 OBJPROP_CREATETIME 1726847009 12 OBJPROP_TIMEFRAMES 2097151 200 OBJPROP_LEVELS 0 207 OBJPROP_ZORDER 0 208 OBJPROP_HIDDEN 0 1032 OBJPROP_RAY 1 enum ENUM_OBJECT_PROPERTY_DOUBLE 9 OBJPROP_PRICE 1.11449 enum ENUM_OBJECT_PROPERTY_STRING 5 OBJPROP_NAME H1 Garis Vertikal 5578 6 OBJPROP_TEXT 206 OBJPROP_TOOLTIP OBJ_CHANNEL H1 Channel Equidistant 40885 5 1 enum ENUM_OBJECT_PROPERTY_INTEGER 0 OBJPROP_COLOR 255 1 OBJPROP_STYLE 0 2 OBJPROP_WIDTH 1 3 OBJPROP_BACK 0 4 OBJPROP_SELECTED 1 7 OBJPROP_TYPE 5 8 OBJPROP_TIME 1726758000 8 OBJPROP_TIME.1 1726797600 8 OBJPROP_TIME.2 1726758000 10 OBJPROP_SELECTABLE 1 11 OBJPROP_CREATETIME 1726847883 12 OBJPROP_TIMEFRAMES 2097151 200 OBJPROP_LEVELS 0 207 OBJPROP_ZORDER 0 208 OBJPROP_HIDDEN 0 1003 OBJPROP_RAY_LEFT 0 1004 OBJPROP_RAY_RIGHT 0 1031 OBJPROP_FILL 0 enum ENUM_OBJECT_PROPERTY_DOUBLE 9 OBJPROP_PRICE -28.113879003558715 9 OBJPROP_PRICE.1 -21.708185053380777 9 OBJPROP_PRICE.2 -48.04270462633452 enum ENUM_OBJECT_PROPERTY_STRING 5 OBJPROP_NAME H1 Channel Equidistant 40885 6 OBJPROP_TEXT 206 OBJPROP_TOOLTIP
Dan berikut adalah objek-objek tersebut yang ditempelkan di chart:

Postingan terkait
- Tampilkan Tren Saat Ini untuk Semua Time Frame dalam Satu Panel Sederhana di MetaTrader 4
- Menggunakan Indikator id_digits_object di MetaTrader 5 untuk Trader
- Panduan Lengkap MetaCOT 2 CFTC ToolBox untuk Analisis COT di MT4
- ID_Close_Rectangle: Indikator Praktis untuk Menutup Objek di MetaTrader 5
- ID_Close_Rectangle_TL_AL: Utility Praktis untuk Menutup Objek di MetaTrader 5