My Autolot Secrets. Dynamic Lot atau Autolot. Risiko dari Balance.

Peringatan pada indikator. Bagaimana cara memasukkan Peringatan dan Panah ke indikator Anda?
Market MQL5. Masalah dan kesalahan dalam menginstal Penasehat Ahli (Expert Advisor) dan solusinya
Peringatan pada indikator. Bagaimana cara memasukkan Peringatan dan Panah ke indikator Anda?
Market MQL5. Masalah dan kesalahan dalam menginstal Penasehat Ahli (Expert Advisor) dan solusinya

Description

Dalam artikel ini, saya akan menjelaskan metode saya untuk menghitung ukuran lot berdasarkan persentase (Risk in %) dari Margin Bebas (Free Margin) pada berbagai pasangan mata uang dan jenis deposit. Autolot atau Dynamic lot dari balance. RiskManager. Saya akan menunjukkan kode Autolot saya.

Mari kita mulai:

Basic Concepts:

Pertama, mari kita soroti beberapa konsep yang digunakan dalam perhitungan ini:

Free Margin (AccountFreeMargin()) – dana yang tidak digunakan sebagai jaminan pada posisi terbuka. Margin Bebas dihitung dengan rumus: Free Margin = Saldo Deposit Saat Ini – Margin yang Diperlukan untuk Posisi Terbuka. Indikator ini menentukan berapa banyak transaksi yang dapat dibuka pada saat ini.

Ask adalah harga di mana Anda membeli sejumlah instrumen keuangan dari broker. Broker menjualnya kepada Anda pada harga ini. Saat trading di pasar Forex, Anda akan menemui jenis harga ini di mana-mana: mulai dari terminal trading hingga laporan bursa dan artikel analisis pasar keuangan.

Bid adalah harga di mana Anda menjual sejumlah instrumen keuangan kepada broker Anda. Broker membelinya dari Anda pada harga tersebut. Saat trading di pasar Forex, Anda akan menemui jenis harga ini di mana pun terjadi pembahasan tentang pasar Forex internasional: dari terminal trading dan kurs di situs broker Anda hingga laporan bursa dan artikel analisis di pasar keuangan internasional.

Leverage adalah rasio antara jumlah jaminan dan jumlah dana yang dipinjamkan. Saat Anda memilih leverage untuk pertama kalinya, Anda menentukan ukuran leverage yang menunjukkan pengali (multiplier) di mana saldo deposit Klien akan ditingkatkan untuk melakukan operasi trading di pasar Forex. Klien dapat memilih leverage dari 1:1 hingga 1:500, artinya Klien dapat trading hanya dengan dananya sendiri atau meminta peningkatan deposit hingga 500 kali lipat untuk masuk ke pasar dengan jumlah ini. Leverage, sebagai rasio antara jumlah yang digunakan trader untuk masuk pasar dan ukuran depositnya, berperan penting dalam proses trading karena memungkinkan seorang trader meningkatkan modalnya secara signifikan.

Sebuah Currency Pair adalah penunjukan dua mata uang yang bersama-sama membentuk nilai tukar. Pasangan mata uang ini menjadi objek untuk transaksi keuangan. Sebuah pasangan mata uang ditulis dengan menyertakan dua mata uang yang membentuk pasangan tersebut, dituliskan bersama atau dipisahkan oleh garis miring dalam bentuk: base currency / quote currency. Base currency adalah mata uang pertama yang dibeli dan dijual, sementara quote currency digunakan untuk mengekspresikan harga base currency. Pasangan mata uang adalah konsep fundamental di pasar valuta asing, yang ada di mana-mana selama berkaitan dengan pasar ini: mulai dari laporan pasar hingga terminal trading.

Lot Size – volume mata uang dasar, komoditas, atau jumlah saham yang ditentukan dalam spesifikasi kontrak. Ukuran lot tergantung pada jumlah mata uang yang disebutkan dalam kontrak dan menjadi satuan ukuran untuk menentukan besar kontrak trading. Satu lot memiliki ukuran tertentu, yang digunakan untuk menentukan jumlah mata uang yang digunakan untuk transaksi keuangan di pasar Forex. Untuk mengeksekusi transaksi, Klien menentukan ukuran transaksi yang diekspresikan dalam jumlah lot. Volume transaksi menunjukkan seberapa banyak mata uang yang akan membentuk transaksi tersebut. Lot adalah ukuran kontrak, sejumlah mata uang tetap yang digunakan dalam trading Forex.

Nilai tukar antara dua mata uang ditentukan oleh interaksi penawaran dan permintaan pada waktu tertentu.
Proses ini dikenal sebagai currency quoting, di mana kuotasi bisa direct atau reversed.

