1. 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. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Karena kita semua dalam tahap belajar dan bukan untuk memeriksa pekerjaan :) , maka silahkan coding di tulis dalam komen pada forum ini agar semua bisa belajar dari yang lain
    Pesan Errornya apa? coba cek dibagian bawah setelah file di compile.
     
  2. fetotan

    fetotan Member Credit Hunter

    Equity
    Credit
    Ref Point
    [HASHTAG]#property[/HASHTAG] indicator_separate_window
    [HASHTAG]#property[/HASHTAG] indicator_buffers 2
    [HASHTAG]#property[/HASHTAG] indicator_color1 Blue
    [HASHTAG]#property[/HASHTAG] indicator_color2 Red

    //Input Paramete
    /*
    PERIOD_M1 1
    PERIOD_M5 5
    PERIOD_M15 15
    PERIOD_M30 30
    PERIOD_H1 60
    PERIOD_H4 240
    PERIOD_D1 1440
    PERIOD_W1 10080
    PERIOD_MN1 43200
    */

    extern int TimeFrame = 0;
    extern int SSP = 7;
    extern double Kmax = 50.6;
    extern int CountBars = 300;
    double G_ibuf_92[];
    double G_ibuf_96[];
    double G_ibuf_100[];
    double G_ibuf_104[];

    int init() {
    IndicatorBuffers(4);
    SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 5);
    SetIndexBuffer(0, G_ibuf_100);
    SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 5);
    SetIndexBuffer(1, G_ibuf_104);
    SetIndexBuffer(2, G_ibuf_92);
    SetIndexBuffer(3, G_ibuf_96);
    switch(TimeFrame)
    {
    case 1 : string TimeFrameStr="Period_M1";break;
    case 5 : string TimeFrameStr="Period_M5";break;
    case 15 : string TimeFrameStr="Period_M15";break;
    case 30 : string TimeFrameStr="Period_M30";break;
    case 60 : string TimeFrameStr="Period_H1";break;
    case 240 : string TimeFrameStr="Period_H4";break;
    case 1440 : string TimeFrameStr="Period_D1";break;
    case 10080 : string TimeFrameStr="Period_W1";break;
    case 43200 : string TimeFrameStr="Period_MN1";break;
    default: TimeFrameStr="CurrentTimeFrame";
    }
    IndicatorShortName("SS2009_C MTF("+TimeFrameStr + SSP + ")");
    return (0);
    }
    int deinit() {
    return (0);
    }

    int start() {
    datetime TimeArray[];
    int i,limit,y=0,counted_bars=IndicatorCounted();
    ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
    limit= Bars-1;
    for(i=0,y=0;i<limit;i++)
    {
    if (Time<TimeArray[y])y++;

    double Ld_8;
    double Ld_16;
    double Ld_32;
    if (CountBars >= Bars) CountBars = Bars;
    SetIndexDrawBegin(0, Bars - CountBars + SSP);
    SetIndexDrawBegin(1, Bars - CountBars + SSP);
    int ind_counted_4 = IndicatorCounted();
    if (Bars <= SSP + 1) return (0);
    if (ind_counted_4 < SSP + 1) {
    for (int Li_0 = 1; Li_0 <= SSP; Li_0++) G_ibuf_92[CountBars - Li_0] = 0.0;
    for (Li_0 = 1; Li_0 <= SSP; Li_0++) G_ibuf_96[CountBars - Li_0] = 0.0;
    }
    for (Li_0 = CountBars - SSP; Li_0 >= 0; Li_0--) {
    Ld_8 = High[iHighest(NULL, TimeFrame, MODE_HIGH, SSP, Li_0 - SSP + 1)];
    Ld_16 = Low[iLowest(NULL, TimeFrame, MODE_LOW, SSP, Li_0 - SSP + 1)];
    Ld_32 = Ld_8 - (Ld_8 - Ld_16) * Kmax / 100.0;
    G_ibuf_92[Li_0 - SSP + 6] = Ld_32;
    G_ibuf_96[Li_0 - SSP - 1] = Ld_32;
    }
    for (int Li_40 = CountBars - SSP; Li_40 >= 0; Li_40--) {
    if (G_ibuf_92[Li_40] > G_ibuf_96[Li_40]) {
    G_ibuf_100[Li_40] = 1;
    G_ibuf_104[Li_40] = 0;
    } else {
    G_ibuf_100[Li_40] = 0;
    G_ibuf_104[Li_40] = 1;
    }
    }
    }
    return (0);
    }

    Pesan error nya saya sertakan dalam foto master. Terimakasih atas tanggapannya
     

    Attached Files:

  3. Threadmark: Cara Mendeteksi error coding dan penyelesaianya
    HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Kalau diperhatikan pesan error dalam gambar dan juga penulisan coding di atas, maka sudah jelas bahwa variable dari TimeFrameStr sudah pernah di deklarasikan, coba cek pada line dan kolom berapa errornya. Silahkan lihat gambar, Jika sudah pernah dipakai, ganti dengan nama yang berbeda. error.jpg
     
  4. fetotan

    fetotan Member Credit Hunter

    Equity
    Credit
    Ref Point
    Terimakasih atas masukkannya master. Saya coba perbaiki lagi codingnya.
     
  5. Trancexe

    Trancexe Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    Code:
    case 1 : string TimeFrameStr="Period_M1";break;
    case 5 : string TimeFrameStr="Period_M5";break;
    case 15 : string TimeFrameStr="Period_M15";break;
    case 30 : string TimeFrameStr="Period_M30";break;
    case 60 : string TimeFrameStr="Period_H1";break;
    case 240 : string TimeFrameStr="Period_H4";break;
    case 1440 : string TimeFrameStr="Period_D1";break;
    case 10080 : string TimeFrameStr="Period_W1";break;
    case 43200 : string TimeFrameStr="Period_MN1";break;
    TimeFrameStr cukup di dibuat di global variable aja. ga perlu di ulang2
     
  6. Trancexe

    Trancexe Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    Misi suhu2, master2. saya mau tanya.

    Jika saya mempunyai 5 OP dan saya ingin mengetahui Order Open Price dari masing2 OP bagaimana caranya ya?
    kemampuan saya hanya sebatas mengkombinasikan loop dengan OrderSelect yang menghasilkan OrderOpenPrice dari OP terakhir..
     
  7. faza85

    faza85 New Member

    Equity
    Credit
    Ref Point
    Master HendroFX , gimana coding buat tau harga sekarang yang sedang running ...?
     
  8. Threadmark: Cara memilih Order Terakir dari beberapa order
    HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Gunakan operator for untuk looping dari order yang ada, setelah itu order di pilih dengan menggunakan perintah order select, dalam memilih ini bisa kita kembangkan banyak hal, Misalnya memilih harga open price, besarnya lot atau profitnya.
    Contoh sederhana;
    Code:
    int tiket; double OOP;
    // operator for untuk looping 
    for (int i = OrdersTotal()-1; i >=0 ; i--)
      {// memilih posisi order yang aktif
          if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES) continue;
         tiket=OrderTicket();
          OOP=OrderOpenPrice();
    if(tiket>0) break;// EA akan selalu memilih harga terakir
    }// end looping
    Comment (OOP);// untuk tes apakah benar Order Open Price terakir

    Sangat mudah gunakan coding dibawah ini; untuk simbol bisa diganti ganti sesuai PAIR yang di inginkan, jika menggunakan Symbol(), maka yang dimaksud adalah simbol dimana EA sedang Running.
    Code:
     double HargaSekarang;
    HargaSekarang=MarketInfo(Symbol(),MODE_ASK):
    Comment (HargaSekarang);// Lihat Comment pada layar harga sekarang
    
     
    • Like Like x 1
  9. Trancexe

    Trancexe Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    klo saya ingin menampilkan semua hasil dri order select gmn?
    klo
    for (int i ==0; i<4; i++)
    Alert(i);

    hasilnya 0,1,2,3.
    nah klo capture dari Order Select gmn?
     
  10. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Bisa dijelaskan lebih detail dari pertanyaanya?
     
  11. Trancexe

    Trancexe Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    misal gini.. saya ada 4 order.. tiap order pasti punya OrderOpenPrice masing2.
    saya ingin bisa capture nilai tiap OrderOpenPrice.
    klo saya pake fungsi For()
    yang terbaca hanya Order Terakhir.
    for (int i; i<OrdersTotal; i++)
    { double order=0;
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)
    ............................................
    Order=OrderOpenPrice();
    }
     
  12. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Jelas berbeda cara pengambilan data open ordernya, hal itu menggunakan Array size, nah untuk ynag ini silahkan dipelajari tentang Array size ya..
     
  13. Yasir Arafat

    Yasir Arafat Member

    Equity
    Credit
    Ref Point
    kalau save di terminal data path sih memang sudah bisa om hendro...
    masalahnya ini kok g bisa di save langsung save ke dekstop ya..?
    apakah ada pencerahan lainnya om..?
     
  14. Trancexe

    Trancexe Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    roger. emang lagi baca2 tentang array.
    semoga dapat ilham :D
     
  15. faza85

    faza85 New Member

    Equity
    Credit
    Ref Point
    Tanya lagi master HendroFX
    kalau buat mengetahui Open Close Candle jam 23:00 dari broker coding nya bagaimna master ?
     
  16. Threadmark: Cara mencari Nilai Open Candle dan Close Candle pada Jam Tertentu
    HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Penyimpanan data file memang pada terminal data, dan saya kira tidak ada masalah dengan hal itu

    Pertma cari dulu candel ke berapa Jam 23 tersebut dengan melakukan looping pada candle yang sudah berjalan (gunakan operator for)
    Ke dua, Jika sudah ketemu baru mencari Harga Open order dan "Close"nya,
    contoh sederhana sebagai basic yang bisa dikembangkan
    Code:
    datetime TimeBar; int Bar;
     double HdOpen,HdClose;  
     for(Bar=0; Bar<Bars; Bar++)
     {  
          TimeBar= iTime(Symbol(),0,Bar) ;    
         if(TimeHour(TimeBar)!=23)continue;
          if(TimeHour(TimeBar)==23)break;
    }    
    HdOpen =iOpen(Symbol(),0,Bar);
    HdClose= iClose(Symbol(),0,Bar);  
    Alert("Open Order Candle Jam 23 = "+ HdOpen );
    
     
    • Like Like x 2
  17. faza85

    faza85 New Member

    Equity
    Credit
    Ref Point
    Pertma cari dulu candel ke berapa Jam 23 tersebut dengan melakukan looping pada candle yang sudah berjalan (gunakan operator for)
    Ke dua, Jika sudah ketemu baru mencari Harga Open order dan "Close"nya,
    contoh sederhana sebagai basic yang bisa dikembangkan
    Code:
    datetime TimeBar; int Bar;
    double HdOpen,HdClose; 
    for(Bar=0; Bar<Bars; Bar++)
    { 
          TimeBar= iTime(Symbol(),0,Bar) ;   
         if(TimeHour(TimeBar)!=23)continue;
          if(TimeHour(TimeBar)==23)break;
    }   
    HdOpen =iOpen(Symbol(),0,Bar);
    HdClose= iClose(Symbol(),0,Bar); 
    Alert("Open Order Candle Jam 23 = "+ HdOpen );
    
    [/QUOTE]

    Maap master tanya terus .... Tapi kalao gak tanya pusing sendiri ...
    Biar HdClose nya bisa jadi SL gimana code nya master HendroFX ?, terus biar EA nya bisa OP setiap 1 jam code nya bagaimana ?
     
  18. HendroFX

    HendroFX Moderator Moderator

    Equity
    Credit
    Ref Point
    Mas bertanya karena mas belum mengerti dasar dari dasar Mql, saran saya pelajari Mqlnya, jika tidak tidak akan pernah bisa menguasai tingkat yang lebih tinggi
     
    • Like Like x 1
  19. faza85

    faza85 New Member

    Equity
    Credit
    Ref Point
    Sebenernya sudah master, berhubung belajar nya otodidak, jadi kalau ada kesulitan mentok .....
    Udah searching tapi belum dapet... Btw thanks master HendroFX , atas sarannya ....
     
  20. Trancexe

    Trancexe Active Member Credit Hunter

    Equity
    Credit
    Ref Point
    code yang di kasih di atas adalah untuk capture nilai Close dan Open Candle pada H 23.
    coba value HdOpen dan HdClose di panggil pake Alert.. udah sesuai blm.
    tinggal nanti di manfaatkan. bisa sebagai acuan OP
     
    • Like Like x 1

Share This Page