Algoritma dan Strategi Forex Mekanikal | OneStepRemoved

  • Articles
  • Sophisticated Web Sites
  • Dagangan automatik
  • Testimonial
  • Hubungi

Become an Algo trader in Baby Steps

April 4, 2016 oleh Lior Alkalay 10 Komen

The world of traders is divided into two groups; those who trade using algorithms and those who don’t. Those who trade using algorithms, aka algotraders, are well aware of the advantages of trading with an algo… And for those who don’t use algos? They are equally aware of the algo advantages but are reluctant to dive into its complexity; they are deterred from learning how. But the road to success in trading is not by avoiding challenges, but overcoming them, perhaps in baby steps.

First Baby Step to becoming an Algo trader

Let me ask you a question. What do you think is the first thing you’d need to do to become an algotrader? You might respond, “Learn programming, sudah tentu! How else?” Well, you’d be wrong.

If you plan to learn programming for the sole purpose of becoming an algotrader, you’re likely to get lost. Akhirnya, in despair or frustration, you’ll give up on algotrading.

There are numerous languages, from MQL to R to Python, and you have to decide which one to start with. You might find yourself wasting valuable time learning far too many trivial functions. It may take quite a long time before you even create a trading algo, let alone a profitable one.

But there’s another way, which I call reverse engineering.

The first step is to figure out which trading algo you want to make. Dalam erti kata lain, what are the functions and strategy it should implement? Then you test it and finally, move on to the programming part. Dengan cara ini, you’re focused like a spotlight. You know exactly what your algo should do and can focus on the exact functionalities you need to learn to make it happen.

Everything will just come intuitively; which language, how and in what. All the pieces will fall much quicker into place because you already know what to look for.

The best way to start is by using a flowchart. It is actually one of the first things you learn in programming schools.

And what determines the flow? Sudah tentu, it’s the conditions. What we call the “ifs.” “Ifs” can be one condition or have many “ands” and “ors.” That’s how you decide what your algo should do in any given circumstances. The conditions to the algo are what the brain is to the body; they do the thinking.

Second Baby Step: Use Excel

Once you’ve made a flowchart of conditions, rather than using a complex tool, use Microsoft Excel or some other spreadsheet software.

Algo

Sumber: MT4

Extract historical data of a price data; start by using only the closing price. If you want to trade on a daily interval, extract daily data and so on. Use a separate column for each of the conditions in the flowchart, that way it’s easy to write and figure out. Add another column for a buy and sell output to mark when you “opened” and when you “closed” a position. And finally add one column of accumulated profit/ loss.

Use separate columns for each conditions and fill the chart. All you need now is to run a linear chart on one column, accumulated profit/loss, and look at the algo’s historical performance.

Once you master the basics you can move on to move advanced back-testing and curve fitting. But for a start that will do.

Algo

Akhirnya, Learn to Program

ok, you’re not a “baby” anymore; you have a good idea of what an algo trader needs to do. Now that you’ve got the concept down pat, you’re ready to begin learning programming.

In terms of which language to start with, that will depend on the circumstances. If you are already using an MT4 platform, it’s a no brainer; learn MQL which runs on MT4. The MQL website is filled with “how to” materials. And since you already have a diagram of your algo and an idea what you want to do, finding your way should be simple.

But if you trade with a different broker, you’ll have to decide which best suits. Secara peribadi, I recommend starting with MQL, just because it’s easier. Kemudian, you can move into Python, which is a rather easy language to learn or C++ if your algo needs to work fast. If you algo is heavy on the math then perhaps R would fit.

Here are some places you can learn online:

MQL

Coursera

Code Academy

EDX

Atau, sudah tentu, you can learn from a book. I am more of a book person, but that’s just me.

Then there is another issue—API. API is the mechanism that enables your algo to communicate with your broker and execute your trades. Some brokers work better with certain programming languages than others. Most large brokers have communities and forums that can go into detail as to the best way to use an API.

Unlike the first two baby steps, no one would ever say that learning to program was a baby step. Sebaliknya, it’s more of a giant leap. It takes time to learn and to master, though it is worth it in the long run. Sementara itu, you can always use libraries of codes on the web for more complex algos. The thing is that once you’ve accomplished the first two baby steps, making the final leap into programming is a no brainer.

Filed Under: Menguji konsep anda sejarah Tagged With: algoritma, API, cemerlang, MQL, pengaturcaraan, R

Terlalu Banyak Carta

Julai 5, 2012 oleh Shaun Overton 2 Komen

Sejuta carta pada skrin. Ia kelihatan seperti tompok setiap pasangan mata wang yang dikenali dengan campuran tempoh masa setiap tambah untuk menjadikannya lebih menarik. Anda, rakan saya, mengalami mimpi ngeri mengimbangi tetapan EA pada semua carta ini.

Idea menjalankan Expert Advisor tunggal yang tersenarai semua carta dan jangka masa beberapa berdiri sebagai satu penyelesaian yang jelas. Ia bukan satu yang baik, walaupun. Cara yang MetaTrader 4 direka mencegah persediaan ini daripada bekerja dengan lancar.

Permulaan() berfungsi dalam MQL4