Sebuah direct quotation merefleksikan harga mata uang asing dalam satuan mata uang nasional.
Kebanyakan nilai tukar diekspresikan sebagai direct quotes dari dolar AS terhadap mata uang negara lainnya.

Contohnya, USD/UAH—30.70 berarti satu dolar AS bernilai 30.70 hryvnia Ukraina,
dan USD/CHF—1.0850 menunjukkan satu dolar AS setara dengan 1.0850 franc Swiss.

Sebuah reverse quotation mengekspresikan nilai mata uang nasional dalam mata uang asing.
Secara historis, mata uang seperti British pound, euro, dolar Australia, dan dolar Selandia Baru sering dikutip dengan cara ini.

Misalnya, EUR/USD—1.3374 menandakan bahwa satu euro bernilai 1.3374 dolar AS,
sementara GBP/USD—1.5970 berarti satu British pound sama dengan 1.5970 dolar AS.

Ada juga konsep cross exchange rate, di mana dolar AS tidak menjadi base maupun quoted currency.
Contoh: EUR/JPY, GBP/CHF, dan EUR/GBP.

Technical Side

  1. NormalizeDouble – Membulatkan angka pecahan ke presisi yang ditentukan.
  2. MODE_LOTSIZE – Ukuran kontrak dalam mata uang dasar instrumen.
  3. MODE_LOTSTEP – Langkah perubahan ukuran lot.
  4. AccountCurrency – Mengembalikan nama mata uang untuk akun saat ini.
  5. MathFloor – Fungsi yang mengembalikan integer terbesar yang kurang dari atau sama dengan x.


Hal Penting: Untuk memastikan semua perhitungan akurat, aktifkan semua simbol di panel “Market Watch”:

Tampilkan semua simbol di Market Watch untuk Autolot Forex

Formula Perhitungan Saya untuk Mata Uang Akun

Rumus perhitungan saya seperti ini:

Deposit USD

Deposit USD Direct Quote ()

Lot = Free Margin * Risk * Leverage / 100 / Contract Size

Deposit USD Back Quote()

Lot = Free Margin * Risk * Leverage / Ask / 100 / Contract Size

Deposit USD Cross Rate:

Opsi 1: Jika ada harga saat ini dari base currency + USD (contoh, jika pair settlement adalah AUDCAD, maka harga saat ini base currency = AUDUSD)

Lot = Free Margin * Risk * Leverage / (Harga Mata Uang Dasar Saat Ini + USD) / 100 / Contract Size

Opsi 2: Jika tidak ada harga saat ini dari base currency + USD (contoh, CADJPY)

Lot = Free Margin * Risk * Leverage / 100 / Contract Size

Deposit EUR

Deposit EUR Direct Quote

Lot = Free Margin * Risk * Leverage / 100 / Contract Size

Deposit EUR Cross Rate:

Harga saat ini = EUR + quote currency (contoh, jika pair settlement adalah AUDCAD, maka harga saat ini quote currency = EURAUD)

Lot = Free Margin * Risk * Leverage / (harga saat ini EUR + quote currency) / 100 / Contract Size

Deposit UAH dan Lainnya

Deposit UAH Back Quote (contoh, USDUAH)

Lot = MathFloor(Free Margin * Risk * Leverage / 100 / Harga Saat Ini / Contract Size / Lot Step / 20) * Lot Step

Deposit UAH Cross (mis. EURGBP)

Harga saat ini = MarketInfo(StringSubstr(Symbol(), 0, 3) + UAH + StringSubstr(Symbol(), 6), MODE_BID);

if(pr != 0) Lot2 = MathFloor(Free Margin * Risk * Leverage / Current Price / 100 / Contract Size / Lot Step) * Lot Step;
else Lot = MathFloor(Free Margin * Risk * Leverage / 100 / Contract Size / Lot Step) * Lot Step;

Urutan fungsi-fungsi tersebut ditentukan dengan menghitung parameter pada berbagai deposit.

Jika Anda memiliki saran untuk perhitungan ini, silakan bagikan fungsi Autolot Anda saat memesan pemrograman.

Atau Freelance: Pemrograman Kustom di MetaTrader dan MQL! Selesai?

External Variables Fungsi Perhitungan Autolot:

