Cara menggunakan php trader ma

Pasar keuangan dunia menawarkan potensi keuntungan dan kerugian yang besar. Selalu ada potensi keuntungan di pasar karena anda dapat menempatkan perdagangan ke kedua arah. Apakah sikap anda bullish atau bearish, kemampuan pedagang untuk menghasilkan uang selalu hadir- begitu juga kemampuan untuk membuat kerugian.

Terlalu sering, emosi, jebakan pikiran psikologis dan disiplin mental menghalangi keuntungan dan merupakan alasan utama  95% (atau  lebih ) dari semua pedagang baru kehilangan semua modal investasi mereka di bulan pertama.  

Dengan menggunakan robot trading algoritma Expert Advisor di Meta Trader yang ditulis dalam bahasa MQL4 adalah salah satu cara untuk mengakses pasar melalui kode, sehingga mengambil emosi keluar dari gambar dan bekerja hanya dengan angka dan logika program anda.  

Mengambil emosi dari persamaan adalah satu ukuran, tapi ini tidak berarti robot tidak bisa kalah.  Bahkan, bahkan bank investasi besar pun harus menarik steker pada robot trading mereka sebelum kerugiannya menjadi fatal. Pada tahun 2013,  Goldman Sachs melakukan kesalahan serius dalam algoritma perdagangan mereka yang berharga 100 juta dollar. 

Anda perlu waspada, sebelum melanjutkan dengan panduan ini dan bahkan merenungkan penggunaan real, hard-earned cash, anda, bahwa anda bisa kehilangan semua deposit anda di akun broker anda dari kode anda (dan mungkin dalam kasus terburuk lebih banyak dengan beberapa broker jika biaya tambahan berlaku)

Pada akhirnya, anda bertanggung jawab untuk perdagangan-perdagangan, bahkan jika kode program menempatkan mereka untuk anda. Saat kerugian menjadi suatu kemungkinan, anda juga bisa melipatgandakan akun dan membuatnya tumbuh secara eksponensial saat anda tidur.  

Jika anda ingin menjalankan sepenuhnya pada auto-pilot, ini bisa diraih tanpa interaksi sama sekali. Anda benar-benar bisa menghasilkan uang secara pasif sementara anda melanjutkan hidup anda sehari-hari.  

Strategi perdagangan bebas tangan sepenuhnya tidak saya promosikan - juga bukan yang pernah saya gunakan dan tidak menemukan keuntungan sama sekali. Memantau robot aktif dan perdagangan saat ini, bersamaan dengan mengawasi kalender dan event ekonomi, sangat berbeda dengan membiarkannya keluar seenaknya dan berharap yang terbaik. Kemenangannya mungkin bersifat epik, tapi kerugian yang tak dijaga jauh lebih megah.

Memasang MQL4

Silahkan download MT4 dari situs mereka dan pasang di mesin anda.

  • Windows users
  • macOS users
  • Linux users

Begitu MT4 berjalan, anda memerlukan akun dengan broker yang mendukung MT4. Mereka kemudian dapat memberi anda kredensial login MT4 anda.  

Semua broker akan menawarkan demo account, dan anda dianjurkan untu selalu menggunakan akun demo untuk menulis dan menguji perangkat lunak anda.

Setelah anda mengkonfigurasi MT4 di desktop anda, kita dapat terus menciptakan robot riset algoritma Expert Advisor kita sendiri.

Cara Menulis Robot

Ada banyak bahasa yang akan cocok untuk menulis robot trading algoritma dari awal, namun komplikasi yang akan anda hadapi sebenarnya adalah dengan API untuk mengarahkan akses pasar yang akan disediakan oleh broker saham anda-sehingga anda akan benar-benar memungkinkan diri anda sendiri untuk menempatkan pesanan perdagangan di pasar keuangan.  

Memproses data pasar bisa dicapai dalam sejumlah besar bahasa, dan mungkin ke tingkat yang lebih cepat daripada MT4. MQL4 dapat menjalankan kembali tes (tes balik adalah cara untuk menguji robot algoritma anda; lebih lanjut tentang ini nanti).  Untuk alasan kemudahan fungsionalitas dan dukungan umum untuk perangkat lunak keuangan, saya sangat rekomendasikan untuk menggunakan MQL4 (MetaQuotes Language 4), bahasa asli MetaTrader 4, untuk menulis robot trading algoritma anda.

