1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. 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 Cara memproteksi Expert Advisor

Discussion in 'Belajar MQL dari Nol' started by yonif, 26 Mar 2017.

  1. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    Kenapa EA yang kita buat perlu di proteksi? sepertinya pertanyaan ini sudah tidak perlu kita jawab lagi, karena semua programmer pasti tahu jawabannya.

    Setiap programmer pasti tahu akan kesulitan membuat sebuah EA dan tidak sedikit pula para programmer yang enggan memberikan mq4 nya. Hal ini sangat wajar karena untuk privacy agar tidak disalahgunakan para penjual EA yang tidak bertanggung jawab.

    Sebelum kita mempelajari cara memproteksi EA, ada baiknya kita belajar sedikit tentang bahasa pemrograman c++ dimana ini adalah dasar dari bahasa pemrograman mq4.

    dalam memproteksi EA cuma ada beberapa script yang paling sering digunakan yaitu:

    && : dan
    || : atau
    ! : tidak
    = : sama


    operator pembanding variabel 1 dan 2

    == : sama
    != : tidak sama
    < : lebih kecil dari
    > : lebih besar dari
    <= : lebih kecil dari atau sama dengan
    >= : lebih besar dari atau sama dengan



    contoh penerapan script:

    if (a!=b) return(0); //jika a tidak sama dengan b maka return (kembali ke loop awal)


    Cara memproteksi EA dengan password

    pada seting parameter kita sertakan script berikut

    extern string Please_Enter_Password = ""; //ini nantinya akan di isi oleh pengguna EA
    jika password dalam bentuk huruf maka menggunakan variabel string tapi jika dalam bentuk angka maka menggunakan integer.

    lalu

    int start()
    {

    {
    if (password != "forumsoehoe") //pasword yang akan diberikan kepada user
    {

    Alert ("Wrong password!");
    return (0);


    artinya jika password TIDAK SAMA dengan forumsoehoe maka akan ada alert dan return ke awal loop


    Cara memproteksi EA khusus untuk demo account

    int start()
    {

    bool demo_account = IsDemo();
    if (!demo_account)
    {
    Alert ("You can not use the program with a real account!");
    return(0);
    }


    artinya jika account TIDAK SAMA dengan akun demo maka akan ada alert dan return ke awal loop


    Cara memproteksi EA dengan expiry date

    int start()
    {

    string expire_date = "2017.3.25"; //<-- tahun.bulan.tanggal
    datetime e_d = StrToTime(expire_date);
    if (CurTime() >= e_d)
    {
    Alert ("The trial version has been expired!");
    return(0);
    }


    artinya jika waktu sekarang LEBIH DARI atau SAMA DENGAN expiry date maka akan ada alert dan return ke awal loop


    Cara memproteksi EA dengan 1 akun number

    int start()
    {

    int hard_accnt = 2096687948; //nomor akun yang akan di lisensikan
    int accnt = AccountNumber();
    if (accnt != hard_accnt)
    {
    Alert ("You can not use this account (" + DoubleToStr(accnt,0) + ") with this program!");
    return(0);
    }


    artinya jika nomor account yang di pakai TIDAK SAMA dengan nomor akun yang dilisensikan maka akan ada alert dan return ke awal loop


    Cara memproteksi EA dengan banyak akun number

    int start()
    {

    int hard_accnt = 2089143769; //nomor akun yang akan di lisensikan
    int hard_accnt2 = 2089143789; //nomor akun yang akan di lisensikan
    int hard_accnt3 = 2089143790; //nomor akun yang akan di lisensikan dst
    int accnt = AccountNumber();

    if (accnt != hard_accnt && accnt != hard_accnt2 && accnt != hard_accnt3)

    {
    Alert ("You can not use this account (" + DoubleToStr(accnt,0) + ") with this program!");
    return(0);
    }


    artinya jika accnt TIDAK SAMA dengan hard_accnt DAN accnt TIDAK SAMA dengan hard_accnt2 DAN accnt TIDAK SAMA dengan hard_accnt3 ( jika tidak ada yang terpenuhi satu pun) maka akan ada alert dan return ke awal loop. tapi jika salah satu saja dari ketiga syarat itu terpenuhi maka loop akan lanjut.


    Cara memproteksi EA dengan Account name

    ini adalah proteksi EA yang paling sulit karena nama harus benar alfabetnya dan terkadang aturan nama di berbagai broker tidak sama


    int start()
    {

    string hard_accnt = "Iftahul Halimah"; //nama harus benar alfabetnya. besar kecil huruf berpengaruh
    string accnt = AccountName();

    if (accnt != hard_accnt)

    {
    Alert ("You can not use this account name (" + accnt + ") with this program!");
    return(0);
    }


    artinya jika AccountName TIDAK SAMA dengan nama yang dilensikan maka akan ada alert dan return ke awal loop

    untuk menghindari kesalahan nama pada broker broker lain maka pembuat EA harus memberikan nama alternatif tambahan karena besar kecil huruf nya pun sangat berpengaruh. hal ini perlu dilakukan karena aturan pada setiap broker berbeda beda.

    int start()
    {

    string hard_accnt = "Iftahul Halimah";
    string hard_accnt2 = "IFTAHUL HALIMAH";
    string hard_accnt3 = "iftahul halimah";
    string hard_accnt4 = "Halimah Iftahul";
    string hard_accnt5 = "HALIMAH IFTAHUL";
    string hard_accnt6 = "halimah iftahul";
    string accnt = AccountName();

    if (accnt != hard_accnt && accnt != hard_accnt2 && accnt != hard_accnt3 && accnt != hard_accnt4 && accnt != hard_accnt5 && accnt != hard_accnt6)

    {
    Alert ("You can not use this account name (" + accnt + ") with this program!");
    return(0);
    }


    artinya jika accnt TIDAK SAMA dengan hard_accnt DAN accnt TIDAK SAMA dengan hard_accnt2 DAN accnt TIDAK SAMA dengan hard_accnt3 DAN accnt TIDAK SAMA dengan hard_accnt4 DAN accnt TIDAK SAMA dengan hard_accnt5 DAN accnt TIDAK SAMA dengan hard_accnt6 maka akan ada alert dan return ke awal loop (jadi jika tidak ada satu pun syarat yang terpenuhi maka return tapi jika ada satu saja syarat terpenuhi maka loop akan lanjut)

    nah barangkali seperti itulah cara-cara memproteksi EA kita.

    Original http://www.hobiheboh.com/2017/03/cara-memproteksi-expert-advisor.html
     
    Last edited: 26 Mar 2017
  2. Fauzi Ahmad

    Fauzi Ahmad New Member

    Equity
    Credit
    Ref Point
    sangat bermanfaat.... mantap ... :cool:
     
  3. blackking

    blackking Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    Terimakasih telah berbagi ilmu
    masih sulit menghafal codebase perintah
    pelajaran ini untuk yang otaknya lancar :D
     
  4. Rocky2033

    Rocky2033 Member Credit Hunter

    Equity
    Credit
    Ref Point
    Terimakasih ilmunya
     
  5. inunuo

    inunuo Member Credit Hunter

    Equity
    Credit
    Ref Point
    Lalu dibahagian mana kita perlu letak code/script proteksi ini..?

    Sent from SoeHoe.ID mobile apps
     
  6. deny dwi

    deny dwi New Member

    Equity
    Credit
    Ref Point
    5/5,
    This is my review for this thread:
    Mantap..
     
  7. Artomoro Trader

    Artomoro Trader Member Credit Hunter

    Equity
    Credit
    Ref Point
    Ane coba kok hasilnya kayak ginie ya om??? http://prntscr.com/fcz8br
     
  8. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    ditaruh setelah script

    start()
    {


    int hard_accnt = 2096687948; //nomor akun yang akan di lisensikan
    int accnt = AccountNumber();
    if (accnt != hard_accnt)
    {
    Alert ("You can not use this account (" + DoubleToStr(accnt,0) + ") with this program!");
    return(0);
    }

    script selanjutnya
     
  9. Artomoro Trader

    Artomoro Trader Member Credit Hunter

    Equity
    Credit
    Ref Point
    yang no akun bisa gan tapi yang nyoba expired pas di test live tetep jalan padahal udah expired...
     
  10. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    mungkin salah meletakkan scriptnya gan,.. coba di cek tahun.bulan .tanggal jangan sampai terbalik...
    2017.5.25 = ini yang benar jadi tahun.bulan.tanggal
     
  11. Artomoro Trader

    Artomoro Trader Member Credit Hunter

    Equity
    Credit
    Ref Point
    ok gan, thanks ane coba lagi...
     
  12. JabTrader

    JabTrader New Member

    Equity
    Credit
    Ref Point
    5/5,
    This is my review for this thread:
    Mantap
     
  13. Kristian

    Kristian Member Credit Hunter

    Equity
    Credit
    Ref Point

    saya rasa itu harusnya bukan pakai tanda hubung && (dan) ,
    tapi seharusnya menggunakan tanda hubung Atau (||)
     
  14. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    int hard_accnt = 2089143769; //nomor akun yang akan di lisensikan
    int hard_accnt2 = 2089143789; //nomor akun yang akan di lisensikan
    int hard_accnt3 = 2089143790; //nomor akun yang akan di lisensikan dst
    int accnt = AccountNumber();

    if (accnt != hard_accnt && accnt != hard_accnt2 && accnt != hard_accnt3)

    {
    Alert ("You can not use this account (" + DoubleToStr(accnt,0) + ") with this program!");
    return(0);
    }


    ok kita terjemahkan dahulu

    hard_accnt, hard_accnt2 dan hard_accnt3 itu adalah akun yg akan diproteksi artinya harus akun tersebut yang memakai license tersebut
    accnt = AccountNumber() adalah akun mt4 yg sedang berjalan

    if (accnt != hard_accnt && accnt != hard_accnt2 && accnt != hard_accnt3)
    {
    Alert ("You can not use this account (" + DoubleToStr(accnt,0) + ") with this program!");
    return(0);
    }

    Artinya jika (akun mt4 TIDAK SAMA DENGAN hard_accnt DAN akun mt4 TIDAK SAMA DENGAN hard_accnt2 DAN akun mt4 TIDAK SAMA DENGAN hard_accnt3) maka akan return;

    nah logika tersebut artinya jika akun yang digunakan dalam mt4 tidak ada yang sama dengan 3 akun yang sudah di license maka loop script EA akan return (alias scriptnya kembali atau tidak berjalan) tapi apabila ada satu saja yang dari 3 akun tersebut terpenuhi oleh akun mt4 (akun numbernya sama) maka loop akan berjalan,..

    BEDA DENGAN kalau memakai || (atau)

    if (accnt != hard_accnt || accnt != hard_accnt2 || accnt != hard_accnt3)

    {
    Alert ("You can not use this account (" + DoubleToStr(accnt,0) + ") with this program!");
    return(0);
    }


    Artinya jika (akun mt4 TIDAK SAMA DENGAN hard_accnt ATAU akun mt4 TIDAK SAMA DENGAN hard_accnt2 ATAU akun mt4 TIDAK SAMA DENGAN hard_accnt3) maka akan return;

    logikanya menjadi akun mt4 harus sama dengan ketiga akun number yang dilensikan, jadi jika ada 1 saja yang tidak sama maka akan return; ini justru kebalik gan, karena kita proteksi akun number itu tujuannya EA hanya bisa digunakan oleh akun-akun number tersebut tapi dengan memakai || maka untuk melanjutkan loop harus terpenuhi ketiganya dan itu mustahil, maka alhasil EA tidak akan berjalan meski dipakai salah satu akun number yang sudah dilensikan tersebut
     
    • Like Like x 1
  15. pipmonster01

    pipmonster01 New Member

    Equity
    Credit
    Ref Point
    5/5,
    This is my review for this thread:
    sangat bermanfaat
     
  16. Winda Esti

    Winda Esti Member Credit Hunter

    Equity
    Credit
    Ref Point
    sepertinya ada kekeliruan itu mas :*
    betul yang dibilang mas kristian itu :inlove:
     
  17. elantra

    elantra New Member

    Equity
    Credit
    Ref Point

    Maaf gan, mo tanya contoh untuk memproteksi indikator agar hanya dapat digunakan pada broker tertentu gmn ? terima kasih sebelumnya
     
  18. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    salah mbak,,. coba dibaca ini,. atau di coba langsung deh,..
    if (accnt != hard_accnt || accnt != hard_accnt2 || accnt != hard_accnt3)

    {
    Alert ("You can not use this account (" + DoubleToStr(accnt,0) + ") with this program!");
    return(0);
    }

    Artinya jika (akun mt4 TIDAK SAMA DENGAN hard_accnt ATAU akun mt4 TIDAK SAMA DENGAN hard_accnt2 ATAU akun mt4 TIDAK SAMA DENGAN hard_accnt3) maka akan return;

    logikanya menjadi akun mt4 harus sama dengan ketiga akun number yang dilensikan, jadi jika ada 1 saja yang tidak sama maka akan return; ini justru kebalik gan, karena kita proteksi akun number itu tujuannya EA hanya bisa digunakan oleh akun-akun number tersebut tapi dengan memakai || maka untuk melanjutkan loop harus terpenuhi ketiganya dan itu mustahil, maka alhasil EA tidak akan berjalan meski dipakai salah satu akun number yang sudah dilensikan tersebut
     
  19. yonif

    yonif Well-Known Member Credit Hunter

    Equity
    Credit
    Ref Point
    yang benar gini mbak Winda Esti
    int hard_accnt = 2089143769; //nomor akun yang akan di lisensikan
    int hard_accnt2 = 2089143789; //nomor akun yang akan di lisensikan
    int hard_accnt3 = 2089143790; //nomor akun yang akan di lisensikan dst
    int accnt = AccountNumber();

    if (accnt != hard_accnt && accnt != hard_accnt2 && accnt != hard_accnt3)

    {
    Alert ("You can not use this account (" + DoubleToStr(accnt,0) + ") with this program!");
    return(0);
    }

    ok kita terjemahkan dahulu

    hard_accnt, hard_accnt2 dan hard_accnt3 itu adalah akun yg akan diproteksi artinya harus akun tersebut yang memakai license tersebut
    accnt = AccountNumber() adalah akun mt4 yg sedang berjalan

    if (accnt != hard_accnt && accnt != hard_accnt2 && accnt != hard_accnt3)
    {
    Alert ("You can not use this account (" + DoubleToStr(accnt,0) + ") with this program!");
    return(0);
    }
    Artinya jika (akun mt4 TIDAK SAMA DENGAN hard_accnt DAN akun mt4 TIDAK SAMA DENGAN hard_accnt2 DAN akun mt4 TIDAK SAMA DENGAN hard_accnt3) maka akan return;

    nah logika tersebut artinya jika akun yang digunakan dalam mt4 tidak ada yang sama dengan 3 akun yang sudah di license maka loop script EA akan return (alias scriptnya kembali atau tidak berjalan) tapi apabila ada satu saja yang dari 3 akun tersebut terpenuhi oleh akun mt4 (akun numbernya sama) maka loop akan berjalan,..
     
  20. Aan Suryana Sudirja

    Aan Suryana Sudirja New Member

    Equity
    Credit
    Ref Point
    5/5,
    This is my review for this thread:
    mantaab pengetahuan tambahan
     

Share This Page