LotsLot tetap untuk membuka posisi.
RiskLotType
TypeAutolot
Jenis Perhitungan Autolot:
BALANCE (Risiko dari Balance) – Autolot dihitung dari balance saat ini. Perhitungan lot didasarkan pada saldo akun. Jika ada posisi terbuka di akun, lot berikutnya akan kurang lebih sama karena balance tidak berkurang dari jumlah posisi terbuka!
FREEMARGIN (Risiko dari Margin Bebas) – Perhitungan lot standar dari margin bebas saat ini adalah semakin banyak posisi terbuka di akun, semakin kecil lot yang dihitung untuk posisi berikutnya. Hal ini karena saat membuka posisi, margin bebas menurun, sehingga setiap posisi baru akan memiliki lot lebih kecil saat menghitung Autolot.

Jenis Perhitungan Risiko untuk Opsi RiskLot:

Mode yang tersedia:
RiskLotType = 0, // Risk dari Free Margin
RiskLotType = 1, // Risk dari Balance
DynamicLotSebuah lot dinamis, Autolot, untuk membuka posisi.
Anda dapat mengaktifkan perhitungan lot dinamis sebagai persentase dari margin bebas dan faktor lainnya.
Perhitungan Autolot Kami:
Rumus dan kode: https://expforex.com/id/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-4
DynamicLotStopLossRisiko dari SL – Menghitung lot otomatis dengan memperhitungkan Stop Loss.
Kerugian maksimum sebagai persentase dari balance saat menutup deal di Stop Loss.
Saat menghitung lot, Expert Advisor kami memperhitungkan stop loss saat order dibuka.
Jika order ditutup di stop loss, kerugian dari order tersebut akan sama dengan persentase balance pada saat order dibuka.
Penting! Jika stop loss Anda diubah setelah order dibuka, ukuran lot order tidak dapat diubah. Saat order ditutup, kerugian bisa lebih besar atau lebih kecil.
Penting! Jika Anda menggunakan Trailing Stop, Stop Loss order akan berubah setiap tick, tetapi ukuran lot tidak bisa diubah.
Rumus dan kode: https://expforex.com/id/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-5
LotBalancePcnt
RiskLot
LotBalancePercent
Persentase untuk Autolot.
Persentase untuk fungsi lot dinamis (Autolot).

Jika RiskLot = 0, maka LOT (Volume) order akan dihitung berdasarkan parameter Lot.

Jika RiskLot tidak sama dengan 0, maka order di terminal klien akan dibuka dengan lot sebagai persentase dari margin bebas klien (Autolot).
RiskRateNilai kurs mata uang Anda terhadap dolar (atau mata uang akun Anda).

Secara default, RiskRate = 0, artinya Expert Advisor akan mencoba menemukan kurs yang benar di Market Review.
Agar Autolot berfungsi optimal pada semua pasangan mata uang, Anda perlu mengaktifkan “Show All Currency Pairs” di Market Watch.
Tampilkan semua simbol di Market Watch untuk Autolot Forex
MaxLotLot maksimum yang dapat dibuka oleh Expert Advisor saat menghitung Autolot dan Martingale untuk posisi utama pertama.
MartinMartingale. Perkalian standar lot dari posisi terakhir yang ditutup dalam kondisi rugi.

Jika Martin = 1, maka martingale tidak aktif (Fixed lots).
Jika Martin = 0, maka Expert Advisor tidak dapat membuka posisi berikutnya.
Jika Martin = 2, maka lot pertama = 0.1, lot kedua = 0.2, dan seterusnya: 0.4 – 0.8 – 1.6 – 3.2 – 6.4…..
Jika Martin = 0.5, maka lot pertama = 1, lot kedua = 0.5, dan seterusnya: 0.25 – 0.125.

Perlukah kode?

Kode Perhitungan Autolot Function:

input  double                    Lots=0.01;                                //Lots -->  Fixed lot of opened positions and orders
input bool                       DynamicLot=false;                         //DynamicLot --> The calculation lot from  free margin
input bool                       DynamicLotStopLoss=false;                 //DynamicLotStopLoss --> The calculation lot from StopLoss and free margin
input double                     LotBalancePercent=1;                      //LotBalancePercent --> Percentage for the calculation of the lot
extern double                    RiskRate=0;                               //RiskRate --> Symbol rate to deposit currency for lot calculation
input double                     MaxLot=999;                               //MaxLot --> Maximum lot when opening positions