Sintaks MQL4

MQL4 mirip dalam bentuknya dengan PHP, C, C ++ atau VBScript. Berikut adalah contoh fungsi yang akan dipanggil pada setiap tick data pasar:

void OnTick()
  {
       if(Bars<100 || IsTradeAllowed()==false)
          return;
       if(CalculateCurrentOrders(Symbol())==0){
          CheckForOpen();
       } else {
          CheckForClose();
       }
  }

Disini kita periksa apakah sudah ada cukup data pasar yang dimuat dengan Bar <100. MQL4 mengatur variabel yang telah ditentukan seperti Bar (yang berisi jumlah bar yang dimuat ke dalam grafik).  

Selain itu, kami cek dengan atau || bersyarat untuk  IsTradeAllowed (). Ini adalah fungsi cek untuk memeriksa bahwa konteks perdagangan saat ini tidak sibuk.

Elemen MQL4 seperti variabel yang telah ditentukan dan operasi grafik fungsi seperti  Simbol()   membuat tulisan strategi anda berjalan-jalan di taman, dan untuk saya adalah mengapa benar-benar lebih baik untuk kode algoritma robot perdagangan di MQL4 diatas bahasa lain.

Saya sarankan anda melihat melalui Referensi MQL4  kapan pun anda punya waktu untuk lebih percaya diri dalam menggunakan MQL4 agar lebih memuaskan kebutuhan anda.

Mengedit Kode MQL4 di MetaEditor

Saya sarankan untuk menggunakan built-in MetaEditor IDE yang hadir dengan platform trading MT4. Untuk masuk ke editor, cukup klik kanan pada expert advisor yang ada di panel navigator kiri dan pilih memodifikasi dari menu

Cara menggunakan php trader ma
Cara menggunakan php trader ma
Cara menggunakan php trader ma

MetaEditor MT4 kemudian akan terbuka, dan anda akan bisa membuat file baru. Ia menawarkan penyorotan sintaks dan output debugging pengguna.  

Penting:  anda harus mengkompilasi file mq4 Anda ke ex4 expert advisor menggunakan MetaEditor jika anda mengedit editor eksternal. Maka menjadi familiar dengan MetaEditor adalah sebuah keharusan.

Algoritma kami

Untuk strategi kita kita akan mulai menggunakan basis dukungan dan perlawanan dari indikator SMA (Smoothed Moving Average). SMA bisa memprediksi sinyal masuk / keluar bullish atau bearish.  Smoothed moving average membantu kita memotong kebisingan dari pasar,memberi pandangan yang lebih jelas mengenai arah tindakan harga.

Cara menggunakan php trader ma
Cara menggunakan php trader ma
Cara menggunakan php trader ma

Dalam uptrend atau downtrend, SMA dapat berperilaku sebagai pendukung atau resistensi, tergantung pada orientasinya. Bila harganya naik, SMA akan berperilaku sebagai lantai pendukung, dan saat harganya mulai turun,ia berperan sebagai resistance / plafon.

Basis untuk masuk

Saat kita memplot dua SMA dari periode yang berbeda-satu dari periode 40 dan satu dari periode 100- kita kemudian dapat melihat bagaimana mereka berubah dan membuat basis untuk masuk. Seperti yang telah kita sebutkan sebelumnya, ketika SMA berada di bawah harga (kurang dari harga terakhir), kami menganggapnya sebagai bais untuk  dukungan, dan ketika SMA di atas harga (lebih besar dari harga terakhir), kami menganggap ini garis resistensi.  

Jadi, dalam kode, kita lakukan hal berikut terlebih dahulu untuk membuat metode memeriksa input silang untuk kemudian menentukan basis kita masuk:

//+------------------------------------------------------------------+
//| Check for cross over of inputs                                      |
//+------------------------------------------------------------------+
int CheckForCross(double input1, double input2)
{
  static int previous_direction = 0;
  static int current_dirction = 0;

  // Up Direction = 1
  if(input1 > input2){
    current_direction = 1;
  }

  // Down Direction = 2
  if(input1 < input2){
    current_direction = 2;
  }

  // Detect a direction change
  if(current_direction != previous_direction){
    previous_direction = current_dirction;
    return (previous_direction);
  } else {
    return (0);
  }
}

