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

Tanya Jawab MQL

Discussion in 'Belajar MQL dari Nol' started by HendroFX, 09 Apr 2015.

  1. rahmadjatayu

    rahmadjatayu Member Credit Hunter

    Equity
    Credit
    Ref Point
     
    Code:
    double envelope=iEnvelopes(NULL,0,4,0,0,0,0.07,1,1);//Upper envelope 4 dev 0.07 shift 1
    double close=iClose(NULL,0,1);//candle close shift 1
    if(close>envelope)
    {
    Alert("breakout envelope upper"+Symbol());//gimana agar Alert hanya sekali?
    
    mau tanya master,
    gimana caranya agar Alertnya cuma sekali?
     
  2. Efantri Sumitro

    Efantri Sumitro New Member

    Equity
    Credit
    Ref Point
    Saya belajar sedikit-sedikit cara membuat coding, Apa bedanya coding seperti ini:

    for(int i=OrdersTotal()-1; i>=0; i--){
    if( !OrderSelect(i,SELECT_BY_POS)
    ||OrderSymbol()!=mySym
    ||OrderMagicNumber()!=myMagic) continue;

    dengan yang ini:
    for(int i=OrdersTotal()-1; i>=0; i--){
    if( OrderSelect(i,SELECT_BY_POS)
    ||OrderSymbol()==mySym
    ||OrderMagicNumber()==myMagic) continue;

    saya berharap ada yang mau menjelaskannya? trm kash sblumnya
     
  3. Trancexe

    Trancexe Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    kenapa returnnya bernilai false?

    saya juga ada script trailing
    Code:
    void dtrailing()
    {
    for(int i=0; i<OrdersTotal(); i++){
          OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magicbuy || OrderMagicNumber()!=magicsell ) continue;
            if(OrderType()==OP_BUY)  {
             if(Bid-OrderOpenPrice()>pt*TrailingStop)  {
               if((OrderStopLoss()<Bid-pt*TrailingStop) || (OrderStopLoss()==0)) {
                  OrderModify(OrderTicket(),OrderOpenPrice(),Bid-pt*TrailingStop,OrderTakeProfit(),0,Green);
                  return(0);
                  }
                  }
               }
            if(OrderType()==OP_SELL)  {
             if((OrderOpenPrice()-Ask)>(pt*TrailingStop)){
               if(OrderStopLoss()>(Ask+pt*TrailingStop) || (OrderStopLoss()==0)){
                  OrderModify(OrderTicket(),OrderOpenPrice(),Ask+pt*TrailingStop,OrderTakeProfit(),0,Red);
                  return(0);
                  }
                  }
               }
         }
     
    }
    kurang lebih sama.. cuma klo saya taruh di global dalam bentuk void.. selalu ada error di return
     
    • Like Like x 1
  4. rahmadjatayu

    rahmadjatayu Member Credit Hunter

    Equity
    Credit
    Ref Point
    bantu jawab semampunya
    perbedaanya ada di ==(sama dengan) dan !=(ngak sama dengan).
    dari scrip di atas gunanya untuk melompati beberapa pilihan yang gak di inginkan dari hasil looping,
     
    • Like Like x 1
  5. Efantri Sumitro

    Efantri Sumitro New Member

    Equity
    Credit
    Ref Point
    Kalau == (sama dengan) dan !=(ngak sama dengan) saya sudh cukup jelas gan. cuman dampaknya jika jika EA ini di pasang di satu pair atau beberapa pair yang saya belum mengerti gan.

    misal scrip ini:
    if( !OrderSelect(i,SELECT_BY_POS)
    ||OrderSymbol()!=mySym
    ||OrderMagicNumber()!=myMagic) continue;

    penjelasan berdasarkan pengetahuan saya : jika tidak orderselect/orderselect gagal atau OrderSymbol() tidak sama dengan mySym atau OrderMagicNumber() tidak sama dengan myMagic, maka continue.

    pertanyaannya :

    1. Mengapa harus dibuat (!OrderSelect(i,SELECT_BY_POS)), jika dibuat seperti ini (OrderSelect(i,SELECT_BY_POS)) tidak pakai tanda"!" apa dampaknya?
    2. Mengapa harus orderselectnya gagal (!OrderSelect(i,SELECT_BY_POS)), kalau gagal berarti gak diselec dong?
    3. Jika dibuat seperti ini :if(OrderSymbol()!=mySy ||OrderMagicNumber()!=myMagic) apa dampaknya?
    4. Jika dibuat seperti ini :if(OrderSymbol()==mySy ||OrderMagicNumber()==myMagic) apa dampaknya?

    mohon penjelasannya master, sebelumnya diducapkan terima kasih
     
    • Like Like x 1
  6. rahmadjatayu

    rahmadjatayu Member Credit Hunter

    Equity
    Credit
    Ref Point
    lha ini saya juga kurang tahu gan :D,
    kalo saya sih suka pake yang no empat :lipssealed:,
    semoga ada master yang bersedia menjelaskan,
    ini contoh coddingan orang bule silahkan diresapi komen2nya.
    Code:
    void sub_Check4StrayTrades()
    {
        // Initiate some local variables
        int loop;
        int totals;
        bool modified = TRUE;
        bool selected;
        double ordersl;
        double newsl;
       
        // New SL to use for modifying stray market orders is max of either current SL or 10 points
        newsl = MathMax ( StopLoss, 10 );
        // Get number of open orders
        totals = OrdersTotal();
    
        // Loop through all open orders from first to last
       for ( loop = 0; loop < totals; loop ++ )
        {
            // Select on order
            if ( OrderSelect ( loop, SELECT_BY_POS, MODE_TRADES ) )
            {
               // Check if it matches the MagicNumber and chart symbol
             if ( OrderMagicNumber() == Magic && OrderSymbol() == Symbol() )    // If the orders are for this EA
               {   
                    ordersl = OrderStopLoss();
                    // Continue as long as the SL for the order is 0.0
                    while ( ordersl == 0.0 )
                    {
                        // We have found a Buy-order
                        if ( OrderType() == OP_BUY )
                        {
                            // Set new SL 10 points away from current price
                            newsl = Bid - newsl * Point;
                            modified = OrderModify ( OrderTicket(), OrderOpenPrice(), NormalizeDouble ( newsl, Digits ), OrderTakeProfit(), 0, Blue );
                        }
     
    menurut newbie untuk tanda ! pada fungsi bool itu untuk menggantikan false,
    bool fungsi();
    if(bool fungsi == false){bla bla bla;} gan.
    biar simple di tulis langsung if(!bool fungsi){bla bla bla;}
    atau bool fungsi();
    if(!bool fungsi){bla bla bla;}
    tanda ! menunjukan nilai false gan.
     
    belum ada yang mampir nih,colek om HendroFx
     
    • Like Like x 1
  7. Efantri Sumitro

    Efantri Sumitro New Member

    Equity
    Credit
    Ref Point
    tanya master, bagaimana agar EAnya hanya satu order BUY/SELL tiap pair? trim kash atas bantuannya..
     
  8. Threadmark: Penggunaan Perintah Order Select
    HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Pertanyaan yang bagus, dan memang perlu mengerti dasar dari perintah

    if( !OrderSelect(i,SELECT_BY_POS)
    ||OrderSymbol()!=mySym
    ||OrderMagicNumber()!=myMagic) continue;

    Perintah itu mempunyai arti:
    1. Jika Posisi i gagal memilih maka lanjutkan pilih nomor order berikutnya
    2. Jika Symbol tidak sama dengan simbol dimana EA di pakai maka lanjutkan berikutnya
    3. Jika magicnumbernya berbeda debgan magicNUmber EA yang sedang Running maka lanjutkan untuk memilih yang lain

    Sehingga dengan perintah di atas memaksa EA untuk memilih Simbol dimana EA sedang runing dan MagicNumber yang sedang digunakan. :)
     
    • Like Like x 1
  9. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Baca Threadmark yang saya buat. pertanyaan udah pernah dibahas dalam tread ini.
     
    • Like Like x 1
  10. Efantri Sumitro

    Efantri Sumitro New Member

    Equity
    Credit
    Ref Point
    Tolong bantuin master, kenapa pas ada signal BUY/SELL EAnya melakukan OP terus menerus tanpa henti, padahal sudah dibuat TotalOPBuy<1 && TotalOPSell<1? trim kash atas bantuanya

    code:

    int Slipage = 0;
    int Magic = 1234;
    double Over_Sold = 29.50;
    double Over_Bought = 30.00;


    void OnTick()
    {
    int TotalOPBuy = 0, TotalOPSell = 0; //ini ditaruh di Deklarasi Global
    for(int i=0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(OrderType()==OP_BUY){TotalOPBuy++;}
    if(OrderType()==OP_SELL){TotalOPSell++;}}}

    double RSI =NormalizeDouble(iRSI(Symbol(),0,14,PRICE_CLOSE,0),2);
    if(TotalOPBuy<1 && TotalOPSell<1){
    if(RSI <= Over_Sold )
    {
    QnOrder(Symbol(),OP_BUY,0.01,500,500,0,"",0);
    }}

    if(RSI >= Over_Bought )
    {
    QnOrder(Symbol(),OP_SELL,0.01,500,500,0,"",0); }

    //====================================================
    void QnOrder(string mySym, int myCMD, double myLots, int myTP=0, int mySL=0, int myMagic=0,string myNotes="", int myPendingPips=0){

    double myPrice = 0,pTP=0,pSL=0;
    double myPoint = MarketInfo(mySym,MODE_POINT);

    switch(myCMD){
    case OP_BUY:
    myPrice = Ask;
    pSL = myPrice-mySL*myPoint;
    pTP = myPrice+myTP*myPoint;
    break;
    case OP_SELL:
    myPrice = Bid;
    pSL = myPrice+mySL*myPoint;
    pTP = myPrice-myTP*myPoint;
    break;
    case OP_BUYLIMIT:
    myPrice = Ask-myPendingPips*myPoint;
    pSL = myPrice-mySL*myPoint;
    pTP = myPrice+myTP*myPoint;
    break;
    case OP_SELLLIMIT:
    myPrice = Bid+myPendingPips*myPoint;
    pSL = myPrice+mySL*myPoint;
    pTP = myPrice-myTP*myPoint;
    break;
    case OP_BUYSTOP:
    myPrice = Ask+myPendingPips*myPoint;
    pSL = myPrice-mySL*myPoint;
    pTP = myPrice+myTP*myPoint;
    break;
    case OP_SELLSTOP:
    myPrice = Bid-myPendingPips*myPoint;
    pSL = myPrice+mySL*myPoint;
    pTP = myPrice-myTP*myPoint;
    break;
    }
    if(myTP==0) pTP=0;
    if(mySL==0) pSL=0;
    int myTicket = OrderSend(mySym,myCMD,myLots,myPrice,Slipage,0,0,myNotes,myMagic);
    if(myTicket>0 && OrderSelect(myTicket,SELECT_BY_TICKET)){
    bool rModify = OrderModify(OrderTicket(),OrderOpenPrice(),pSL,pTP,0);
    }
    }
     
  11. Edy Gorbacev

    Edy Gorbacev Member Credit Hunter

    Equity
    Credit
    Ref Point
    logic ilan lagi nih wkwkwk.
     
  12. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Karena penghitungan order buy dan sell tidak benar, maka EA tidak bisa melakukan filter pembatasan order.
     
  13. Efantri Sumitro

    Efantri Sumitro New Member

    Equity
    Credit
    Ref Point
    terus yang benarnya gimana master, hehehe..
    saya taunya cuman yang itu, itupun didapat dari nyolong..
     
  14. Aswep

    Aswep New Member

    Equity
    Credit
    Ref Point
    master mw minta tolong dong script untuk memilih op terakhir dan syaratnya lebih waktu open lebih dari 5 menit
     
  15. mecman

    mecman Member Credit Hunter

    Equity
    Credit
    Ref Point
    To get help open up a new thread, since the topic here is basically coding language
     
  16. roni purwanto

    roni purwanto New Member

    Equity
    Credit
    Ref Point
    Para master coding EA saya mau tanya, gimana cara untuk mengunci EA supaya hanya bisa digunakan untuk akun real tertentu tapi bisa digunakan untuk semua akun demo, mohon bantuannya ya..
     
  17. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Baca thread Mark gan, sudah pernah dibahas di sana
     
  18. roni purwanto

    roni purwanto New Member

    Equity
    Credit
    Ref Point
    Sudah saya cari thread yg berkaitan dengan pertanyaan saya, tapi yg ada hanya mengunci salah satunya saja, sedangkan yg saya tanyakan adalah mengunci satu akun riil tapi bisa untuk semua akun demo
     
  19. qitafaza

    qitafaza Member

    Equity
    Credit
    Ref Point
    Maap master HendroFX , saya lagi belajar coding mencari harga tertinggi ..
    Saya pake
    double Tinggi = iHighest(Pair,TF,MODE_HIGH,10,1);

    Tapi hasil yang ditunjukan selalu angka 1.
    Apa yang salah ya master HendroFX ?
     
  20. Threadmark: Cara Mencari Candel Tertinggi dan Terendah
    HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Untuk bertanya tidak perlu minta maaf, karena agan tidak bersalah kepada saya :)
    fungsi ini bertujuan untuk mencari CANDLE KE BERAPA PALING TINGGI DARI 10 CANDEL , jika Candel target di isi 10.
    iHighest (PAIR yang akan digunakan, Time Frame berapa, MODE yang akan dipakai, Cendle Target akir, Cendel Start Memulai )
    CONTOH.
    Code:
    int fHigh = iHighest(Symbol(),PERIOD_CURRENT,MODE_HIGH,10,1);
      double fHigest=iHigh(Symbol(), PERIOD_CURRENT,fHigh);
       // Untuk melihat hasilnya, gunakan Alert saja
       Alert (fHigest);
     

Share This Page