Autolot Sırlarım. Dinamik Lot veya Autolot.

Göstergede uyarı. Göstergenize Uyarı ve Ok nasıl eklenir?
Market MQL5. Expert Advisor kurulumunda sorun ve hatalar ve çözümleri
Göstergede uyarı. Göstergenize Uyarı ve Ok nasıl eklenir?
Market MQL5. Expert Advisor kurulumunda sorun ve hatalar ve çözümleri

Açıklama

Bu makalede, farklı para çiftleri ve çeşitli mevduat türleri üzerinden Serbest Marj‘ın bir yüzdesi (Risk %) temel alınarak lot büyüklüğünü hesaplama yöntemlerimi açıklayacağım. Autolot veya bakiyeden dinamik lot. RiskManager. Size Autolot kodumu göstereceğim.

Hadi başlayalım:

Temel Kavramlar:

İlk olarak, bu hesaplamada kullanılan birkaç kavramı vurgulayalım:

Serbest Marj ( AccountFreeMargin() ) – açık pozisyonlarda teminat olarak kullanılmayan fonlardır. Serbest Marj, şu formülle hesaplanır: Serbest Marj = Mevcut Mevduat Bakiyesi – Açık Pozisyonlar için Gereken Marj. Bu gösterge, mevcut anda açılabilecek işlem sayısını belirler.

Alış (Ask), bir finansal aracın belirli bir miktarını brokerdan satın aldığınız fiyattır. Broker, bu fiyat üzerinden size satar. Forex piyasasında işlem yaparken, bu tür fiyatlarla her yerde karşılaşacaksınız: işlem terminalinden hisse raporlarına ve finansal piyasalarla ilgili analitik makalelere kadar.

Satış (Bid), bir finansal aracın belirli bir miktarını brokerınıza sattığınız fiyattır. Broker, bu fiyat üzerinden sizden satın alır. Forex piyasasında işlem yaparken, uluslararası Forex piyasasıyla ilgili tartışmaların geçtiği her yerde bu tür fiyatlarla karşılaşacaksınız: işlem terminalinden brokerınızın web sitesindeki döviz kurlarına, uluslararası finansal piyasalarla ilgili hisse raporlarına ve analitik makalelere kadar.

Kaldıraç, teminat miktarının borç alınan miktara oranıdır. İlk olarak kaldıraç seçerken, kaldıraç büyüklüğünü seçersiniz; bu, müşterinin mevduatının katlanarak arttırılacağını ve Forex piyasasında işlem yapabileceğini gösterir. Müşteri, 1:1’den 1:500’e kadar kaldıraç seçebilir; bu, müşterinin sadece kendi fonlarıyla işlem yapabileceği veya bu miktarla piyasaya girmek için mevduatını 500 kata kadar artırmasını talep edebileceği anlamına gelir. Kaldıraç, bir trader’ın piyasaya girdiği miktarın mevduat büyüklüğüne oranı olarak, trader’ın sermayesini önemli ölçüde artırmasına olanak tanıdığı için işlem sürecinde kritik bir rol oynar.

Para Çifti, birlikte bir döviz kuru oluşturan iki para biriminin adlandırılmasıdır. Para çifti, finansal işlemler için bir nesne görevi görür. Bir para çifti, çifti oluşturan iki para biriminin ardışık adlandırmalarıyla belirtilir; birlikte veya eğik çizgi ile ayrılarak şu biçimde yazılır: temel para birimi / teklif para birimi. Temel para birimi, ilk olarak alınıp satılan para birimidir ve teklif para birimi, temel para biriminin fiyatını ifade etmek için kullanılır. Para çifti, döviz piyasasının temel kavramıdır ve bu piyasayla ilgili her yerde mevcuttur: piyasa raporlarından işlem terminaline kadar.