Sekarang kita bisa kalkulasikan SMA kita dengan menggunakan metode indikator teknis iMA  yang disediakan oleh MQL4 dan jalankan melalui fungsi  CheckForCross untuk melihat apakah telah ada sebuah cross seperti:

shortSma = iMA(NULL, 0, PeriodOne, 0, MODE_SMMA, PRICE_CLOSE, 0);
longSma = iMA(NULL, 0, PeriodTwo, 0, MODE_SMMA, PRICE_CLOSE, 0);

// Check if there has been a cross on this tick from the two SMAs
int isCrossed = CheckForCross(shortSma, longSma);

Disini kita menggunakan MODE_SMMA untuk mengembalikan Smoothed Moving Average kepada kita dari metode indikator teknis iMA untuk metode smoothing yang kita pilih.  

Jika anda ingin menggunakan metode smoothing lainnya, ada beberapa pilihan seperti Simple, Exponential, dan Linear-weighted

Seperti halnya dengan semua dukungan dan resistensi, metodologi trading standar bekerja di sini: beli support dan juall resistance!  

Jadi, untuk algoritma kita, kita akan melakukan hal tersebut. Bila ada cross di kedua arah, kita akan menerapkan arah trading yang tepat dan masuk pasar.

f(isCrossed == 1){
        ticket = OrderSend(Symbol(),OP_BUY, LotsOptimized(),Ask,3,0,0,"Double SMA Crossover",MAGICNUM,0,Blue);
        if(ticket > 0){
          if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
            Print("BUY Order Opened: ", OrderOpenPrice());
          }
          else
            Print("Error Opening BUY Order: ", GetLastError());
            return(0);
        }
    if(isCrossed == 2){
      ticket = OrderSend(Symbol(),OP_SELL, LotsOptimized(),Ask,3,0,0,"Double SMA Crossover",MAGICNUM,0,Blue);
      if(ticket > 0){
        if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
          Print("SELL Order Opened: ", OrderOpenPrice());
        }
        else
          Print("Error Opening SELL Order: ", GetLastError());
          return(0);
      }
    }

Di sini kita periksa kembalinya fungsi CheckForCross yang kita definisikan sebelumnya, setelah loading dengan dua SMA yang didefinisikan oleh indikator teknis iMA.   

Kita gunakan OrderSend, yang disediakan oleh MQL4, untuk membuka trade. Sebagai praktik terbaik, hasilnya tersimpan di variabel tiket dan kemudian diperiksa untuk nilai pengembalian positif sehingga dapat menangani kesalahan yang mungkin telah dilaporkan dari pihak broker.

Dasar untuk Keluar

Seperti basis masuk (kecuali dalam kasus terbalik), saat SMA menciptakan death cross, kita dapat menggunakan sinyal ini untuk penutupan perdagangan kita, jika ada perdagangan terbuka. Logika untuk ini akan ditulis seperti ini:

// Get the current total orders
  total = OrdersTotal();
  
// Manage open orders for exit criteria
  for(cnt = 0; cnt < total; cnt++){
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()){
      // Look for long positions
      if(OrderType()==OP_BUY){
        // Check for Exit criteria on buy - change of direction
        if(isCrossed == 2){
          OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet); // Close the position
          return(0);
        }
      }
      else //Look for short positions - inverse of prior conditions
      {
        // Check for Exit criteria on sell - change of direction
        if(isCrossed == 1){
          OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet); // Close the position
          return(0);
        }
      }
    }
  }

Disini kita masuk For perulangan untuk mengulangi semua perintah terbuka, walaupun saat ini kita hanya akan menukar satu perdagangan di satu waktu- hal ini memungkinkan kita untuk berkembang di masa depan dan memiliki banyak perdagangan terbuka jika kita merasa membutuhkannya.

Ia juga membuat penggunaan metode OrderSelect  lebih mudah, karena kita bisa menggunakan variabel cnt  dari  loop For.  

Begitu berada di dalam iterasi, kita hanya melihat Jenis pesanan terbaru (memeriksa order Buy OP_BUY   atau   Sell OP_SELL  ) dan kemudian menerapkan logika kondisional dari kembalinya metode CheckForCross kita.

Menambah Manajemen Uang