MQL4 Expert Advisors hanya berjalan di salah satu daripada tiga cara yang berbeza. Init ini() fungsi dipanggil apabila anda memuatkan EA ke carta. Deinit ini() fungsi beroperasi apabila anda mengeluarkan EA. Yang meninggalkan permulaan() fungsi. Ia seperti jantung pukulan itu semua program MQL4.

Kutu masuk memberitahu carta untuk memberitahu penasihat pakar dilampirkan tentang harga dikemaskini. Ketika itu berlaku, penasihat pakar yang menjalankan permulaan() fungsi. Fungsi yang mengandungi semua kod yang peniaga mengaitkan dengan penasihat pakar: meletakkan perdagangan, melaksanakan trailing berhenti, dan lain-lain. Semua daripada tindakan-tindakan bergantung pada kutu masuk.

Yang organisasi MQL4 mencipta masalah untuk matlamat mewujudkan EA yang meletakkan perdagangan untuk semua carta. Penasihat pakar hanya mengemaskini apabila tanda yang datang dalam. Jika saya mahu untuk berdagang GBP / JPY dari carta yang dilampirkan kepada EUR / USD, apa-apa kelengahan dalam EUR / USD kutu menyebabkan kelewatan dalam melaksanakan dagangan GBP / JPY.

Ini mungkin tidak kelihatan seperti masalah besar. Ia bukan satu masalah besar – kebanyakan masa. Ia boleh, Walau bagaimanapun, mewujudkan masalah leteran daripada tertanya-tanya mengapa peratusan ketara perdagangan kelihatan untuk melaksanakan lewat. Peniaga pada carta satu minit pun akan melihat isyarat terlepas. Walaupun ia tidak kerap, walaupun pasangan utama sering pergi lebih lama daripada satu minit di antara mata.

Kerja-arounds

Satu idea untuk mengurangkan jumlah carta terbuka dan mengabaikan masalah semak masuk adalah untuk mewujudkan EA yang tersenarai di jangka masa beberapa for the currency pair where it’s attached. If I wanted to trade the AUDCAD on M30, H1, H4 D1 dan carta, kemudian saya boleh meletakkan EA pada salah satu carta mereka tetapi ia mencari perdagangan pada tempoh masa yang dipilih. Ini jenis penyelesaian boleh mengurangkan bilangan carta terbuka oleh 75% atau lebih.

Idea mengawal segala-galanya daripada carta tunggal adalah hampir sama dengan penunjuk pengimbasan pasaran bahawa kita mencipta beberapa bulan yang lalu. Sebenarnya tiada perbezaan antara yang penunjuk dan penasihat pakar yang dicadangkan di sini. Saya rasa hilang isyarat penunjuk adalah jauh lebih rendah akibat daripada hilang isyarat perdagangan. Penasihat pakar lebih cenderung untuk melaksanakan tambahan, operasi berterusan seperti trailing berhenti yang benar-benar mengabaikan petunjuk. Akibat kutu kelewatan adalah jauh kurang penting untuk petunjuk daripada ia adalah untuk EA.

Filed Under: MetaTrader Tips Tagged With: DIA, penasihat pakar, penunjuk, MetaTrader, MQL, tempoh masa beberapa, pengimbas, permulaan

Organisasi MQL

Mei 1, 2012 oleh Shaun Overton Tinggalkan komen

Semua pakar penasihat dan penunjuk MQL mengandungi beberapa komponen penting. Organisasi umum program MQL tidak berbeza terlalu kerap.

Fail biasanya bermula dengan pengisytiharan #defines (paun dilafazkan menentukan) pembolehubah global dan pembolehubah luaran, juga dikenali sebagai Jenis data Luaran. Mereka muncul berhampiran bahagian atas kod untuk membantu baca memahami pembolehubah yang akan dijalankan dalam program ini. Sebaik-baiknya, nama-nama pembolehubah dan bagaimana ia dianjurkan perlu membantu pengaturcara borang pemahaman umum tentang apa penasihat pakar atau penunjuk mungkin melakukan.

Bahagian seterusnya biasanya init yang() fungsi, yang perkataan Memula disingkatkan. Bahagian Kod ini terutamanya yang berkaitan dengan petunjuk adat pengaturcaraan. Kebanyakan tetapan penunjuk umum seperti mengisytiharkan penampan penunjuk, warna untuk digunakan dan ciri-ciri asas yang lain terletak di dalam seksyen ini. Saya menggunakan init() dalam setiap penasihat pakar yang kita membina untuk menukar input ke dalam suasana yang sesuai untuk harga broker. Jika pelanggan input stop loss daripada 50 ke dalam satu EA, Saya tidak perlu berbuat apa-apa jika ia adalah satu 4 broker digit. Saya lakukan, Walau bagaimanapun, perlu menukar input untuk bekerja dengan 5 broker digit. Saya menjalankan pemeriksaan cepat dalam masa init() untuk melihat jika Digit == 3 || Digit == 5. Jika ya, maka saya bertambah banyak input terjejas oleh penetapan bahawa oleh 10.

deinit() adalah bahagian yang paling penting; ia cukup mudah untuk deinitialize fail MQL kerana ia biasanya tidak mengambil apa-apa sumber sistem. Ia jarang digunakan untuk apa-apa yang penting. Satu-satunya yang menggunakan saya pernah mempunyai untuk deinit() adalah untuk menutup pemegang fail terbuka atau untuk membuat beberapa jenis nota penutup. Ini sering dilakukan sama ada pada carta secara langsung melalui Komen() fungsi atau lebih kerap dengan menulis terus ke dalam fail log.

