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

Bagaimana Cara Membatasi Profit Harian ?

Discussion in 'Belajar MQL dari Nol' started by argatafx, 06 Jun 2019.

  1. argatafx

    argatafx Member Credit Hunter

    Equity
    Credit
    Ref Point
    Halo master semua,,

    saya lagi Belajar Membuat EA, nah untuh kasus sekarang saya ingin membatasi profit harian

    Misal = jika hari ini sudah profit 5% dari modal awal maka EA akan berhenti dan mleanjutkan trading keesokan harinya.
    di keesokan harinya EA akan kembali trading dengan target profit 5% dari akumulasi profit sebelumnya

    mohon dibantu. terima kasih
     
  2. Winda Esti

    Winda Esti Member Credit Hunter

    Equity
    Credit
    Ref Point
    ada 3 fungsi yang dibikin itu gan,
    1. fungsi ModalAwal() untuk mencari nilai modal awal.
    double ModalAwal(){
    double modalawal=AccountEquity()-TotalProfitLoss();
    return(modalawal);
    }

    2. fungsi TotalProfitLoss(int mode) untuk mencari total profit/loss dalam akun tersebut.
    double TotalProfitLoss(int mode){
    // mode 1= all time, mode 2= harian
    double totalprofitnya = 0;
    if(OrdersHistoryTotal()>0){
    for (int indexhistori=0; indexhistori < OrdersHistoryTotal(); indexhistori++){
    if (mode==1){if (OrderSelect(indexhistori, SELECT_BY_POS, MODE_HISTORY)==true){totalprofitnya +=OrderProfit();} }
    else{
    if (OrderSelect(indexhistori, SELECT_BY_POS, MODE_HISTORY)==true&&TimeDayOfYear(OrderCloseTime())==TimeDayOfYear(TimeCurrent())){
    totalprofitnya +=OrderProfit();} }
    }
    return (totalprofitnya);
    }

    3. fungsi ONOFF(double percentprofittrarget) untuk on dan off sesuai target profit.
    int ONOFF(double percentprofittrarget){
    // 1= OFF, 0=ON;
    int onoffnya=0;
    if(TotalProfitLoss(2)>(percentprofittrarget/100)*ModalAwal()){onoffnya=1;}
    return(onoffnya);
    }

    selanjutnya tinggal eksekusi fungsinya gan setelah
    void OnTick()
    {
    // jalankan fungsinya
    if(ONOFF(5)==0 ){
    // eksekusi ordernya
    OrderSend(dan seterusnya...)
    }
    }// end ontick
     
  3. argatafx

    argatafx Member Credit Hunter

    Equity
    Credit
    Ref Point
    Makasih gan ,,,
    bisa ditulis berupa Bahasa MQ4 gan ?
    masih awam soalnya..
    ini masih dicoba2
     
  4. argatafx

    argatafx Member Credit Hunter

    Equity
    Credit
    Ref Point
    Makasih gan ,,,
    bisa ditulis berupa Bahasa MQ4 gan ?
    masih awam soalnya..
    ini masih dicoba2
     
  5. Klik Alfan

    Klik Alfan New Member

    Equity
    Credit
    Ref Point
    Klau untuk membatasi perdagangan dalam waktu tertentu gimana, misalnya setelah take profit atau kena stop loss maka tidak akan membuka perdagangan dalam waktu yg telah ditentukan?

    https://soehoe.id/membatasi-perdangan-dalam-waktu-tertentu.t16527/
     
    Last edited: 25 Jun 2019
  6. argatafx

    argatafx Member Credit Hunter

    Equity
    Credit
    Ref Point


    Menggunakan Funsgi OrdserHistoryTotal() sepertinya mas,,,
    cuma untuk menentukan TP atau SL nya.. Untuk referensi saya menyimpan fungsinya tpi blm tes

    ini untuk TP perhari

    void OnTick(){
    //------membatasi jumlah OP target TP
    if(UseTargetDaily == TRUE){
    bool tradeOn = true;
    int win=0;
    for(int i=HistoryTotal()-1;i>=0;i--){
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
    if((OrderSymbol()!=Symbol()&& OrderMagicNumber()!=MagicNbr1)
    ||(OrderSymbol()!=Symbol()&& OrderMagicNumber()!=MagicNbr2)) continue;
    if( OrderClosePrice() == OrderTakeProfit())win++;
    if ( TimeDay(OrderCloseTime())==Day() && win>=TargetOPProfit ){ tradeOn = false;}else tradeOn = true;
    if ( !tradeOn ) {return;}
    }
    }
     
  7. Winda Esti

    Winda Esti Member Credit Hunter

    Equity
    Credit
    Ref Point
    itu bahasa mq4 gan. kode fungsinya kopikan pada bagian paling bawah.
    untuk jalankan fungsinya masukin kodenya di bagian ontick gan.
     
  8. Winda Esti

    Winda Esti Member Credit Hunter

    Equity
    Credit
    Ref Point
    1. bikin fungsi buat ngecek orderan close terakhir kena tp atau kena sl dan kapan waktu close nya
    Code:
    int CekOrderCloseTerakhir(int menuceking){
    //menu 1=cek kena tp sl gak, 2=cek waktu closenya
    int nilainya=0;
    if(OrdersHistoryTotal()>0){
    for (int indexhistori=OrdersHistoryTotal()-1;indexhistori>=0;indexhistori--){
    if (OrderSelect(indexhistori, SELECT_BY_POS, MODE_HISTORY)==true
    &&((OrderClosePrice()>=OrderStopLoss()-(Point*10*1)&&OrderClosePrice()<=OrderStopLoss()+(Point*10*1))||(OrderClosePrice()>=OrderTakeProfit()-(Point*10*1)&&OrderClosePrice()<=OrderTakeProfit()+(Point*10*1)))
    ){if (menuceking==1){nilainya=1;}else{nilainya=OrderClosetime();}break;} 
    }
    return (nilainya);
    }
    
    2. jalankan fungsi cekingnya itu
    Code:
    void OnTick()
    {
    // jalankan fungsinya
    //---tetapkan tenggang waktunya
    int tenggangwaktunya=300;// tenggang waktu selama 5 menit dari waktu close terakhir yg kena sl atau tp
    
    if(CekOrderCloseTerakhir(1)==1&&TimeCurrent()>CekOrderCloseTerakhir(1)+tenggangwaktunya){
    // eksekusi ordernya
    OrderSend(dan seterusnya...)
    }
    }// end ontick 
     
  9. argatafx

    argatafx Member Credit Hunter

    Equity
    Credit
    Ref Point

    Mantap mas,,
    sangat sederhana dan mudah dimengerti.

    kalau berkenan mohon dijawab mas untuk Marti sel dan buy
    semisal OP BUY SELL sama2 dimarti..
    marti sendiri2 BUY dimarti sendiri SELL dimarti sendiri,,
    ane gagal mulu malah misahin fungsi yg untuk marti biar work untuk sell dan buy bisa marti bersamaan
     
  10. Klik Alfan

    Klik Alfan New Member

    Equity
    Credit
    Ref Point
    Luar biasa, terima kasih mas dan mba
     

Share This Page