• 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 :)
General chit-chat
Help Users
  • No one is chatting at the moment.

      Tutorial Cara memproteksi Expert Advisor

      Numpang tanya om yonif Kalo scrip atau perintah, biar EA hanya jalan di pair tertentu saja bagaimana ya? Contohnya EA hanya akan bisa Running di pair EURUSD saja,
      Terimakasih buat Om Yonif dan yang sudah bantu jawab :)
       
      Numpang tanya om yonif Kalo scrip atau perintah, biar EA hanya jalan di pair tertentu saja bagaimana ya? Contohnya EA hanya akan bisa Running di pair EURUSD saja,
      Terimakasih buat Om Yonif dan yang sudah bantu jawab :)
      pke perintah/script ini di bawah OnTick

      if(symboll()!=EURUSD)return;
       
      pke perintah/script ini di bawah OnTick

      if(symboll()!=EURUSD)return;
      Terimakasih Om yonif atas bantuannya,
      Tapi kalau mau untuk 3 pair misalnya EURUSD,GBPUSD dan GBPJPY Apakah penulisan nya seperti ini
      if(symboll()!=EURUSD,GBPUSD,GBPJPY)return;
      Saya coba penulisan seperti yang saya contohkan kok tidak bisa
       
      Terimakasih Om yonif atas bantuannya,
      Tapi kalau mau untuk 3 pair misalnya EURUSD,GBPUSD dan GBPJPY Apakah penulisan nya seperti ini
      if(symboll()!=EURUSD,GBPUSD,GBPJPY)return;
      Saya coba penulisan seperti yang saya contohkan kok tidak bisa
      coba ini gan

      if(symboll()!=EURUSD && symboll()!=GBPUSD && symboll()!=GBPJPY )return;
       
      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


      saya coba proteksi EA dengan banyak akun tapi EA kok masih tetep jalan meski di akun number yang lain
       

      Attachments

      • Untitled.png
        Untitled.png
        24.4 KB · Views: 37
      start sama ontick??? biasanya klo pke int start ya loopingnya itu ( old script)

      kalau pake onTick maka loopingnya Ontick itu jgn pakai keduanya,.. klo semisal pke Ontick proteksinya ditaruh dibawah Ontick nya,..
       
      start sama ontick??? biasanya klo pke int start ya loopingnya itu ( old script)

      kalau pake onTick maka loopingnya Ontick itu jgn pakai keduanya,.. klo semisal pke Ontick proteksinya ditaruh dibawah Ontick nya,..

      makasih om yonif ,,,,,,,, it works ,,,,,, :ok::ok::ok::ok::ok::ok::ok:
       
      start sama ontick??? biasanya klo pke int start ya loopingnya itu ( old script)

      kalau pake onTick maka loopingnya Ontick itu jgn pakai keduanya,.. klo semisal pke Ontick proteksinya ditaruh dibawah Ontick nya,..


      tapi om yonif scriptnya sudah jalan tapi eksekusi open posisinya kok masih terus aktif ,,,,,,, terus gimana caranya supaya gak bisa buka OP
       

      Attachments

      • Untitled.png
        Untitled.png
        70.1 KB · Views: 25
      tapi om yonif scriptnya sudah jalan tapi eksekusi open posisinya kok masih terus aktif ,,,,,,, terus gimana caranya supaya gak bisa buka OP
      sudah dikasih return: apa belum? jd klo gak sesuai sama akun nya loop nya bakal return sehingga script yg dibawahnya tidak jalan
       
      bs di kasih contoh sintaknya om ,,, cara penambahan returnnya

      void OnTick()
      {

      int hard_accnt = 1200085835; //<-- type the user account here before compiling
      int accnt = AccountNumber();

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

      nah jadi jika akun tidak sama dengan nomer akun yg dilisensikan maka return,.. disini script yg dibawahnya sudah tdk bisa beroperasi lagi,..
       
      void OnTick()
      {

      int hard_accnt = 1200085835; //<-- type the user account here before compiling
      int accnt = AccountNumber();

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

      nah jadi jika akun tidak sama dengan nomer akun yg dilisensikan maka return,.. disini script yg dibawahnya sudah tdk bisa beroperasi lagi,..


      makasih om yonif,,,, sekarang EAnya sudah berjalan normal ,,,,,, good job :ok::ok::ok::ok::ok:
       
      tanya om yonif biar EA ga bs di backtest dan ga jalan di demo scriptnya apa ya?erimakasih
      klo untuk agar tdk bisa di BT

      if (IsTesting())
      {
      Print ("This EA can not be backtest");
      return;
      }

      klo agar hanya bisa di akun demo (tidak bisa di akun real)

      bool demo_account = IsDemo();

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

      sebaliknya jika hanya boleh digunakan di akun real (tidak bisa di akun demo) cukup dengan menghilangkan tanda !

      bool demo_account = IsDemo();

      if (demo_account)
      {
      Alert ("You can not use the program with a demo account!");
      return(0);
      }
       
      Luar biasa....... terimakasih ilmunya..... terimakasih ilmunya.... sangat bermanfaat, ini yang saya cari selama ini. terimakasih... God Bless You
       
      Back
      Top