Permulaan() fungsi adalah daging sebenar penasihat pakar MQL atau penunjuk. Setiap kali MetaTrader mengesan sesuatu tick masuk, ia memberitahu apa-apa program MQL. Program-program kemudian memanggil fungsi permulaan supaya ia boleh melakukan apa sahaja yang perlu berbuat. Semua operasi perdagangan, pengiraan, pemantauan akaun, dan lain-lain, berlaku dalam seksyen ini.

Semua fungsi adat lain di dalam program ini muncul di bawah permulaan(). Saya biasanya lebih suka kedudukan mereka mengikut keutamaan mereka atau frekuensi yang aku memanggil mereka sepanjang program. Perintah penempatan fungsi tidak menjejaskan prestasi dalam apa cara sekalipun. Ia ketat amalan kosmetik yang membuat kod pengaturcaraan lebih mudah dibaca.

Filed Under: MQL (untuk nerds) Tagged With: deinit, penasihat pakar, penunjuk, haba, MQL, MQL4, permulaan

Jenis-jenis Data MQL

April 30, 2012 oleh Shaun Overton 2 Komen

MQL4 menyokong tujuh jenis data dalam program ini. Setiap jenis dikaitkan dengan tugas yang berbeza perdagangan yang pengaturcara perlu melakukan. Matlamat artikel ini adalah untuk menyediakan satu rujukan ringkas apabila menggunakan setiap jenis data.

Dua jenis data mungkin jenis yang paling biasa ditemui dalam program MQL. Ini kerana ia adalah jenis yang bertanggungjawab untuk mengira nombor titik terapung. Katakanlah misalnya, bahawa penasihat pakar perlu untuk menentukan bila untuk menyesuaikan trailing stop. Penasihat pakar kelihatan pada harga semasa dan menolak ia daripada stop loss semasa untuk mengekalkan jarak yang sesuai (1.3230-1.3209= 0,0021). Jarak memerlukan titik perpuluhan. Apabila penasihat pakar menjimatkan jarak ke memori, yang diperlukan untuk menyimpan maklumat yang selepas titik perpuluhan. Yang memaksa programmer untuk memilih pembolehubah jenis double.

Integer, atau int, adalah versi yang lebih mudah daripada dua. Nilai Double memerlukan tempat perpuluhan untuk memegang nilai nombor dengan tepat. Integer, atau jumlah keseluruhan, tidak mempunyai tempat perpuluhan. Integer sewajarnya digunakan apabila programmer MQL tahu melalui fakta tertentu yang jumlah tidak akan mengandungi perpuluhan. Satu contoh ialah jika anda mahu untuk melaksanakan dagangan max menampilkan. Jika jumlah dagangan terbuka di dalam akaun orang melebihi bilangan tertentu, kemudian menghalang perdagangan. Kita tahu terlebih dahulu bahawa tidak ada perkara seperti di 4.76 perdagangan yang terbuka. Hanya ada 4 perdagangan terbuka atau 5 perdagangan terbuka. Ini jelas menunjukkan keperluan untuk menggunakan integer.

Nilai datetime hanya apa yang mereka bunyi seperti. Mereka mewakili kedua-dua tarikh dan masa. Lebih khusus lagi, pembolehubah datetime mewakili bilangan saat yang telah berlalu sejak Januari 1, 1970. Ini adalah di mana ia mendapat rumit sedikit. Bilangan saat yang berlalu sebenarnya integer. Datetimes nilai integer kedai tetapi kemudian mengaitkannya dengan tarikh dan masa.

Satu nilai 0 menunjukkan bahawa masa adalah 00:00 pada Januari 1, 1970. Satu nilai 60 berdiri selama satu minit kemudian di 00:01 1/1/1970, dan sebagainya. Satu manfaat mengetahui bahawa maklumat jenis kedai datetime sebagai integer adalah bahawa anda boleh dengan mudah menentukan jumlah masa yang berlaku antara acara. Jika sekiranya daftar masuk bermula pada 15:35 dan berakhir di 18:12, anda hanya boleh menolak 18:12 – 15:35 dan menggulung dengan bilangan saat antara nilai-nilai. Maklumat yang kemudiannya boleh digunakan untuk menentukan jumlah minit / jam / hari antara kedua-dua acara.

Jenis data warna, tidak menghairankan, memegang maklumat warna seperti hitam, kuning, merah dan sebagainya. Sama seperti jenis datetime, warna juga menggunakan integer simpan maklumat itu. Perbezaannya, walaupun, ialah mengekstrak maklumat warna daripada integer adalah tidak di semua jelas. Meningkatkan jenis warna dari 32768 oleh seseorang tidak semestinya membuat ia lebih atau kurang hijau. Warna menggunakan maklumat integer untuk mengambil merah, komponen hijau dan biru warna dalam format perenambelasan. Menjelaskan hexadecimals dengan baik di luar skop artikel ini. Ia tidak mungkin untuk datang dalam pengaturcaraan MQL anda. Saya telah melakukan ini selama lebih lima tahun dan hanya terjumpa satu projek yang memerlukan memanipulasi warna dengan cara yang lebih rumit daripada seli antara dua set warna.