Saat ini algoritma kami sederhana dengan dasar untuk masuk dan keluar dari perdagangan, namun tetap saja sangat bodoh dalam hal pengelolaan dana. Bagi kami untuk menjaga risiko di bawah kendali, kami akan hanya menempatkan seperlima dari ekuitas tradabel pada setiap perdagangan, jadi sekarang kita perlu faktor itu ke dalam algoritma kita.  

lot = NormalizeDouble((AccountFreeMargin()/5)/1000.0,1);
if(lot<0.1) lot=0.1;
return(lot);

Ini berarti jika anda memiliki $10.000 di akun, kami hanya melakukan perdagangan dengan seperlima dalam satu waktu ($ 2.000), jadi skrip hanya akan menempatkan perdagangan dengan ukuran yang lebih kecil dari 0,1 atau 0,2, misalnya-berdasarkan pada yang satu ini- perhitungan kelima.  

Kita gunakan AccountFreeMargin dan NormalizeDouble untuk menghasilkan ukuran lot ini, dan jika dihitung di bawah ukuran lot minimal 0,1, kita akan set ke 0,1.

Seiring akun tumbuh (atau menyusut!), Eksposur hanya akan ditetapkan pada angka seperlima dari ekuitas akun. Ini berarti bahwa over-exposure dari jumlah yang tetap (misalnya perdagangan lot tetap tertentu pada setiap ukuran akun) secara teoritis tidak dapat terjadi, ergo risiko margin call dari over trade dihapus atau sangat berkurang.  

Margin call adalah risiko yang sangat nyata jika pasar bergerak melawan anda secara drastis sebelum kembali karena lonjakan/fluktuasi sementara anda tidak berada di sekitar untuk menyimpan lebih banyak dana

Dalam istilah awam, ukuran lot dari perdagangan akan dihitung secara dinamis oleh script kami untuk memenuhi ukuran ekuitas. Jadi potensi keuntungan yang lebih besar dan lebih besar sangat nyata.  

catatan:  Sebuah fitur yang bagus bisa untuk memberikan parameter untuk menutupii area tradable. Misalnya, jika anda hanya ingin berdagang dengan $1.000 dari akun anda, terlepas dari margin yang tersedia, anda bisa mengatur tersedia tradable hanya $ 1.000 daripada seluruh ukuran akun Anda.  

Secara pribadi saya selalu menggunakan fitur seperti ini saat akan tinggal bersama skrip baru secara berurutan untuk mengurangi paparan saya terhadap risiko, sampai saya benar-benar yakin skrip berfungsi secara solid untuk diijinkan lebih banyak dana.  

Secara pemrograman, ini memerlukan parameter dan sedikit perubahan pada contoh kode di atas untuk memeriksa variabel itu daripada nilai AccountFreeMargin().

Break even

Selain itu, kita akan mencoba melakukan beberapa situasi impas, yang berarti jika pasar telah berubah terhadap kita untuk memberikan kerugian secara substansial dari pembukaan, kita melihat jalan keluar dengan kerugian minimal dan setidaknya seri untuk mempertahankan modal kita.

Hal ini dapat dicapai dengan memantau hilangnya perdagangan dan hubungan kita dengan harga terbuka. Jika arah berubah dan perdagangan kita kehilangan uang, kita dapat mencoba untuk menutup perdagangan sedekat mungkin dengan harga masuk:

  bool BreakEven(int MN){
    int Ticket;

    for(int i = OrdersTotal() - 1; i >= 0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MN){
        Ticket = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0, Green);
        if(Ticket < 0) Print("Error in Break Even : ", GetLastError());
          break;
        }
      }

    return(Ticket);
}

Kode di atas menggunakan OrderModify untuk mencoba mengatur stop loss ke order open price.  Ini adalah sebuah metode kasar tapi sederhana untuk memastikan kita melangkah keluar saat harga kembali ke harga masuk kita. Ia hanya berlaku bila keuntungan yang belum direalisasi saat ini berada dalam kerugian.

Menambahkan Margin Break-Even 

Margin untuk break even bisa ditambahkan hanya dengan menambahkan metode OrderOpenPrice seperti:

Ticket = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice()+10, OrderTakeProfit(), 0, Green);

Untuk contoh ini, kita memungkinkan 10 poin perbedaan dalam entri kita untuk ditutup melalui batas stop.

catatan:   Arah trade harus diperiksa untuk metode ini-seperti apakah ia harus ditambahkan atau dikurangkan dari harga masuk sesuai dengan apakah itu posisi beli atau jual.