Lot Büyüklüğü – temel para biriminin, emtianın hacmi veya sözleşme şartnamesinde belirtilen hisse sayısıdır. Lot büyüklüğü, sözleşmede belirtilen para miktarına bağlıdır ve işlem sözleşmesinin büyüklüğünü belirlemek için bir ölçü birimidir. Bir lot, Forex piyasasında finansal işlemlerde kullanılan para miktarını belirlemek için kullanılan belirli bir boyuta sahiptir. Bir işlem gerçekleştirmek için, Müşteri, lot sayısı cinsinden ifade edilen işlemin büyüklüğünü belirler. Bir ticaret işleminin hacmi, işlemi oluşturacak para miktarını gösterir. Bir lot, sözleşmenin büyüklüğüdür; Forex ticaretinde kullanılan sabit bir para miktarıdır.

İki para birimi arasındaki döviz kuru, belirli bir zamanda arz ve talep etkileşimiyle belirlenir.
Bu sürece döviz kotasyonu denir ve kotasyonlar düz veya ters olabilir.

Bir düz kotasyon, yabancı bir para biriminin ulusal para birimi cinsinden fiyatını yansıtır.
Çoğu döviz kuru, çeşitli ülkelerin para birimlerine karşı ABD dolarının düz kotasyonları olarak ifade edilir.

Örneğin, USD/UAH—30.70, bir ABD dolarının 30.70 Ukrayna grivnasına eşit olduğu anlamına gelir,
ve USD/CHF—1.0850 bir ABD dolarının 1.0850 İsviçre frangına eşit olduğunu gösterir.

Bir ters kotasyon, ulusal para biriminin değerini bir yabancı para birimi cinsinden ifade eder.
Tarihsel olarak, İngiliz sterlini, euro, Avustralya doları ve Yeni Zelanda doları gibi para birimleri bu şekilde kotasyon yapılmıştır.

Örneğin, EUR/USD—1.3374, bir euro‘nun 1.3374 ABD doları değerinde olduğunu,
ve GBP/USD—1.5970 bir İngiliz sterlini‘nin 1.5970 ABD dolarına eşit olduğunu ifade eder.

Ayrıca, ABD dolarının ne temel ne de teklif edilen para birimi olduğu çapraz döviz kuru kavramı da vardır.
Örnekler arasında EUR/JPY, GBP/CHF ve EUR/GBP bulunmaktadır.

Teknik Taraf

  1. NormalizeDouble – Belirtilen hassasiyete yuvarlamak için kayan noktalı sayıyı yuvarlar.
  2. MODE_LOTSIZE – Araç temel para birimindeki sözleşme büyüklüğü.
  3. MODE_LOTSTEP – Lot büyüklüğünü değiştirmek için adım.
  4. AccountCurrency – Mevcut hesap için para birimi adını döndürür.
  5. MathFloor – Fonksiyon, x’den küçük veya ona eşit en büyük tam sayıyı döndürür.


Önemli: Tüm hesaplamaların doğru olmasını sağlamak için “Piyasa İzleme” panelinde tüm sembolleri etkinleştirin :

Hesap Para Birimi için Hesaplama Formülüm

Hesaplama formülüm şöyle görünüyor:

USD Mevduatı

USD Mevduat Doğrudan Kotasyonu ()

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

USD Mevduat Ters Kotasyonu()

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

USD Mevduat Çapraz Kuru:

Seçenek 1: Eğer temel para biriminin + USD’nin mevcut bir fiyatı varsa (örneğin, hesaplama çifti AUDCAD ise, temel para biriminin mevcut fiyatı = AUDUSD)

Lot = Free Margin * Risk * Leverage / (Current Base Currency Price + USD) / 100 / Contract Size

Seçenek 2: Eğer temel para biriminin + USD’nin mevcut bir fiyatı yoksa (örneğin, CADJPY)

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

EUR Mevduatı

EUR Mevduat Doğrudan Kotasyonu

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

EUR Mevduat Çapraz Kuru:

Mevcut fiyat = EUR + teklif para birimi (örneğin, hesaplama çifti AUDCAD ise, mevcut fiyat teklif para birimi = EURAUD)