Rentetan A adalah apa-apa yang menyerupai perkataan atau ayat. Ia selalu menggunakan petikan mengandungi maklumat yang. Penggunaan kegemaran saya tali adalah untuk mengumpul maklumat untuk dipaparkan pada carta atau dalam fail log setiap kali saya perlu debug penasihat pakar.

Char adalah jenis data terakhir. Ia begitu berkait rapat dengan rentetan yang saya tidak menyedari jenis ini wujud sehingga saya melihat ke atas maklumat untuk artikel ini. Jika kita mengkaji perkataan “perdagangan”, maka kita akan mendapati bahawa ia terdiri daripada lima watak t, r, yang, d dan e.

Satu nota terakhir pada jenis data. Terdapat dua cara yang jenis diadakan dalam ingatan. Pembolehubah Luaran adalah salah satu yang akan kelihatan di skrin input apabila penasihat pakar atau beban penunjuk. Pembolehubah statik adalah bertentangan dengan. Mereka kekal di dalam program MQL dan di luar tidak pernah dilihat daripadanya.

Filed Under: MQL (untuk nerds) Tagged With: bool, warna, Jenis data, TarikhMasa, Bilik Double, luar, Int, MQL, statik, rentetan

MQL penyahpepijatan

Mac 6, 2012 oleh Shaun Overton 1 Komen

MQL adalah bahasa skrip yang sangat mudah. Penyahpepijatan MQL, malangnya, tidak mudah sama sekali. Orang yang mengkompilasi MetaEditor yang MetaQuotes membekalkan hanya tidak mengandungi alat-alat yang canggih yang paling programmer biasa dengan menggunakan.

Masalah nyahpepijat MQL

Visual Studio dan Ides canggih lain (persekitaran pembangunan bersepadu) mengandungi beberapa ciri-ciri yang menjadikan ia mudah untuk debug kod manakala pengaturcara menulis ia. Contoh yang paling besar ini adalah mata break. Satu titik rehat adalah titik di mana kod pengkompil memberitahu komputer untuk berhenti menjalankan program ini apabila ia tiba pada garis tertentu kod.

Pertimbangkan contoh di mana trailing stop menetapkan berhenti secara tidak betul. Naluri semula jadi bagi kebanyakan pengaturcara akan berjalan penasihat pakar pada visual ujian kembali, kemudian masukkan mata break pada baris kod tidak lama selepas pengiraan trailing stop. Mata break menghentikan kod, membolehkan pengaturcara sejawat di dalam otak perisian untuk melihat apa yang difikirkan pada masa ia membuat keputusan. Kelebihan utama dalam Visual Studio adalah bahawa nilai semua pembolehubah yang jelas kelihatan. Ia adalah mungkin untuk berjalan melalui langkah program demi langkah. Apabila salah satu langkah yang tidak mengikut peraturan yang dikehendaki, perubahan yang diperlukan biasanya jelas. MetaQuotes bersyukur termasuk memecahkan mata dalam MQL5. Mereka tidak terdapat di MQL4.

Kurangnya sokongan INTELLISENSE penuh menjejaskan kelajuan pengaturcaraan saya lebih daripada apa-apa. INTELLISENSE mengesan penggunaan perkataan-perkataan seperti Terpelihara OrderSelect() atau ObjectGet(). The MetaEditor termasuk INTELLISENSE asas, tetapi ia tidak mempunyai butiran halus yang membuatnya begitu mudah dalam Visual Studio.

Saya sudah biasa dengan pengaturcaraan dalam C # di mana saya boleh menaip beberapa huruf pertama pembolehubah atau kelas, kemudian IDE mengisi selebihnya. Apabila saya menaip “Saya” dalam C # dan tekan bar ruang, Saya tahu bahawa pilihan messageBox akan muncul (dengan andaian bahawa saya mengisytiharkan ruang nama yang sesuai). The MetaEditor menyediakan senarai calon-calon untuk perkataan Terpelihara. Pengaturcara mesti kemudian pilih pilihan sama ada dengan tetikus atau tekan masukkan.

Saya tahu ia kelihatan remeh untuk menghendaki menekan masuk bukan bar ruang, tetapi berfikir tentang berapa kali kod resuses perkataan Terpelihara sama atau pembolehubah. The tekanan kekunci tambahan benar-benar menambah sehingga banyak usul yang tidak perlu menaip. Itulah ganda benar untuk berumur tiga puluh tahun yang sudah memakai pendakap pergelangan tangan untuk sakit terowong carpal.

Kelemahan terbesar MetaEditor ini adalah bahawa ia tidak mengesan nama-nama pembolehubah. Kita sering menulis penasihat pakar yang mengandungi beberapa ribu baris kod. Penjejakan nama puluhan pembolehubah menimbulkan cabaran sendiri. Apabila jenis alat sandi dalam set yang sama dengan nama-nama pembolehubah berulang kali, ia akan lebih baik untuk hanya menaip tiga huruf pertama dan beralih. Salin dan tampal mungkin memberikan alternatif yang baik. Masalahnya ialah bahawa pembolehubah biasanya kumpulan bersama-sama. Anda tidak boleh menyimpan 5 salinan dan tampal item yang berbeza boleh didapati.

