• Welcome back! Thank you for being a part of this Traders Community. Let's discuss and share :)
    Selamat datang kembali! Trimakasih telah menjadi bagian dari Komunitas Trader ini. Mari berdiskusi dan berbagi :)

Tutorial How to fix "EA" is not expert and cannot be executed??? problem solved!!!

yonif

Well-Known Member
Credit Hunter
Credits
0
MT4 telah mengalami update beberapa hari yang lalu tepatnya pada tanggal 20 desember 2018. build terbaru mt4 kemungkinan membuat para coder EA pusing bukan kepalang karena EA yang selama ini bisa digunakan akhirnya menjadi error setelah di compile.


Ada beberapa hal yang perlu dilakukan untuk mengatasi hal tersebut. yaitu penggunaan script lama EA yang mana pada mt4 build terbaru ini tidak bekerja.

Agar EA yang akan kita compile bekerja, maka kita perlu mengganti script berikut ini:
1. int init() dengan int OnInit()
2. int deinit() dengan void OnDeinit(const int reason)
3. int start() dengan void OnTick()

Catatan: jika menggunakan script void maka script return(0); harus diganti dengan return;

Download source: hobiheboh.com/2018/12/how-to-fix-ea-is-not-expert-and-cannot.html

untuk lebih lengkapnya bisa dilihat di video berikut ini
 
Last edited by a moderator:
just downgrade your MT4 and recompile with no errors.
MT4 telah mengalami update beberapa hari yang lalu tepatnya pada tanggal 20 desember 2018. build terbaru mt4 kemungkinan membuat para coder EA pusing bukan kepalang karena EA yang selama ini bisa digunakan akhirnya menjadi error setelah di compile.


Ada beberapa hal yang perlu dilakukan untuk mengatasi hal tersebut. yaitu penggunaan script lama EA yang mana pada mt4 build terbaru ini tidak bekerja.

Agar EA yang akan kita compile bekerja, maka kita perlu mengganti script berikut ini:
1. int init() dengan int OnInit()
2. int deinit() dengan void OnDeinit(const int reason)
3. int start() dengan void OnTick()

Catatan: jika menggunakan script void maka script return(0); harus diganti dengan return;

Download source: https://www.hobiheboh.com/2018/12/how-to-fix-ea-is-not-expert-and-cannot.html

untuk lebih lengkapnya bisa dilihat di video berikut ini

nice infonya
 
apa beza function init dan oninit???
init() dan OnInit()pada dasarnya sama gan,.. itu adalah variable yang disetting sebelum EA di attach ke chart, jadi valuenya akan tetap.. bedanya init() biasanya untuk script MT4 dan OnInit() adalah script untuk Expert advisor,.. kalau dulu bisa digunakan untuk EA cuman pada update MT4 baru hal tersebut di pisahkan sehingga jika kita pke script init() tidak akan terdeteksi sebagai EA.

sama juga dengan deinit() dgn OnDeinit(const int reason) atau juga start() dgn OnTick()

deinit() dan start() adalah bagian dari script Mt4. dahulu script ini bisa dipakai pada sebuah EA yaitu berfungsi membuat perintah saat EA akan di remove, tapi pada build Mt4 yg baru script ini tidak dikenali pada EA.

sedangkan OnDeinit(const int reason) dan OnTick() adalah script untuk EA yang fungsinya membuat perintah berulang-ulang (loop), inilah perintah yang membuat EA bekerja.
 
you can block the update.
its just take 30 seconds
i think, i will choice to change my EA script
1. int init() dengan int OnInit()
2. int deinit() dengan void OnDeinit(const int reason)
3. int start() dengan void OnTick()
i just take 1 minute for that, and my EA will work if any update launch,.. new MT4 update is more stable than old Mt4,..
 
jika begitu fungsi oninit akan berulang2..bagaimana caranya jika ia tidak bisa berulang2 ( no loop) ? mungkin berkait dengan (const int reason)

mohon penjelasannya..