double GetSizeLot(double ll=1) // The function returns the lot size
{
  string Author = "Author of function template: www.expforex.com";
  string lotcalc;
  double pr;
  string Valdepo = AccountCurrency();
  // If MM is enabled, then determine the lot size
  double Lot2, MinLots, MaxLots;
  int lotdig;
  if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) lotdig = 2; else lotdig = 1;
  
  if (Valdepo == "USD")
  {
    if (StringSubstr(Symbol(), 0, 3) == "USD")
      Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePercent * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    else if (StringSubstr(Symbol(), 3, 3) == "USD")
      Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePercent * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    else
    {
      pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
      if (pr != 0)
        Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePercent * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
      else
        Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePercent * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    }
  }

  if (Valdepo == "EUR")
  {
    if (StringSubstr(Symbol(), 0, 3) == "EUR")
      Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePercent * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    else
    {
      pr = MarketInfo("EUR" + StringSubstr(Symbol(), 0, 3), MODE_BID);
      if (pr != 0)
        Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePercent * AccountLeverage() * pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
      else
        Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePercent * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    }
  }

  if (Valdepo == "UAH")
  {
    if (StringSubstr(Symbol(), 0, 3) == "USD")
      Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePercent * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    else if (StringSubstr(Symbol(), 3, 3) == "USD")
      Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePercent * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    else
    {
      pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
      if (pr != 0)
        Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePercent * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
      else
        Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePercent * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    }
  }

  MinLots = MarketInfo(Symbol(), MODE_MINLOT);
  MaxLots = MaxLot;
  lotcalc = "Autolot=" + Lot2;
  if (!DynamicLot) Lot2 = Lots;

  if (Lot2 < MinLots) Lot2 = MinLots;
  if (Lot2 > MaxLots) Lot2 = MaxLots;
  lotcalc = lotcalc + " MinLots=" + MinLots + " LOT=" + NormalizeDouble(Lot2, lotdig);
  Print(lotcalc);
  return (NormalizeDouble(Lot2, lotdig));
}

Fungsi Perhitungan Autolot Stoploss:

Jika Anda ingin menambahkan fungsionalitas stop loss Autolot ke EA Anda, Anda dapat mengunduh kode kami:

StopLosssd = Stop Loss dalam poin

External Variables:

Lots = 0.1; // Fixed lot

DynamicLotStopLoss = // true/false

LotBalancePcnt (RiskLot) = 20; // % dari margin bebas
 

Function:

double GetSizeLotStopLoss(double StopLosssd=1) // The function returns the lot size
{
  string Author = "Author of function template: www.expforex.com";
  string Valdepo = AccountCurrency();
  // If MM is enabled, then determine the lot size
  double MinLots;
  int lotdig;
  if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) lotdig = 2; else lotdig = 1;
  double Free = AccountFreeMargin();
  double LotVal = MarketInfo(Symbol(), MODE_TICKVALUE); // Cost of 1 pip for 1 lot
  double Min_Lot = MarketInfo(Symbol(), MODE_MINLOT);
  double Max_Lot = MarketInfo(Symbol(), MODE_MAXLOT);
  double Step = MarketInfo(Symbol(), MODE_LOTSTEP);
  double Lot = MathFloor((Free * LotBalancePcnt / 100) / (StopLosssd * LotVal) / Step) * Step;
  MinLots = MarketInfo(Symbol(), MODE_MINLOT);

  if (Lot < MinLots) Lot = MinLots;

  return (NormalizeDouble(Lot, lotdig));
}

Questions?

Jika Anda memiliki pertanyaan, silakan ajukan. Kami tidak menjual kucing dalam karung.

Setiap produk kami dapat diuji sebelum pembelian.

Kami menghargai ketertarikan dan dukungan Anda pada produk kami, dan kami berupaya menjaga standar kualitas yang tinggi.

Terima kasih telah bersama kami!

Apakah Anda punya pertanyaan?

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

3 tanggapan untuk “My Autolot Secrets. Dynamic Lot atau Autolot. Risiko dari Balance.”

  1. Avatar erik
    erik

    I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.

  2. Avatar erik
    erik

    I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.

Postingan ini juga tersedia dalam: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어 العربية Indonesian ไทย Tiếng Việt


    Please wait, contacting ...

    Peringatan Risiko:


    Kinerja perdagangan masa lalu tidak menjamin hasil di masa depan.

    Perdagangan valuta asing dengan margin membawa tingkat risiko yang tinggi dan mungkin tidak cocok untuk semua investor.

    Harap diperhatikan bahwa penggunaan robot perdagangan (trading robots) melibatkan risiko yang signifikan, dan Anda bisa kehilangan lebih dari investasi awal Anda.

    Silakan lanjutkan dengan hati-hati, evaluasi situasi keuangan Anda dengan cermat, dan pertimbangkan untuk mencari nasihat dari profesional yang berkualitas.

    Disclaimer

    Situs web ini menggunakan cookie untuk meningkatkan pengalaman Anda. Dengan menggunakan situs web ini, Anda menyetujui Kebijakan Perlindungan Data dan Penafian kami.
    Baca Selengkapnya