The MetaEditor membolehkan fungsi untuk kembali jenis yang tidak sah. Fungsi diisytiharkan sebagai double boleh kembali rentetan, integer atau apa-apa pun. Orang yang mengkompilasi MQL4 tidak mengesan sama ada atau tidak ini adalah sah. Ia meninggalkan ia sehingga programmer untuk menemui jenis yang tidak sah semasa ujian masa nyata. Pengawasan ini adalah mimpi ngeri bagi pengaturcara tidak sengaja yang tersilap kembali yang salah.

Ini adalah duanya adalah terpakai benar apabila fungsi dua kali tersilap dipulangkan kepada pembolehubah integer. MQL4 tidak menghalang dua haram untuk int acuan. Lebih buruk lagi, penasihat pakar yang terus berjalan dengan 0 nilai untuk interger dan bukannya membuang pengecualian atau kesilapan mesej. Saya tidak boleh mengira berapa jam yang saya telah sia-sia mengesan pembolehubah yang kelihatan sempurna, hanya untuk menyedari bahawa saya mengisytiharkan jenis data yang salah. Ini biasanya berlaku apabila saya secara autopilot, berdebar-debar daripada kod. Apa yang kelihatan berkesan pada masa yang biasanya kos beberapa jam rambut menarik kekecewaan.

Teknik-teknik nyahpepijat MQL

Yang Pengaturcara MQL pada kakitangan di sini biasanya mengambil jalan keluar dengan mana-mana teknik berikut. Anda mungkin mendapati bahawa menggunakan mereka dalam gabungan membantu meningkatkan proses debugging yang lebih.

Debug ralat pengkompil

Yang ini boleh menjadi yang paling mengecewakan. The MetaEditor cuba membayangkan yang garis kod menyebabkan kesilapan Penyusunan. Aku berkata percubaan kerana ia menjadi salah ia lebih kerap daripada ia menjadi betul. Tidak ada yang lebih menjengkelkan daripada melihat garis sempurna yang sah kod yang bendera penyusun sebagai bermasalah.

Saya hampir selalu mengambil jalan keluar dengan mengulas keluar bahagian yang semakin besar sehingga kod ralat yang hilang. Saya mulakan dengan mengulas keluar satu baris kod. Jika ia tidak berfungsi, maka saya komentar pada sepuluh baris. Jika ia tidak berfungsi, Saya mungkin mengulas fungsi keseluruhan atau bahagian-bahagian kod. Apabila pengkompil akhirnya berjalan dengan betul, anda tahu bahawa bahagian terakhir mengulas keluar kod mengandungi pepijat.

Seterusnya, anda menarik balik. Mula membuat bersalah seksyen mengulas keluar yang lebih kecil dan lebih kecil sehingga ralat muncul semula. Sekarang, anda telah akhirnya menumpukan perhatian kepada sumber sebenar masalah ini.

Debug dalam masa sebenar atau pada backtester yang

Kaedah pilihan saya adalah debugging mengulas kebanyakan maklumat keputusan yang berkaitan ke skrin, yang dilakukan dengan menggunakan Komen() fungsi. Saya kemudian berjalan backtester visual, menonton bagaimana data itu berkelakuan dengan berhubung dengan maklumat visual.

Pada skrin komen dasarnya juri-rigged mata break. Mengawal bagaimana dan apabila mereka hadir membolehkan pengaturcara untuk melangkah melalui kod untuk mendedahkan isu ini. Satu-satunya perbezaan adalah bahawa komen tidak tegas menghalang kod dari berjalan. Teks yang muncul adalah sangat kecil. Selain daripada itu, Saya benar-benar seperti yang hakikat bahawa ia begitu teguh. Fungsi komen sentiasa bekerja tanpa suatu halangan, menjadikannya rakan terbaik seorang programmer yang yang debugging kod.

Mengambil screenshot mengambil ini ke tahap yang seterusnya. Setiap kali pelanggan bertanya soalan mengenai mengapa penasihat pakar berkelakuan cara yang tertentu, jawapan yang paling mudah datang dengan tangkapan skrin. Mengulas perkara rehat tiruan biasanya memberi jawapan peluru bukti – pengaturcara dan pelanggan dapat melihat apa yang EA berfikir pada waktu itu ia membuat keputusan. MQL4 menawarkan WindowScreenShot yang() fungsi untuk melakukan ini.

The EA yang kita memprogramkan sentiasa mengambil screenshot semasa tindakan kritikal, seperti yang memasuki perdagangan atau menyesuaikan keadaan keluar. Matlamatnya adalah untuk menyediakan rekod visual setiap keputusan dengan mata untuk menjawab soalan tentang masa depan tingkah laku.

Template default kami termasuk yang benar / palsu pembolehubah dipanggil WriteScreenshots. Peniaga mengawal sama ada mereka mahu mengganggu dengan ciri debugging ini atau tidak. Kelemahan hanya untuk itu adalah bahawa setiap tindakan yang dicatatkan makan kira-kira sebesar 50 KB ruang cakera keras.

Fail log mewakili pilihan debugging akhir. Kelemahan utama adalah bahawa mereka begitu hodoh dan sukar untuk membaca. Saya hampir sentiasa lebih suka screenshot atas sebab ini.