Cara lain untuk memastikan keuntungan kita tidak hilang adalah dengan menggunakan trailing stop, yang akan dibahas secara rinci dalam buku lain.

Skrip Utuh

Berikut adalah daftar lengkap untuk expert advisor kami. Kami memiliki beberapa parameter yang tersedia seperti tingkat take profit, stop loss, dan periode SMA.  

Silahkan bermain dengan parameter untuk melihat apa yang terbaik untuk situasi trading anda dan selesaikan algoritma anda.  

Ingat: kinerja masa lalu sama sekali tidak menunjukkan masa depan.

//+------------------------------------------------------------------+
//|                                                   Double Sma.mq4 |
//|                                   Copyright 2017, Tom Whitbread. |
//|                                           http://www.gript.co.uk |
//+------------------------------------------------------------------+
#property copyright   "2017, Tom Whitbread."
#property link        "http://www.gript.co.uk"
#property description "Smoothed Moving Average sample expert advisor"

#define MAGICNUM  20131111

// Define our Parameters
input double Lots          = 0.1;
input int PeriodOne        = 40; // The period for the first SMA
input int PeriodTwo        = 100; // The period for the second SMA
input int TakeProfit       = 40; // The take profit level (0 disable)
input int StopLoss         = 0; // The default stop loss (0 disable)
//+------------------------------------------------------------------+
//| expert initialization functions                                  |
//+------------------------------------------------------------------+
int init()
{
  return(0);
}
int deinit()
{
  return(0);
}
//+------------------------------------------------------------------+
//| Check for cross over of SMA                                      |
//+------------------------------------------------------------------+
int CheckForCross(double input1, double input2)
{
  static int previous_direction = 0;
  static int current_direction  = 0;

  // Up Direction = 1
  if(input1 > input2){
    current_direction = 1;
  }

  // Down Direction = 2
  if(input1 < input2){
    current_direction = 2;
  }

  // Detect a direction change
  if(current_direction != previous_direction){
    previous_direction = current_direction;
    return (previous_direction);
  } else {
    return (0);
  }
}

//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot = Lots;
   // Calculate Lot size as a fifth of available free equity.
   lot = NormalizeDouble((AccountFreeMargin()/5)/1000.0,1);
   if(lot<0.1) lot=0.1; //Ensure the minimal amount is 0.1 lots
   return(lot);
  }


//+------------------------------------------------------------------+
//+ Break Even                                                       |
//+------------------------------------------------------------------+
bool BreakEven(int MN){
  int Ticket;

  for(int i = OrdersTotal() - 1; i >= 0; i--) {
    OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

    if(OrderSymbol() == Symbol() && OrderMagicNumber() == MN){
      Ticket = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0, Green);
      if(Ticket < 0) Print("Error in Break Even : ", GetLastError());
        break;
      }
    }

  return(Ticket);
}