OnInit() ini kan dy fungsinya adalah variable yang disetting sebelum EA di attach ke chart.. jadi value yg tetap bisa ditaruh disitu tanpa ikut loop,.. misalnya saja TP dan Stoploss.. kedua variable itu kan kita setting hanya sekali dan saat EA bekerja tidak terjadi perubahan value,..

klo yg agan maksud Ondeinit(const int reason) itu bekerja saat EA akan di remove, maka biasanya disitu ditaruh script ObjectDelete("namaobject") atau juga ObjectsDeleteAll() jadi saat kita remove EA maka semua bentuk object yang dibuat EA akan hilang
 
Last edited:
jika begitu fungsi oninit akan berulang2..bagaimana caranya jika ia tidak bisa berulang2 ( no loop) ? mungkin berkait dengan (const int reason)

mohon penjelasannya..



ok akan saya ulangi perbagiannya,.. mungkin penjelasanq diatas membingungkan,..

1. int OnInit()
Bagian ini biasanya terletak paling atas dalam awalan script sebuah EA, OnInit adalah variable yang disetting sebelum EA di attach ke chart. Fungsi dari OnInit adalah untuk membuat sebuah variable yang valuenya selalu tetap pada EA. jadi value dari variable tersebut akan tetap sepanjang EA running. Contoh penggunaan script yang bisa di taruh dalam OnInit adalah variable Takeprofit dan variable Stoploss.

2. void OnDeinit(const int reason)
Bagian ini berfungsi membuat sebuah perintah saat EA akan di remove. Jadi hanya akan running apabila kita meremove EA dari chart. Adapun fungsi yang biasa di taruh di bagian ini adalah script ObjectDelete("namaobject") atau juga ObjectsDeleteAll() jadi saat kita remove EA maka semua bentuk object yang dibuat EA akan hilang.

3. void OnTick()
Bagian dari EA yang fungsinya membuat perintah berulang-ulang (loop), inilah perintah yang membuat EA bekerja. Jadi di bagian ini kita bisa meletakkan script kalkulasi, entry point dan juga exit point.

semoga bermanfaat
 
bagaimamana cara mahu mengunakan fungsi script remove EA atau EA stop running, adakah perlu dibahagian Oninit atau dibahagian void OnTick, atau perlu mengunakan script lain untuk conts int reason..

mohon gan bantuan jika mampu lihatkan contohnya ...
jika ingin EA stop running lebih baik pada void OnTick(), karena biasanya akan ada perintah / syarat tertentu EA stop,.. contoh

void OnTick()
{

if(IsTesting())

{
Alert ("You Don't have any permission to backtest this EA");
return;
}


//script EA
return;
}

nah disini jika EA di backtest maka akan return; sehingga EA tidak akan mengeksekusi script loop setelahnya. nah seperti itu juga bisa. kalaupun ingin di taruh di int OnInit juga bisa gan, cuman biasanya bukan script yg membutuhkan syarat kalkulasi. jadi ada baiknya apapun script return;/stop EA di taruh aja di bagian void OnTick(), lebih fleksibel...
 
Hello to Everyone,
Thanks for you post yonif
I just need some help, i have converted the EA with yout suggestion but now i have this errors... could you help me?:
First:
upload_2022-1-23_15-33-17.png
After your suggestion:
upload_2022-1-23_15-33-53.png

But now when i try to compile i have this errors:
upload_2022-1-23_15-34-48.png
This are my return part of the code:
In the void OnTick() :
8 of:
return L_i_15;

And 3 of
return 0;
That i have changed with
return;

So now i have only 8 errors in the void OnTick() :

I hope that someone could help me
thanks a lot
Stefano
 

Attachments

  • upload_2022-1-23_15-33-17.png
    upload_2022-1-23_15-33-17.png
    17.4 KB · Views: 53
  • upload_2022-1-23_15-33-53.png
    upload_2022-1-23_15-33-53.png
    19.3 KB · Views: 54
  • upload_2022-1-23_15-34-48.png
    upload_2022-1-23_15-34-48.png
    12.8 KB · Views: 54
Back
Top