Namun begitu, fail log yang mempunyai tempat mereka. Cara utama untuk menggunakan mereka adalah sebagai penangkap ralat. Setiap kali proses yang pergi serba salah kerana masalah dengan MetaTrader sama ada sendiri atau dengan transaksi broker, fail log adalah tempat yang paling mudah untuk menangkapnya.

Debugging fail MQL adalah kemahiran yang mengambil masa seketika untuk belajar. Alat yang ada pengaturcara adalah jauh berbeza daripada yang tersedia kepada bahasa tahap tinggi. Setelah anda mendapatkan digunakan untuk bekerja dengan alat-alat yang lebih mudah dalam MetaEditor dan MetaTrader, proses pembersihan bug biasanya mendapat lebih mudah.

Filed Under: MetaTrader Tips Tagged With: titik rehat, komen, log, metaeditor, MetaQuotes, MetaTrader, MQL, MQL4, MQL5, screenshot, Visual Studio

Mendekompilasi MQL ex4

Disember 28, 2011 oleh Shaun Overton 48 Komen

Penyahsusunan fail yang bermakna untuk memecah buka kod sumber yang disusun untuk melihat kandungan. Matlamat penyahsusunan adalah untuk mengakses sumber asal untuk mengubahsuainya dalam beberapa cara.

MQ4 dan EX4 perbezaan

Apabila anda memasang penasihat pakar, anda mungkin sudah perhatikan dua jenis fail yang disenaraikan dalam pakar-pakar atau petunjuk folder. .fail mq4 memegang kod pengaturcaraan yang asal dalam bahasa MQL yang. Pengaturcara boleh mengakses fail jenis ini untuk membuat perubahan kepada EA atau penunjuk.

Komputer yang tidak menyimpan maklumat fail EX4 dalam format yang boleh dibaca manusia. Sebaliknya, ia menyusun kod ke dalam siri sifar dan satu, dipanggil bit, bahawa komputer yang dibaca dalam masa nyata. Jika anda membuka fail EX4 dalam MetaEditor atau dalam NotePad, semua yang datang merupakan watak-watak Wiggly dan bahasa raban.

Analogi terbaik adalah untuk mempertimbangkan idea pelan permainan. Jika anda tahu bahawa pertahanan pasukan lawan itu bergerak perlahan-lahan, anda mungkin cuba lulus lebih kerap. Anda tidak tahu semua khusus bagaimana permainan akan bermain daripada. Tujuannya adalah untuk membangunkan satu tindak balas umum untuk satu set keadaan. Itulah fail yang mq4.

Fail EX4 adalah siri keputusan yang dibuat dalam permainan yang melaksanakan rancangan untuk lulus lebih kerap. Idea ini adalah bersedia untuk pergi, walaupun memainkan individu tidak dapat diketahui kerana mereka pada masa akan datang. Apabila memainkan membangunkan, pemain mengambil pelan permainan generik dan melaksanakannya dalam masa nyata.

Alasan untuk menyusun

Kebanyakan permintaan untuk menyusun fail EX4 datang dari peniaga-peniaga yang membeli penasihat pakar komersial dan tidak berpuas hati dengan produk. Breaking fail EX4 yang disusun menghasilkan fail mq4. Satu pakar penasihat programmer kemudian boleh mengambil kandungan MQL dan membuat perubahan yang dikehendaki.

Ramai akan decompilers ingin perubahan tidak berbahaya ke fail. Petunjuk berjaya boleh meramalkan arah pasaran, namun ia tidak boleh menghasilkan isyarat apabila ia adalah masa yang baik untuk berdagang. Isyarat setup perdagangan baru mungkin akan menyelamatkan pengguna daripada merenung carta terlalu lama. Peniaga keliru menganggap bahawa mereka memerlukan akses kepada kod sumber untuk Program petunjuk MQL. Lebih mudah untuk meminta seorang programmer untuk menggunakan fungsi iCustom dan bukannya melanggar ke kod orang lain. Ia adalah penggunaan yang sah kod tanpa memerlukan akses yang tidak dibenarkan kepada kod.

Beberapa peniaga kecewa mendekati saya dengan penasihat pakar yang kehilangan tangan wang lebih penumbuk. Mereka mahu mengubah kandungan fail dengan harapan menyelamatkan satu konsep yang berguna daripada strategi. Saya juga telah bercakap dengan forex pedagang yang dibeli “lesen masa kehidupan” kepada penasihat pakar, hanya mempunyai vendor yang keluar dari perniagaan. Mereka mahu menyusun EX4 untuk membuang sekatan pelesenan pada produk mereka berhak memiliki tetapi yang mereka boleh akses tidak lagi.

Saya bersimpati dengan keadaan kerana kedua-dua adalah tindak balas biasa dan etika, pada pendapat saya. Saya mengesyaki, Walau bagaimanapun, bahawa isu-isu undang-undang dengan mengubah suai sebuah EA komersial, tidak memihak kepada pelanggan.

Kemudian, ada pencuri yang suka orang lain kerja tetapi tidak mahu membayar untuk itu. Saya malangnya mendapatkan permintaan ini sepanjang masa. OneStepRemoved.com tidak menawarkan perkhidmatan penyahsusunan. Terlalu banyak pertanyaan berlegar di sekitar mencuri kerja orang lain.

Jika anda menjual penasihat pakar atau menjual petunjuk adat, pendekatan yang paling sesuai adalah untuk program MetaTrader fail dalam DLL yang. Ia adalah lebih baik untuk menyulitkan DLL.

