Panduan Menggunakan ChartObjectsCopyPaste untuk MetaTrader 5

Mike 2024.09.21 02:59 93 0 0
Lampiran

Adakah anda pernah merasa perlukan untuk menyalin dan menampal objek grafik antara carta yang dibuka? Saya yakin ramai di antara kita pernah mengalaminya. Malangnya, MetaTrader tidak menyediakan fungsi "Salin & Tampal" untuk objek. Satu-satunya cara untuk mencapai kesan yang lebih kurang sama adalah melalui templat (fail tpl). Tetapi templat menyimpan semua keadaan carta, termasuk indikator, tetapan dan banyak perkara lain yang mungkin tidak relevan untuk proses penggandaan yang diperlukan.

Oleh sebab itu, saya telah membangunkan indikator ChartObjectsCopyPaste.mq5. Ia membolehkan anda menyalin objek yang dipilih ke papan klip, daripada mana anda boleh menampalnya ke carta lain. Tanpa syarat tambahan.

Indikator ini berdasarkan satu lagi indikator yang diterbitkan dalam buku algotrading - ObjectGroupEdit.mq5.

Sila ikuti pautan tersebut untuk mengetahui lebih lanjut mengenai semua kelas yang terlibat (ObjectMonitor, MapArray dan lain-lain) yang berfungsi di belakang tabir.

Indikator ini tidak mempunyai buffer. Ia perlu dipasang pada sekurang-kurangnya 2 carta: carta sumber dari mana anda ingin menyalin objek, dan carta sasaran di mana anda merancang untuk menampalnya.

Semasa berjalan pada carta, indikator ini mengesan objek grafik yang sedia ada dan membuat catatan tentang objek yang dipilih.

Perintah "Salin & Tampal" yang Biasa

Seperti biasa, perintah "Salin & Tampal" berfungsi dalam pasangan:

  • Tekan kekunci Ctrl+Q untuk menyalin semua objek yang dipilih ke dalam papan klip Windows sebagai teks (anda boleh menyimpannya dan melihatnya dalam mana-mana penyunting teks, berikut adalah contoh di bawah).
  • Di carta sasaran, tekan Ctrl+J untuk menampal semua objek dari papan klip.

Kenapa Ctrl+Q/Ctrl+J? Ini adalah dua kombinasi kekunci yang dipilih secara sukarela dari yang sangat sedikit. Ini kerana MetaTrader menyekat dan tidak meneruskan banyak kekunci pintas kepada program MQL. Khususnya, ini berlaku untuk Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins yang tidak berfungsi dalam konteks ini.

Oleh kerana kod sumber tersedia, anda boleh menukar kekunci pintas kepada kombinasi lain.

Kerana indikator ini menggunakan DLL sistem untuk mengakses papan klip Windows, anda perlu membenarkan import DLL dalam dialog Properties, pada tab Dependencies.

Disebabkan oleh fakta bahawa Codebase tidak membenarkan import DLL, kod yang berkaitan dengan papan klip dibungkus dalam arahan pemproses pra bersyarat #ifdef DLL_LINK, jadi sila nyahkomentari baris

#define DLL_LINK

sebelum kompilasi. Jika tidak, anda akan melihat bagaimana fungsi papan klip akan menunjukkan amaran sebagai respons kepada penekanan kekunci, dan tiada tindakan sebenar akan dilakukan!

Input adalah:

  • MakeAllSelectable - bendera untuk menjadikan semua objek boleh dipilih (yang biasanya tidak benar untuk objek yang dibuat secara programatik);
  • LogDetails - bendera untuk mengeluarkan semua sifat objek yang dipindahkan ke dalam log;

Indikator ini tidak memeriksa jika objek yang ditampal sepadan dengan carta sasaran yang sebenar, seperti simbol, julat harga, bilangan subtingkap, dsb. - anda perlu melakukannya sendiri.

Berikut adalah contoh teks papan klip dengan 2 objek:

OBJ_VLINE       H1 Garis Menegak 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 Menegak 55786       OBJPROP_TEXT    
206     OBJPROP_TOOLTIPOBJ_CHANNEL     H1 Saluran Seimbang 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 Saluran Seimbang 408856       OBJPROP_TEXT    
206     OBJPROP_TOOLTIP

Dan berikut adalah objek-objek ini yang telah ditampal pada carta:

2 objek grafik ditampal pada carta melalui papan klip

Senarai
Komen 0