//+------------------------------------------------------------------+
//+ Run the algorithm                                               |
//+------------------------------------------------------------------+
int start()
{
  int cnt, ticket, total;
  double shortSma, longSma, ShortSL, ShortTP, LongSL, LongTP;

  // Parameter Sanity checking
  if(PeriodTwo < PeriodOne){
    Print("Please check settings, Period Two is lesser then the first period");
    return(0);
  }

  if(Bars < PeriodTwo){
    Print("Please check settings, less then the second period bars available for the long SMA");
    return(0);
  }

  // Calculate the SMAs from the iMA indicator in MODE_SMMA using the close price
  shortSma = iMA(NULL, 0, PeriodOne, 0, MODE_SMMA, PRICE_CLOSE, 0);
  longSma = iMA(NULL, 0, PeriodTwo, 0, MODE_SMMA, PRICE_CLOSE, 0);

  // Check if there has been a cross on this tick from the two SMAs
  int isCrossed = CheckForCross(shortSma, longSma);

  // Get the current total orders
  total = OrdersTotal();

  // Calculate Stop Loss and Take profit
  if(StopLoss > 0){
    ShortSL = Bid+(StopLoss*Point);
    LongSL = Ask-(StopLoss*Point);
  }
  if(TakeProfit > 0){
    ShortTP = Bid-(TakeProfit*Point);
    LongTP = Ask+(TakeProfit*Point);
  }

  // Only open one trade at a time..
  if(total < 1){
    // Buy - Long position
    if(isCrossed == 1){
        ticket = OrderSend(Symbol(), OP_BUY, LotsOptimized(),Ask,5, LongSL, LongTP, "Double SMA Crossover",MAGICNUM,0,Blue);
        if(ticket > 0){
          if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
            Print("BUY Order Opened: ", OrderOpenPrice(), " SL:", LongSL, " TP: ", LongTP);
          }
          else
            Print("Error Opening BUY  Order: ", GetLastError());
            return(0);
        }
    // Sell - Short position
    if(isCrossed == 2){
      ticket = OrderSend(Symbol(), OP_SELL, LotsOptimized(),Bid,5, ShortSL, ShortTP, "Double SMA Crossover",MAGICNUM,0,Red);
      if(ticket > 0){
        if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
          Print("SELL Order Opened: ", OrderOpenPrice(), " SL:", ShortSL, " TP: ", ShortTP);
        }
        else
          Print("Error Opening SELL Order: ", GetLastError());
          return(0);
      }
    }

  // Manage open orders for exit criteria
  for(cnt = 0; cnt < total; cnt++){
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()){
      // Look for long positions
      if(OrderType() == OP_BUY){
        // Check for Exit criteria on buy - change of direction
        if(isCrossed == 2){
          OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet); // Close the position
          return(0);
        }
      }
      else //Look for short positions - inverse of prior conditions
      {
        // Check for Exit criteria on sell - change of direction
        if(isCrossed == 1){
          OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet); // Close the position
          return(0);
        }
      }
      // If we are in a loss - Try to BreakEven
      Print("Current Unrealized Profit on Order: ", OrderProfit());
      if(OrderProfit() < 0){
        BreakEven(MAGICNUM);
      }
    }

  }

  return(0);
}

Mengujinya

Cara menggunakan php trader ma
Cara menggunakan php trader ma
Cara menggunakan php trader ma

Kita bisa mengetes data pasar hari-hari sebelumnya, berbulan-bulan, atau bahkan tahun sebelumya untuk instrumen keuangan dengan mudah di lingkungan MT4 (Meta Trader 4). Namun, pedagang dianjurkan untuk tidak percaya pada pengujian balik saja, tetapi untuk menggunakannya sebagai panduan untuk mengarahkan strategi trading mereka dan melihat seberapa efektif sebuah ide.  

Pengujian balik memungkinkan para pedagang untuk memeriksa apakah pemikiran mereka mengalir sehingga bisa dikatakan, sebelum melakukan lebih banyak usaha dan bergerak maju-yakni menulis lebih banyak algoritma mereka ke dalam kode.

Dimana tempatkan File Expert?

Jika anda telah menggunakan editor teks eksternal untuk menulis advisor anda, anda harus memuat advisor expert anda ke platform trading MT4 untuk mengkompilasi dan memeriksa kesalahannya. Cukup tambahkan file .mq4 ke instalasi MetaTrader anda di direktori Expert, misalnya /MetaTrader4/MQL4/Experts.

Expert Advisor akan tersedia di perangkat lunak MT4 anda dari menu Navigator di sisi kiri di bawah bagian expert.  

catatan:   Pastikan anda menguji akun demo. Akun sebenarnya akan berdagang dengan uang sungguhan, dan meski keuntungannya akan nyata, begitupun dengan kerugian.

Pengujian Balik

Cara menggunakan php trader ma
Cara menggunakan php trader ma
Cara menggunakan php trader ma

ika anda menguji strategi pada tahun terakhir kabel (GBP/USD) dan menemukan rasio keuntungan berada di atas 1 (berarti anda menghasilkan uang), maka anda bisa berada di hal yang baik.  

Apakah ini akan berhasil di dunia nyata adalah pertanyaan lain, dan mengapa pengujian maju sama pentingnya, seperti  Pengujian skor Z . Itu topik ke depan untuk mesin belajar algoritma anda, yang tidak akan dibahas di sini, namun pada panduan selanjutnya.

Cara Memulai Tes Balik

Gunakan pintasan Kontrol-R untuk membuka Strategy Tester atau memilihnya dari menu View. Panel penguji akan terbuka di bagian bawah jendela anda.

Dari sini, anda bisa memilih algoritma yang akan dijalankan di menu dropdown pertama, jadi pilihlah nama file Expert Advisor yang telah anda buat di sini.  Selanjutnya, anda bisa memilih simbol (instrumen keuangan). Saya akan menguji simbol forex GBPUSD dari British Pound untuk pasangan dolar AS