Bahasa MQL tidak ditulis dengan apa-apa dalam fikiran selain daripada perdagangan. Kod keselamatan dan risiko penyahsusunan tidak kebimbangan dalam pasukan pembangunan MetaQuotes. Yang membawa kepada jumlah lebih besar daripada Pengaturcara MetaTrader dari Eropah Timur untuk membangunkan perisian MQL penyahsusunan dan untuk melepaskannya di internet. Berulang-alik antara EX4 dan mq4 format adalah sangat, sangat mudah.

Kehilangan maklumat selepas penyahsusunan

Fail EX4 penyahsusunan tidak menghasilkan fail mq4. Itu bukan, Walau bagaimanapun, perkara yang sama seperti fail mq4 asal. Fail EX4 decompiled jalur nama pembolehubah dan menggantikan mereka dengan nama mesin baru.

Amalan pengaturcaraan yang betul memerlukan menamakan pembolehubah selepas tujuan mereka. Apabila pembolehubah mengekalkan jarak yang berhenti stealth, yang MQL programmer mungkin nama itu stealthStop atau stealthStopDistance. Versi decompiled menamakan semula kepada sesuatu yang mengerikan seperti i_594 atau g_12. Proses penyahsusunan sepenuhnya memusnahkan aliran logik fail mq4 asal.

Sekarang bayangkan program dengan 30-50 pembolehubah. Nama tiap-tiap seorang daripada mereka pembolehubah perubahan. Gambaran pertama kod yang tidak masuk akal. Nama-nama pembolehubah tidak menggambarkan fungsi mereka dalam apa-apa cara.

Nama dan fungsi input, juga dipanggil externs atau pembolehubah luar, dipelihara. Mereka tidak membuat struktur kod yang jelas pada mereka sendiri. Bersama-sama, mereka biasanya membentuk maklumat yang cukup untuk program untuk mencipta nama pembolehubah.

Proses menandakan kod EX4 decompiled dan penamaan semula pembolehubah hodoh mengambil masa sekurang-kurangnya 1.5 jam. Ia boleh banyak jam jika kod itu adalah lebih lama daripada beberapa ratus baris atau bilangan pemboleh ubah adalah luar biasa tinggi. Proses kajian semula adalah perlu jika anda berniat untuk membuat apa-apa perubahan kepada fail yang mq4. Tiada cara untuk pergi tentang mengubah suai kod MQL sedia ada kecuali fungsi semasanya jelas.

Perubahan ke fail mq4 adalah sama seperti mana-mana lain Pengaturcaraan MT4 projek sekali proses kajian semula yang berakhir. Alat sandi mesti program perubahan dan debug fail untuk memastikan ia berfungsi dengan baik.

Cari decompiler EX4

Anda boleh menjalankan carian asas untuk “MQL decompiler”, “menyusun EX4 mq4” atau mana-mana kombinasi yang serupa. Laman-laman keputusan biasanya menunjukkan persaingan sengit di kalangan vendor. Ia bukan sesuatu yang luar biasa untuk fail decompiled untuk $8-15 untuk memfailkan.

Masa penghantaran fail berbeza-beza antara vendor individu. Saya pernah mendengar laporan bahawa ia boleh mengambil mana-mana sahaja dari beberapa jam seminggu untuk menerima fail decompiled. Dengan mengandaikan bahawa anda penyahsusunan fail untuk alasan yang sah, ia sukar untuk tahu siapa yang harus dipercayai. Industri ini, selepas semua, sebahagian besarnya mensasarkan pelanggan yang mencuri. Meminta perkhidmatan penyahsusunan boleh dipercayai adalah seolah-olah meminta seorang pencuri boleh dipercayai.

Filed Under: Bagaimana untuk kerja pasaran tukaran mata wang asing?, MetaTrader Tips Tagged With: menyusun, decompiler, penyahsusunan, EX4, MQL

Penasihat Pakar yang teguh

Disember 5, 2011 oleh Shaun Overton Tinggalkan komen

Apabila anda mahu program Penasihat Pakar, ia adalah penting untuk mempertimbangkan bagaimana anda mungkin menggunakan fail. Kesilapan yang biasa yang saya lihat baru Pengaturcara MQL membuat adalah bahawa mereka banyak bergantung harap kepada ingatan. Acara seperti kegagalan kuasa, kerosakan cakera keras atau sambungan internet yang lemah boleh melampiaskan malapetaka apabila berdagang seorang Penasihat Pakar. EA ideal harus dapat mengambil dan menjalankan setiap kali anda mampu untuk memulihkan keadaan kepada normal.

Isu memori

Masalah kadang-kadang disebabkan oleh sesuatu yang biasa seperti menukar tetapan. Saya belajar bahawa cara yang sukar apabila pelanggan datang kepada kami Pejabat Dallas selama dua minggu untuk memesan EA sangat kompleks. Semua bekerja dengan sempurna dalam ujian kembali. Ujian semalaman, Walau bagaimanapun, pernah berlangsung selama lebih daripada beberapa jam sebelum sesuatu pergi Kusut. Saya mengarahkan pelanggan untuk tidak menukar tetapan; hanya hidupkannya dan biarkan dia bersendirian. Untuk apa-apa sebab, kepentingan arahan yang tidak pernah tenggelam dalam. Saya mengambil masa lama untuk menyedari bahawa definisi beliau “meninggalkannya seorang diri” tidak cukup dengan jaringan saya. Tweak sedikit bahawa dia dibuat dalam perdagangan merosakkan dengan tetapan yang saya disimpan dalam memori.