Lot = Free Margin * Risk * Leverage / (current price EUR + quote currency) / 100 / Contract Size

UAH Mevduatı ve Diğerleri

UAH Mevduat Ters Kotasyonu (örneğin, USDUAH)

Lot = MathFloor(Free Margin * Risk * Leverage / 100 / Current Price / Contract Size / Lot Step / 20) * Lot Step

UAH Mevduat Çapraz (örneğin, EURGBP)

Mevcut fiyat = 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;

Bu fonksiyonların sırası, farklı mevduatlarda parametrelerin hesaplanmasıyla belirlendi.

Bu hesaplamalar için önerileriniz varsa, lütfen programlama siparişi verirken Autolot fonksiyonlarınızı paylaşın.

Veya Freelance: MetaTrader ve MQL’de Özel Programlama! Tamam mı?

Dış Değişkenler Autolot Hesaplama Fonksiyonu:

LotlarBir pozisyon açmak için sabit lot.
RiskLotType
TypeAutolot
Autolot Hesaplama Türü:
BALANCE (Bakiyeden Risk) – Autolot mevcut bakiyeden hesaplanır. Lot hesaplaması hesap bakiyesine dayanır. Hesapta açık pozisyonlar varsa, sonraki lot yaklaşık olarak aynı olacaktır çünkü bakiye mevcut açık pozisyon sayısından azalmaz!
FREEMARGIN (Serbest Marjdan Risk) – Mevcut serbest marjdan standart lot hesaplaması, hesapta açık pozisyon sayısı arttıkça, sonraki pozisyon için hesaplanan lotun küçülmesidir. Bunun nedeni, pozisyon açıldığında serbest marjın azalmasıdır, bu yüzden her yeni açık pozisyon Autolot hesaplanırken daha küçük bir lota sahiptir.

RiskLot Seçeneği için Risk Hesaplama Türü:

Mevcut modlar:
RiskLotType = 0, // Serbest Marjdan Risk
RiskLotType = 1, // Bakiyeden Risk
DynamicLotAçık bir pozisyon için dinamik lot, Autolot.
Serbest marjın yüzdesi ve diğer faktörler olarak dinamik lot hesaplamayı AÇIK yapabilirsiniz.
Autolot Hesaplamamız:
Formül ve kod: https://expforex.com/tr/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-4
DynamicLotStopLossSL’den Risk – Stop Loss’u dikkate alarak otomatik lot hesaplar.
Stop Loss’ta bir işlemi kapatırken bakiye yüzdesi olarak maksimum kayıp.
Lot hesaplanırken, Expert Advisor işlem açılırken stop loss’u dikkate alır.
İşlem stop loss’ta kapanırsa, bu işlemden oluşan kayıp, işlem açıldığında bakiyenin yüzdesine eşit olur.
Önemli! Stop loss’unuz işlem açıldıktan sonra değiştirilirse, işlemin lot büyüklüğü değiştirilemez. İşlemi kapatırken, kayıp artabilir veya azalabilir.
Önemli! Bir Trailing Stop kullanırsanız, işlemin Stop Loss’u her tik ile değişir, ancak lot büyüklüğü değiştirilemez.
Formül ve kod: https://expforex.com/tr/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-5
LotBalancePcnt
RiskLot
LotBalancePercent
Autolot için Yüzde.
Dinamik lot (Autolot) fonksiyonu için yüzde.

Eğer RiskLot = 0 ise, işlemin LOT (Hacmi) Lot parametresine göre hesaplanacaktır.

Eğer RiskLot 0’a eşit değilse, müşteri terminalinde işlemler, müşterinin serbest marjının bir yüzdesi olarak lot ile açılacaktır (Autolot).
RiskRatePara biriminizin dolar (veya hesap para biriminiz) karşısındaki oranı.