Kita juga bisa memilih resolusi periode waktu untuk berjalan pada (periode 15 menit, periode 1 jam, periode 1 hari, dan seterusnya). Saya akan menggunakan setting 30 menit.

Akhirnya, kita memiliki pilihan untuk pemodelan pada Every TickControl Points, atau Open Prices. Saat menulis naskah anda, anda dapat memilih Open Prices karena dengan cepat akan melakukan tes anda-walaupun hasilnya belum selayak perbankan uang sungguhan!

Untuk ini, saat anda mencari tes nyata sebelum melakukan pengujian lanjutan, sebaiknya jalankan Every Tick. Ini akan memakan waktu lebih lama untuk diproses! (Anda bisa membiarkannya berjalan di VPN MT4 secara online atau tentu saja semalam di mesin lokal anda jika anda ingin.)

Memodifikasi Parameter

Kami mengatur beberapa parameter (PeriodOne dan PeriodTwo) untuk expert advisor kami sehingga periode waktu dari dua Moving Averages dapat dimodifikasi.  

Ini dapat diakses melalui tester Strategi dengan mengklik Experct Properties tombol dan melihat tab Input.  

Nilai numerik dapat diberikan untuk setiap parameter di sini-defaultnya adalah PeriodOne = 40 dan PeriodTwo = 100.

Pengujian maju

Begitu anda telah menguji lebih dari data historis, anda bisa mulai menguji dengan pasar live seperti yang telah anda lihat jika gagasan anda melewati badai dari tes balik - dan (semoga)  telah menemukan kepercayaan diri pada apa yang anda yakini sebagai strategi kemenangan!

Di pasar live, anda mungkin mendapati strategi anda biasa saja karena unsur-unsur yang tidak anda pikirkan dalam tes sebelumnya.  Ingat  pasar selalu benar. Kode anda tidak pernah lebih cerdas dari pada pasar, dan tidak ada yang namanya beruntung dalam perdagangan.  

Sebuah tes maju benar-benar tes asam untuk melihat apakah strategi tersebut akan menguntungkan anda untuk menghasilkan uang sesungguhnya.

Uji maju biasanya paling baik dilakukan pada VPN khusus untuk MT4 EA (Expert Advisors) yang sering diberikan gratis oleh kebanyakan broker FX. Script akan berjalan 24/5 sewaktu pasar terbuka, dan anda akan dapat memantau perdagangan hidup dengan masuk ke akun dari terminal karena ia akan berjalan di perangkat mobile anda melalui MT4  mesin app-atau desktop melalui perangkat lunak MT4.

Volatilitas tinggi

Apa yang bisa menjadi pembunuh nyata bagi skrip kita adalah volatilitas tinggi di pasar, yang bisa terjadi dari banyak faktor luar.  

Misalnya, ada benturan atau flash crash, perang, pemilihan, kenaikan suku bunga, imbal hasil obligasi atau laporan ekonomi penting seperti CPI, GDP atau perubahan pada sistem perpajakan tersebut akan menyebabkan perubahan besar di seluruh ekonomi global dan banyak pasar keuangan.  Jadi, secara tidak langsung, perdagangan anda dalam satu pasangan mata uang atau keamanan dapat dipengaruhi oleh peristiwa negara lain, yang mungkin tidak anda duga sebelumnya.

Baru-baru ini, Brexit dan nanti Investigasi FBI Hillary Clinton menjelang pemilu AS adalah contoh volatilitas tinggi di pasar bagi siapa saja yang tertarik untuk melihat lebih dekat.  

Cara menggunakan php trader ma
Cara menggunakan php trader ma
Cara menggunakan php trader ma

Mari bawa kasus Brexit. Publik Inggris tampaknya percaya pada mayoritas bahwa pemungutan suara Brexit akan sangat tidak mungkin terjadi.  Saya tidak begitu optimis dan menarik semua pound saya keluar, menghemat banyak ekuitas saya di Inggris karena nilai tukar yang menurun.  

Sedangkan untuk orang lain, saya takut mengatakan bahwa mereka tidak seberuntung itu. Lindung nilai pada pemungutan suara tetap - karena beberapa penasihat bank besar telah menyatakan - tentu saja hasilnya akan terbalik, dan kehilangan sekitar 15% dari jumlah yang diberikan dalam pound, saat mereka menunggu semuanya sampai pulih.