Saya boleh mengarahkan pelanggan untuk menggunakan perisian dalam cara yang tertentu. Lebih sering daripada tidak, mereka menyimpang dari penggunaan ke tahap yang tertentu. Ia adalah sifat manusia. Saya belajar daripada cabaran-cabaran, seperti mana-mana profesional perlu. Kami pengaturcaraan template berubah dalam struktur untuk mengurangkan keperluan untuk arahan khas.

Pembolehubah Global

Pembolehubah global adalah alat yang biasa untuk mengelakkan isu bergantung kepada memori. Apabila EA dikeluarkan daripada carta, pembolehubah global bahawa ia dicipta boleh diakses untuk anda, EA EA atau mana-mana lain untuk membaca dari mana-mana bahagian dalam MetaTrader.

Walaupun penggunaan pembolehubah global bunyi canggih, ia sebenarnya satu pendekatan yang mudah. MetaTrader mengekalkan fail teks tersembunyi di dalam direktori pemasangan dengan nama pembolehubah, nilai yang ia menyimpan dan masa ia diubah buat kali terakhir. Bila-bila masa lebih daripada 6 minggu berlalu sejak kali terakhir MQL menggunakan pembolehubah global, MetaTrader automatik memadam ia.

A Martingale sistem mungkin memilih untuk menggunakan pembolehubah global untuk mengesan statistik yang mudah. Martingales adalah liar dengan pendekatan mereka kepada risiko, jadi peniaga yang realistik boleh ingin tahu sepintas lalu tahap maksimum yang diniagakan. Pembolehubah global membuat tugas yang remeh daripada keperluan itu. Jika tahap yang seterusnya untuk perdagangan adalah lebih besar daripada yang berubah-ubah global, maka Kod MQL perlu mengemaskini ubah global.

Satu-satunya perkara yang perlu diingat ialah bahawa pembolehubah global tamat selepas enam minggu. EA mungkin perlu untuk muat semula maklumat dengan menetapkan semula nilai global kepada nilai semasa. Berbuat demikian akan menyimpan segar yang berubah-ubah dari perspektif MetaTrader ini.

A screen shot of global variables in MetaTrader 4

Baca maklumat dan bukannya menyimpannya

Saya lebih suka bergantung kepada MQL'S OrderSelect() arahan untuk mencipta apa sahaja maklumat yang saya perlukan. Walaupun ia adalah lebih kompleks, kelebihan adalah bahawa EA boleh berfungsi bila-bila masa, mana-mana tempat, betul-betul seperti yang direka bentuk. Jika kemalangan cakera keras, ia bukan satu masalah dari perspektif pemulihan. Anda masih menghadapi masalah dalam masa yang turun, walaupun. Anda boleh memuatkan EA yang sama pada akaun MT4 anda dan telah ia segera membina semula maklumat.

Mengambil di atas Martingale senario, kita boleh membina semula bilangan peringkat yang diniagakan dengan membandingkan kali membuka dan menutup dagangan. Jika perdagangan #1 mempunyai masa yang terdekat 2011 Disember. 5 00:00 dan perdagangan #2 juga mempunyai masa yang terdekat 2011 Disember. 5 00:00, ia memberitahu kita bahawa mereka adalah sebahagian daripada kumpulan perdagangan yang sama. Setakat ini, kita mempunyai 2 tahap yang diniagakan. Jika perdagangan #5 ditutup pada 2011 Disember. 5 00:00 tetapi tiada posisi lakukan selepas itu, maka kita tahu bahawa kita diniagakan 5 tahap total. EA boleh maka gelung melalui semua kemungkinan kombinasi dan memilih yang paling banyak dari yang.

Pendekatan membaca dari sejarah perintah itu adalah sedikit pembunuhan besar-besaran bagi contoh mudah ini, tetapi ia amat berguna apabila anda perlu untuk mengira maklumat lebih rumit dan dinamik dengan risiko yang minimum kesilapan.

Filed Under: Bagaimana untuk kerja pasaran tukaran mata wang asing?, MetaTrader Tips, Uncategorized Tagged With: DIA, penasihat pakar, berubah-ubah global, Martingale, memori, MetaTrader, MQL, OrderSelect, kegagalan kuasa, template

Strategi perdagangan PERCUMA melalui e-mel

Tren

Maaf. Tiada data setakat.

Arkib

  • Peraturan
  • Bagaimana untuk kerja pasaran tukaran mata wang asing?
  • Petunjuk
  • MetaTrader Tips
  • MQL (untuk nerds)
  • NinjaTrader Tips
  • Pilum
  • QB Pro
  • Hentikan kehilangan wang
  • Menguji konsep anda sejarah
  • Idea strategi perdagangan
  • Uncategorized
  • Apa yang sedang berlaku di pasaran semasa?

Terjemahan


Strategi Trading Percuma

Dasar PrivasiRisk Disclosure

Hak cipta © 2023 OneStepRemoved.com, Inc. Hak Cipta Terpelihara.