Varsayılan olarak, RiskRate = 0’dır; bu, Expert Advisor‘ın Piyasa İncelemesi’nde doğru oranı bulmaya çalışacağı anlamına gelir.
Tüm para çiftlerinde Autolot‘un iyi çalışması için, Market Watch‘de “Tüm Para Çiftlerini Göster” seçeneğini AÇIK yapmanız gerekir.
MaxLotExpert Advisor‘ın ilk ana pozisyon için Autolot ve Martingale hesaplanırken açabileceği maksimum lot.
MartinMartingale. Kayıpta kapanan son pozisyonun lotunun standart çarpımı.

Eğer Martin = 1, martingale etkinleşmez (Sabit lotlar).
Eğer Martin = 0, Expert Advisor sonraki pozisyonu açamaz.
Eğer Martin = 2, ilk lot = 0.1, ikinci lot = 0.2 ve devamı: 0.4 – 0.8 – 1.6 – 3.2 – 6.4…..
Eğer Martin = 0.5, ilk lot = 1, ikinci lot = 0.5 ve devamı: 0.25 – 0.125.

Kod mu gerekiyor?

Autolot Hesaplama Kod Fonksiyonu:

input  double                    Lots=0.01;                                //Lots --> Açılan pozisyonlar ve emirler için sabit lot
input bool DynamicLot=false; //DynamicLot --> Serbest marjinden lot hesaplama
input bool DynamicLotStopLoss=false; //DynamicLotStopLoss --> StopLoss ve serbest marjinden lot hesaplama
input double LotBalancePercent=1; //LotBalancePercent --> Lot hesaplama için yüzde
extern double RiskRate=0; //RiskRate --> Lot hesaplama için sembol kur oranı
input double MaxLot=999; //MaxLot --> Pozisyon açarken maksimum lot

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() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else if (StringSubstr(Symbol(), 3, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
{
pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
if (pr != 0)
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
}
}

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

if (Valdepo == "UAH")
{
if (StringSubstr(Symbol(), 0, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else if (StringSubstr(Symbol(), 3, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * 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 * LotBalancePcnt * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * 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));
}

Stoploss Autolot Hesaplama Fonksiyonu:

Eğer EA’nza stop loss Autolot fonksiyonelliği eklemek istiyorsanız, kodumuzu indirebilirsiniz:

StopLosssd = Stop Loss noktalar cinsinden

Dış Değişkenler:

Lots = 0.1; // Sabit lot

DynamicLotStopLoss = // true/false

LotBalancePcnt (RiskLot) = 20; // % serbest marj
 

Fonksiyon:

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));
    }
    

Sorular?

Herhangi bir sorunuz varsa, lütfen sorun. Size gizli bir şey satmıyoruz.

Ürünlerimizin her biri satın almadan önce test edilebilir.

Ürünlerimize olan ilginiz ve desteğiniz için teşekkür ederiz ve yüksek kalite standartlarını korumaya çalışıyoruz.

Bizimle olduğunuz için teşekkür ederiz!

Bir sorunuz mu var?

Leave a Reply

Your email address will not be published. Required fields are marked *

2 responses to “Autolot Sırlarım. Dinamik Lot veya Autolot.”

  1. erik Avatar
    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.

This post is also available in: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어


     

    Risk Uyarısı:


    Geçmiş işlem performansı gelecekteki sonuçları garanti etmez.

    Teminatlı döviz ticareti yüksek derecede risk taşır ve tüm yatırımcılar için uygun olmayabilir.

    Ticaret robotlarını kullanmanın önemli risk içerdiğini ve ilk yatırımınızdan daha fazlasını kaybedebileceğinizi unutmayın.

    Lütfen dikkatli davranın, mali durumunuzu dikkatle değerlendirin ve kalifiye bir profesyonelden tavsiye almayı düşünün.

    Sorumluluk Reddi

    Bu web sitesi deneyiminizi geliştirmek için çerezler kullanmaktadır. Bu web sitesini kullanarak, Veri Koruma Politikamızı ve Feragatnamemizi kabul etmiş olursunuz.
    Devamını oku