Situasi seperti ini sangat ideal untuk mematikan robot trading anda dan hanya melakukan perdagangan di luar volatilitas pasar yang tinggi. Pengkodean untuk jenis hasil ini akan sangat sulit dilakukan secara otomatis pada indikator terdepan atau tertinggal dan lebih baik diperdagangkan setelah kejadian atau secara manual.  Kemungkinan sinyal palsu atau kontradiktif selalu lebih tinggi selama peristiwa besar, dan pendekatan fundamental manual bukan pendekatan teknis mungkin lebih menguntungkan.

Tidak ada yang salah dengan menjeda robot anda karena anda sedang mengalami krisis. Ini bisa menghemat kerugian, sementara di sisi lain, hal itu mungkin membuat anda kehilangan kemenangan besar.  Menurut pengalaman saya, kemungkinan menang jauh lebih ramping, karena ketidakpastian dan kemungkinan margin call atau mengenai stop loss anda. Sebelum perdagangan bisa maju karena lonjakan sesaat yang ekstrem

Kesimpulan

Kami telah meletakkan beberapa dasar-dasar penulisan algoritma perdagangan dan mengenalkan banyak gagasan baru. Dari berjalan melalui kode ini, saya harap sekarang anda dapat melihat cara kerja dalam algoritma MQL4, dan melihat bagaimana indikator teknis seperti moving average digunakan untuk menghasilkan sinyal masuk dan keluar.  

Dalam hal pengelolaan uang, kita telah melewati kemungkinan termasuk kondisi break-even dan ukuran lot yang dinamis untuk menggunakan seperlima dari ekuitas yang tersedia. Jangan ragu untuk men-tweak bagian kode ini sesuai keinginan anda untuk mengambil risiko.  Kami telah melampaui strategi pengujian ulang tester MT4 dan membuka pintu untuk potensi pengujian maju dan bahkan pengujian Z-score di masa depan, yang semuanya penting sebelum ditayangkan.

Dengan tuning yang lebih baik dan penelitian, anda mungkin bisa memiliki pengalaman yang sangat menguntungkan di pasar suatu hari nanti. Sekarang setelah anda memiliki expert advisor dasar yang baik sebagai skrip dasar, anda bisa mulai menulis strategi anda sendiri ke dalam bahasa MQL4 - dan menguji apakah mereka benar-benar bekerja sebaik yang anda rasakan seharusnya, atau seperti beberapa buku perdagangan dan mentor singgung! 

Ke depan, anda pasti ingin menguji algoritma anda lebih banyak sebelum melakukan uang sungguhan untuk itu. Setelah anda merasa cukup percaya diri bahwa anda memiliki skrip berperforma bagus, anda mungkin juga ingin bergabung dengan komunitas untuk membuat ide-ide anda lebih lanjut dan membantu brainstorm, atau mengambil algoritma lain untuk melihat cara kerja mereka dan bagaimana anda bisa menggabungkan mereka ke dalam strategi Anda.  

Berbagi Expert advisor dengan pedagang lain adalah cara terbaik untuk berkolaborasi dan melihat bagaimana orang lain menulis algoritme mereka untuk kebanyakan indikator teknis di luar sana seperti MACD, RSI, CCI, ADX, Bollinger Bands dan Ichimoku ... daftarnya terus berlanjut. dan terus

Mungkin di masa depan, jika anda cukup percaya diri, Anda mungkin ingin menjual skrip anda kepada orang lain, dalam hal ini  Pasar MT4 atau di situs anda sendiri bisa menjadi tempat yang ideal untuk memulai!

Untuk melakukan pengujian lebih lanjut, saya sangat merekomendasikan anda download semua data pasar sebelumnya dan muat ke MT4 sehingga bisa melakukan tes balik yang lebih teliti. Untuk informasi lebih lanjut, silakan merujuk ke panduan ini, dan nikmatilah trading!

sangkalan: Artikel ini tidak dimaksudkan sebagai investasi atau saran keuangan -itu ditujukan murni sebagai tutorial teknis untuk pembuatan perangkat lunak dan penelitian. Kode yang diberikan untuk tujuan pendidikan saja, seperti apa adanya, tanpa garansi.