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. qitafaza

    qitafaza Member

    Equity
    Credit
    Ref Point
    Terima kasih masta HendroFX , atas fast reply nya ...
    dan code nya berfungsi .....
    kalau tidak keberatan masta, tolong jelaskan kesalahan code yang saya tanyakan masta... kenapa codenya tidak berfungsi ...:)
     
  2. qitafaza

    qitafaza Member

    Equity
    Credit
    Ref Point
    Master HendroFX , saya coba buat ea sederhana tapi gak mau OP,,,
    Mohon di koreksi master, dimana salahnya ...

    --------------

    [HASHTAG]#property[/HASHTAG] copyright "Copyright © 2007, MetaQuotes Software Corp."
    [HASHTAG]#property[/HASHTAG] link "http://www.metaquotes.net"
    double mypoint = MarketInfo(Symbol(),MODE_POINT);
    extern double TakeProfit=50;
    extern double MaxLots=7;
    extern double pips=7;
    double mybid = MarketInfo(Symbol(),MODE_BID);
    double myask = MarketInfo(Symbol(),MODE_ASK);
    double mylot = MarketInfo(Symbol(),MODE_LOTSIZE);
    //+------------------------------------------------------------------+
    //| expert initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert deinitialization function |
    //+------------------------------------------------------------------+
    int deinit()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert start function |
    //+------------------------------------------------------------------+
    int start()
    {
    //-----------
    double total,fLowest,fHigest;
    double sl;
    double MA90=iMA(Symbol(),0,90,0,MODE_SMA,PRICE_CLOSE,0);
    double harga = iClose(Symbol(),0,1);
    double cenaoppos=OrderOpenPrice();

    total=OrdersTotal();
    if(MA90<harga) // Jika harga diatas ma90;
    {
    fLowest=iLowest(Symbol(),PERIOD_CURRENT,MODE_LOW,72,1);
    double fLowes=iLow(Symbol(), PERIOD_CURRENT,fLowest);
    sl=(OrderOpenPrice()-fLowest)/mypoint;
    OrderSend(Symbol(),OP_BUY,mylot,myask,3,sl,TakeProfit,NULL,0,0,Green);
    Alert(sl);
    }

    if(MA90>harga)
    {
    fHigest= iHighest(Symbol(),PERIOD_CURRENT,MODE_HIGH,72,1);
    double fHiges=iHigh(Symbol(), PERIOD_CURRENT,fHigest);
    sl= (fHigest-OrderOpenPrice())/mypoint;
    OrderSend(Symbol(),OP_SELL,mylot,myask,3,sl,mybid-TakeProfit*Point,0,Red);

    }

    return(0);
    //----------------------------------
     
  3. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Saran saya, buat fungsi order dulu, dengan menjalankan OrderSend, tanpa menggunakan signal, hal ini bertujuan untuk mengetahui sudah berjalan apa belum fungsi tersebut.
     
    • Like Like x 1
  4. qitafaza

    qitafaza Member

    Equity
    Credit
    Ref Point
    Setelah signal di hilangkan satu per satu dan hanya menggunakan fungsi order ternyata bisa OP, master .....
    Jadi harus perbaiki signal nya ya ,,,,,
     
  5. qitafaza

    qitafaza Member

    Equity
    Credit
    Ref Point
    Master HendroFX , Mohon bantuannya lagi ....:)

    int start()
    //-----------
    {
    double total;
    double MA96=iMA(Symbol(),0,96,0,MODE_SMA,PRICE_CLOSE,0);
    double harga = iClose(Symbol(),0,1);

    total=OrdersTotal();
    if(harga<MA96)
    {
    OrderSend(Symbol(),OP_SELL,Lots,mybid,3,slsell,tpsell,NULL,0,0,Green);
    }

    if(harga>MA96)
    {
    OrderSend(Symbol(),OP_BUY,Lots,myask,3,slbuy,tpbuy,NULL,0,0,Green);
    }
    //----------------------------------
    return(0);
    }

    Dengan script kaya diatas, kenapa OP nya bisa banyak banget ya .... sampai 41 op ....
    Bagaimana biar op nya satu satu ajah master ?
     
  6. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Baca threadMarks, pertanyaan sudah pernah di jawab
     
  7. qitafaza

    qitafaza Member

    Equity
    Credit
    Ref Point
    Penempatan Fungsinya tidak di Init(), tetapi di OnTick(), dengan catatan buat fungsi pengitung Order
    Jadi logikanya adalah, JIKA Jumlah ORDER BUY=0, maka OP_BUY, begitu juga dengan SELL, coba buat dulu nanti kita bantu koreksi :)

    Yang ini ya .... kurang paham tadinya..... :rofl:
    Ok dech, nunggu selanjutnya ....
     
  8. Threadmark: Cara Mengitung Order
    HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Buatlah dulu fungsi penghitung order, misalnya saya berikan contoh menghitung order buy dengan operator for
    Code:
    int HdBuy()
    {int OB=0;
    for(int i=OrdersTotal()-1; i>=0; i--)
             {
                if( !OrderSelect(i,SELECT_BY_POS,MODE_TRADES)continue;
               if(OrderType()!=OP_BUY) continue;
               if(OrderType()==OP_BUY) OB++;
             }
    return(OB); 
    }
    
    Dengan fungsi diatas maka kita akan mengetahui jumlah order buy ada berapa, sehingga logikanya jika total order buy kurang dari atau sama dengan NOL, maka Jalankan Perintah Order Buy,
    Dengan demikian Order buy tidak akan banyak / hanya satu saja.
     
    • Like Like x 1
  9. qitafaza

    qitafaza Member

    Equity
    Credit
    Ref Point
    if(OrderOpenPrice()<1)
    {
    // sinyal OP sell
    if(harga<MA96)
    {
    if(harga<cross)
    {
    if(c2>c1)
    {
    OrderSend(Symbol(),OP_SELL,Lots,mybid,3,slsell,tpsell,"Faza",0,0,Blue);
    }
    }
    }



    // sinyal OP buy
    if(harga>MA96)
    {
    if(harga>cross1)
    {
    if(c2<c1)
    {
    OrderSend(Symbol(),OP_BUY,Lots,myask,3,slbuy,tpbuy,"Faza",0,0,Green);
    }
    }
    }
    }

    //----------------------------------
    return(0);
    //
    }

    Master HendroFX , mau tanya lagi master, kenapa dengan script diatas EA nya cuma OP buy, gak bisa OP sell?
    Mohon bimbingannya master ...
     
  10. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Saya tidak bisa membaca secara keseluruhan dari koding di atas, jika hanya OP buy yang jalan artinya Signal Buy saja yang memenuhi syarat Op, sedangkan Op Sell Tidak, atau coding dalam signal OP Sell salah yang mengakibatkan tidak terpenuhinya syarat untuk Op Sell. jadi periksa kembali
     
    • Like Like x 1
  11. yadi yadi

    yadi yadi Member Credit Hunter

    Equity
    Credit
    Ref Point
    tanya dong, gmna script untuk membaca alert dari indikator ato ea menjadi op. sy coba sperti ini gk bsa
    if(alert(BUY)) Ordersend(......
     
  12. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Bila alert berasal dalam coding indikator ditambahkan perintah open order jelas tidak bisa jalan, perintah order send bisa bekerja apalila diletakkan dalam coding EA, dan bukan indikator. untuk itu buatlah costum Indikator untuk mendapatkan signal Buy atau Sell
     
  13. yadi yadi

    yadi yadi Member Credit Hunter

    Equity
    Credit
    Ref Point
    oh gitu ya, dikira bisa pantesan utak atik gk ktmu, trims gan
     
  14. yadi yadi

    yadi yadi Member Credit Hunter

    Equity
    Credit
    Ref Point
    gmana buat push notifikasi(alert di mt4 android)? kalo alert di mt4 pc tinggal kasih Alert.......... misal if(1+1) Alert..............
     
  15. Yasir Arafat

    Yasir Arafat Member

    Equity
    Credit
    Ref Point
    Om momod mau tanya dong...
    Saya buat ea yg menyimpan history trading ke folder lain selain folder terminal kok g bisa ya...?
    Kodingnya gini om
    Int handle=FileOpen("c:\desktop"+"history.csv",FILE_CSV|FILE_WRITE,",");
    Apa ada yg salah...?
     
  16. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Menulis file hitory dalam folder file dalam MT4, dengan format seperti ini
    Code:
    uint FileWrite(
    intfile_handle, // File handle
    ... // List of recorded parameters
       );
    CONTOH Aplikasi dalam penulisan codingnya :)
    Code:
    #propertycopyright"Copyright 2014, MetaQuotes Software Corp."
    #propertylink"https://www.mql5.com"
    #propertyversion"1.00"
    #propertystrict
    //--- show the window of input parameters when launching the script
    #propertyscript_show_inputs
    //--- parameters for receiving data from the terminal
    inputstring InpSymbolName="EURUSD"; // Сurrency pair
    inputENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_H1; // Time frame
    inputint InpFastEMAPeriod=12; // Fast EMA period
    inputint InpSlowEMAPeriod=26; // Slow EMA period
    inputint InpSignalPeriod=9; // Difference averaging period
    inputENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE; // Price type
    //--- parameters for writing data to file
    inputstring InpFileName="MACD.csv"; // File name
    inputstring InpDirectoryName="Data"; // Folder name
    //+------------------------------------------------------------------+
    //| Script program start function |
    //+------------------------------------------------------------------+
    voidOnStart()
    {
    bool sign_buff[]; // signal array (true - buy, false - sell)
    datetime time_buff[]; // array of signals' appear time
    int sign_size=0; // signal array size
    double macd_buff[]; // array of indicator values
    datetime date_buff[]; // array of indicator dates
    int macd_size=0; // size of indicator arrays
    //--- set indexing as time series
    ArraySetAsSeries(sign_buff,true);
    ArraySetAsSeries(time_buff,true);
    ArraySetAsSeries(macd_buff,true);
    ArraySetAsSeries(date_buff,true);
    //--- reset last error code
    ResetLastError();
    //--- copying the time from last 1000 bars
    int copied=CopyTime(NULL,0,0,1000,date_buff);
    if(copied<=0)
    {
    PrintFormat("Failed to copy time values. Error code = %d",GetLastError());
    return;
    }
    //--- prepare macd_buff array
    ArrayResize(macd_buff,copied);
    //--- copy the values of main line of the iMACD indicator
    for(int i=0;i<copied;i++)
    {
    macd_buff[i]=iMACD(InpSymbolName,InpSymbolPeriod,InpFastEMAPeriod,InpSlowEMAPeriod,InpSignalPeriod,InpAppliedPrice,MODE_MAIN,i);
    }
    //--- get size
    macd_size=ArraySize(macd_buff);
    //--- analyze the data and save the indicator signals to the arrays
    ArrayResize(sign_buff,macd_size-1);
    ArrayResize(time_buff,macd_size-1);
    for(int i=1;i<macd_size;i++)
    {
    //--- buy signal
    if(macd_buff[i-1]<0 && macd_buff[i]>=0)
    {
    sign_buff[sign_size]=true;
    time_buff[sign_size]=date_buff[i];
    sign_size++;
    }
    //--- sell signal
    if(macd_buff[i-1]>0 && macd_buff[i]<=0)
    {
    sign_buff[sign_size]=false;
    time_buff[sign_size]=date_buff[i];
    sign_size++;
    }
    }
    //--- open the file for writing the indicator values (if the file is absent, it will be created automatically)
    ResetLastError();
    int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
    if(file_handle!=INVALID_HANDLE)
    {
    PrintFormat("%s file is available for writing",InpFileName);
    PrintFormat("File path: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
    //--- first, write the number of signals
    FileWrite(file_handle,sign_size);
    //--- write the time and values of signals to the file
    for(int i=0;i<sign_size;i++)
    FileWrite(file_handle,time_buff[i],sign_buff[i]);
    //--- close the file
    FileClose(file_handle);
    PrintFormat("Data is written, %s file is closed",InpFileName);
    }
    else
    PrintFormat("Failed to open %s file, Error code = %d",InpFileName,GetLastError());
    }
       
     
  17. Trancexe

    Trancexe Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    master2 di sini.. saya mau tanya masalah BB
    Code:
    double BBtop  = iBands(NULL,PERIOD_M15,20,2,0,PRICE_WEIGHTED,MODE_UPPER,1);
    
    semisal code di atas
    kemudia untuk fungsi agar EA mau OP adalah jika close candle diatas BB UPPER.
    dengan Fungsu close
    Code:
    double close= iClose(NULL,PERIOD_M15,1);
    nah saya penasaran ketika saya gunakan dua variable diatas ea saya BT dalam 1 tahun tidak ada OP
    Code:
    if(OrderCountBuy(OP_BUY) && close1>BBtop)
      {
       signal1=1;
      }
    if(OrderCountSell(OP_SELL) && close1<BBlow)
      {
       signal2=1;
      } 
    ap yang salah ya
     
  18. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Logika OrderContBuy dan Sell harus diperiksa dulu.
    yang kedua lihat apakah close1>BBtop sudah benar bernilai 1?? demikian juga dengan yang Low
     
  19. Trancexe

    Trancexe Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    ordercountnya udah oke.. saya test OP dengan indi MA work.

    cara memastikan value close1>BBtop = 1 gmn? pake alert? atau di print di comment

    =======================================
    arrrgh... ralaat..

    itu harusnya ditulis OrderCountBuy==0
    pantesan ga OP2
     
  20. fetotan

    fetotan Member Credit Hunter

    Equity
    Credit
    Ref Point
    Master Hendro mohon bantuannya, saya coba membuat indikator versi mtf tetapi masih error. Berikut saya sertakan file mq4 nya. Terimakasih banyak atas bantuannya.
     

    Attached Files:

Share This Page