1. 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 :)
    Dismiss Notice

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

Discussion in 'Expert Advisor atau Robot Forex' started by yonif, 24 Dec 2018.

  1. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    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.

    [​IMG]
    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: 10 Jan 2019
  2. NeoBatavia

    NeoBatavia Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    Thank you.
     
  3. NeoBatavia

    NeoBatavia Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    Thank you.
     
  4. zamans98

    zamans98 Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    just downgrade your MT4 and recompile with no errors.
     
  5. Wong Kito

    Wong Kito Member Credit Hunter

    Equity
    Credit
    Ref Point
    nice infonya
     
  6. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    if you can fix it so why you must downgrade your MT4??? Because Mt4 always up to date so we must up to date too
     
  7. zamans98

    zamans98 Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    you can block the update.
    its just take 30 seconds
     
  8. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    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.
     
  9. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    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,..
     
  10. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    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: 10 Jan 2019
  11. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    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
     
  12. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    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...
     
  13. wes93

    wes93 New Member

    Equity
    Credit
    Ref Point
    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
     

Share This Page