Uzman Danışmanda Para Yönetimi için fonksiyonlar
Giriş
MQL5 dili, mql5 programının mevcut terminal koşulları ve ayrıca finansal enstrüman ve alım satım hesabı hakkında çok miktarda bilgi edinme fırsatı sunar. Sermaye yönetiminin fonksiyonlarını organize etmek için listelenen son iki bölümdeki özellikleri incelememiz ve aşağıdaki işlevler hakkında bilgi edinmemiz gerekecek:
- SymbolInfoInteger()
- SymbolInfoDouble()
- SymbolInfoString()
- AccountInfoInteger()
- AccountInfoDouble()
- AccountInfoString()
Hesap bakiyeniz hakkında bilgi edinme
Bir alım satım hesabının ilk iki önemli özelliği - bakiye ve hisse senedi. Bu değerleri elde etmek için AccountInfoDouble() fonksiyonunu kullanın:
double balance=AccountInfoDouble(ACCOUNT_BALANCE); double equity=AccountInfoDouble(ACCOUNT_EQUITY);
Bizi ilgilendiren bir sonraki şey, açık pozisyonlar için mevduat fonlarının büyüklüğü ve tüm açık pozisyonlar için hesaptaki toplam dalgalı kar veya zarardır.
double margin=AccountInfoDouble(ACCOUNT_MARGIN); double float_profit=AccountInfoDouble(ACCOUNT_PROFIT);
Yeni pozisyonlar açabilmek veya mevcut pozisyonları güçlendirebilmek için mevduata katılmayan serbest kaynaklara ihtiyacımız var.
double free_margin=AccountInfoDouble(ACCOUNT_FREEMARGIN);
Burada, yukarıdaki değerlerin parasal olarak ifade edildiğine dikkat edilmelidir.
AccountInfoDouble() fonksiyonu tarafından döndürülen parasal değerler, mevduat para birimi cinsinden ifade edilir. Yatırılan para birimini bulmak için AccountInfoString() fonksiyonunu kullanın.
string account_currency=AccountInfoString(ACCOUNT_CURRENCY);
Kişisel fonların seviyesi
Hesabın başka bir önemli özelliği daha vardır - Durdurma olayının gerçekleştiği seviye (açık pozisyonları sürdürmek için gerekli kişisel fon eksikliğinden dolayı pozisyonların zorunlu olarak kapatılması). Bu değeri elde etmek için AccountInfoDouble() fonksiyonunu yeniden kullanın:
double stopout_level=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
Fonksiyon yalnızca değerin kendisini verir ancak bu değerin ne tür birimlerle ifade edildiğini açıklamaz. Durdurma için iki seviye belirleme modu vardır: yüzde ve para birimi cinsinden. Bunu bulmak için AccountInfoInteger() fonksiyonunu kullanın:
//--- Get account currency string account_currency=AccountInfoString(ACCOUNT_CURRENCY); //--- Stop Out level double stopout_level=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO); //--- Stop Out mode ENUM_ACCOUNT_STOPOUT_MODE so_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE); if(so_mode==ACCOUNT_STOPOUT_MODE_PERCENT) PrintFormat("Stop Out level in percents %.2f%%",stopout_level); else PrintFormat("Stop Out level in currency %.2f %s",stopout_level,account_currency);
Hesapla ilgili ek bilgiler
Genellikle hesaplamalarda, alım satım hesabı kaldıracında sağlanan büyüklüğün bilinmesi gerekir. Bu bilgileri AccountInfoInteger() fonksiyonunu kullanarak elde edebilirsiniz:
int leverage=(int)AccountInfoInteger(ACCOUNT_LEVERAGE);Düzenlenmemiş Uzman Danışmanın yanlışlıkla gerçek bir hesapta çalıştırmamak için hesabın türünü bilmeniz gerekir.
ENUM_ACCOUNT_TRADE_MODE mode=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE); switch(mode) { case ACCOUNT_TRADE_MODE_DEMO: Comment("Account demo"); break; case ACCOUNT_TRADE_MODE_CONTEST: Comment(com,"Account Contest"); break; case ACCOUNT_TRADE_MODE_REAL: Comment(com,"Account Real"); break; default: Comment(com,"Account unknown type"); }Her hesapta alım satım yapılamaz, örneğin yarışma hesaplarında alım satım işlemleri ancak yarışma başladıktan sonra yapılabilir. Bu bilgi ayrıca AccountInfoInteger() fonksiyonu tarafından da elde edilebilir:
bool trade_allowed=(bool)AccountInfoInteger(ACCOUNT_TRADE_ALLOWED); if(trade_allowed) Print("Trade is allowed"); else Print(com,"Trade is not allowed");
Bu hesapta işlem yapılmasına izin verilse bile bu, Uzman Danışmanın işlem yapma hakkına sahip olduğu anlamına gelmez. Uzman Danışmanın işlem yapmasına izin verilip verilmediğini kontrol etmek için şunu yazın:
if(trade_allowed) { bool trade_expert=(bool)AccountInfoInteger(ACCOUNT_TRADE_EXPERT); if(trade_expert) Print("Experts are allowed to trade"); else Print("Experts are not allowed to trade");
Bu örnekler ekteki Uzman Danışman Account_Info.mq5 dosyasında bulunabilir. Herhangi bir karmaşıklıktaki MQL5 programlarında kullanılabilirler.
Enstrüman hakkında bilgiler
Her finansal enstrümanın kendi tanımları vardır ve bu enstrümanın karakterize ettiği bir yola yerleştirilir. Terminalde EURUSD özellikleri penceresini açarsak, şöyle bir şey göreceğiz:
Bu durumda EURUSD için açıklama - "EURUSD, Euro / ABD Doları" şeklindedir. Bu bilgiyi elde etmek için SymbolInfoString() fonksiyonunu kullanırız:
string symbol=SymbolInfoString(_Symbol,SYMBOL_DESCRIPTION); Print("Symbol: "+symbol); string symbol_path=SymbolInfoString(_Symbol,SYMBOL_PATH); Print("Path: "+symbol_path);
Standart bir sözleşmenin boyutunu öğrenmek için SymbolInfoDouble()'ı kullanın:
double lot_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE); Print("Standard contract: "+DoubleToString(lot_size,2));
Bu, bir para birimini satarken diğerini satın almak için FOREX enstrümanlarının bir özelliğidir. Sözleşme, satın alma işlemini gerçekleştirmek için gerekli olan para biriminde belirtilir. Bu bir temel para birimidir ve SymbolInfoString() fonksiyonu kullanılarak elde edilebilir:
string base_currency=SymbolInfoString(_Symbol,SYMBOL_CURRENCY_BASE); Print("Base currency: "+base_currency);
Enstrümandaki fiyat değişiklikleri, satın alınan varlıkların fiyatında bir değişikliğe ve dolayısıyla açık bir pozisyon için kâr varyasyonuna yol açar (pozisyon zarar ediyorsa kâr negatif olabilir). Böylece fiyat değişikliği, gelirde belirli bir para biriminde ifade edilen değişikliklere yol açar. Bu para birimine karşıt para birimi denir. EURUSD para birimi çifti için temel para birimi genellikle Euro'dur ve karşıt para birimi ABD dolarıdır. Karşıt para birimini elde etmek için SymbolInfoString() fonksiyonunu da kullanabilirsiniz:
string profit_currency=SymbolInfoString(_Symbol,SYMBOL_CURRENCY_PROFIT); Print("Currency quotes: "+profit_currency);
Enstrümanda bir pozisyon açmak için fonlara ihtiyacınız var ve bu fonlar da belirli bir para biriminde ifade ediliyor. Bu para birimine para birimi marjı veya mevduat denir. FOREX enstrümanları için marj ve temel para birimleri genellikle aynıdır. Yatırılan para biriminin değerini elde etmek için SymbolInfoString() fonksiyonunu kullanın:
string margin_currency=SymbolInfoString(_Symbol,SYMBOL_CURRENCY_MARGIN); Print("Currency deposit: "+margin_currency);
Tanımlanan tüm fonksiyonlar Uzman Danışmanın Symbol_Info.mq5 kodunda verilmiştir. Aşağıdaki şekil, Comment() fonksiyonunu kullanarak EURUSD sembolündeki bilgilerin çıktısını göstermektedir.
Mevduat boyutunun hesaplanması
Yatırımcıların en çok ihtiyaç duyduğu finansal enstrümanlar hakkında bilgi, üzerinde bir pozisyon açmak için gereken fonların büyüklüğüdür. Belirli sayıda lotu almak veya satmak için ne kadar para gerektiğini bilmeden, sermaye yönetimi için Uzman Danışmanın sistemini uygulayamayız. Ayrıca hesap bakiyesini kontrol etmek de zorlaşır.
Daha ayrıntılı incelemeyi anlamakta zorluk çekiyorsanız, Forex Trading ABC makalesini okumanızı tavsiye ederim. Oradaki açıklamalar bu makale için de geçerlidir.
Para birimi mevduatındaki marjın boyutunu hesaplamamız gerekiyor, yani elde edilen değeri verilen hesap kaldıraç miktarına bölerek mevduatı ipotek para biriminden mevduat para birimine göre yeniden hesaplamamız gerekiyor. Bunu yapmak için GetMarginForOpening() fonksiyonunu yazıyoruz://+------------------------------------------------------------------+ //| Return amount of equity needed to open position | //+------------------------------------------------------------------+ double GetMarginForOpening(double lot,string symbol,ENUM_POSITION_TYPE direction) { double answer=0; //--- ... //--- Return result - amount of equity in account currency, required to open position in specified volume return(answer); }
Burada:
- lot - açık pozisyonun hacmi;
- sembol - finansal enstrümanın ismi;
- iddia edilen pozisyon yönü.
- mevduat para birimi
- ipotek para birimi
- Para birimi fiyatları (Çapraz Para Birimi çiftleri için gerekli olabilir)
- sözleşme büyüklüğü
Bunu MQL5 dilinde yazın:
//--- Get contract size double lot_size=SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE); //--- Get account currency string account_currency=AccountInfoString(ACCOUNT_CURRENCY); //--- Margin currency string margin_currency=SymbolInfoString(_Symbol,SYMBOL_CURRENCY_MARGIN); //--- Profit currency string profit_currency=SymbolInfoString(_Symbol,SYMBOL_CURRENCY_PROFIT); //--- Calculation currency string calc_currency=""; //--- Reverse quote - true, Direct quote - false bool mode;
Mod değişkeni, mevduat para biriminde sözleşmenin boyutunu nasıl hesaplayacağımızı etkiler. Bunu örneklere dayanarak düşünün, diğer tüm durumlarda mevduat para biriminin ABD doları olduğunu varsayalım.
Para birimi çiftleri genellikle üç kategoriye ayrılır:
- Doğrudan Para Birimi Çiftleri - belirli bir para birimine göre ABD doları para birimi kuru. Örnekler: USDCHF, USDCAD, USDJPY, USDSEK;
- Ters Para Birimi Çifti - belirli bir para biriminin ABD dolarına göre para birimi kuru. Örnekler: EURUSD, GBPUSD, AUDUSD, NZDUSD;
- Çapraz Para Birimi Çiftleri - ABD dolarını içermeyen bir para birimi çifti. Örnekler: AUDCAD, EURJPY, EURCAD.
1. EURUSD - ters para birimi çifti
Karşıt para biriminin hesap para birimi olduğu para birimi çiftlerini ters para birimi çiftleri olarak adlandıracağız. Örneklerimizde, hesap para birimi ABD doları ile temsil edilmektedir, bu nedenle para birimi çiftlerini sınıflandırmamız genel kabul görmüş sınıflandırma ile örtüşecektir. Ancak alım satım hesabınız farklı bir para birimi kullanıyorsa (USD değil) örtüşmeyecektir. Bu durumda daha ayrıntılı açıklamaları anlamak için hesap para birimini dikkate alın.
EURUSD için sözleşme boyutu - 100.000 Euro. Mevduatın para birimi olan ABD doları cinsinden 100.000 Euro'yu ifade etmemiz gerekiyor. Bunu yapmak için Euro’nun dolar olarak sayılabileceği döviz kurunu bilmeniz gerekir. Konsept hesaplama para birimini, yani ipotek para birimini mevduat para birimine dönüştürmek için gereken para birimini devreye alıyoruz.
//--- Calculation currency string calc_currency="";
Neyse ki EURUSD para birimi çifti, Euro'nun dolar karşısındaki döviz kurunu gösterir ve bu nedenle, bu durumda ipotek boyutunu hesaplamanız gereken EURUSD sembolü tam olarak döviz kurudur:
//--- If profit currency and account currency are equal if(profit_currency==account_currency) { calc_currency=symbol; mode=true; }
Mod değerini doğru olarak belirledik, yani Euro'yu dolara aktarmak için (ipotek para birimi mevduat para birimine dönüştürülebilir), mevcut EURUSD döviz kurunu sözleşmenin boyutuyla çarpacağız. Mod = false ise sözleşme boyutunu, hesaplama para biriminin döviz kuruna böleriz. Enstrümandaki güncel fiyatları almak için SymbolInfoTick() fonksiyonunu kullanın.
//--- We know calculation currency, let's get its last prices MqlTick tick; SymbolInfoTick(calc_currency,tick);
Bu fonksiyon, güncel fiyatı ve fiyatların son güncelleme zamanını MqlTick türü değişkene koyar - bu yapı özellikle bu amaç için tasarlanmıştır.
Bu nedenle, bu sembol üzerindeki en son fiyatı elde etmek, sözleşmenin boyutu ve ardından lot sayısı ile çarpmanız yeterlidir. Ama bu enstrümanın bir alış fiyatı bir de satış fiyatı olduğunu düşünürsek hangi hesaplama fiyatını almalıyız? Mantıksal olarak: eğer satın alıyorsak, hesaplamalar için fiyat Satış fiyatına eşittir ve eğer satıyorsak, Alış fiyatını almamız gerekecektir.
//--- Now we have everything for calculation double calc_price; //--- Calculate for Buy if(direction==POSITION_TYPE_BUY) { //--- Reverse quote if(mode) { //--- Calculate using Buy price for reverse quote calc_price=tick.ask; answer=lot*lot_size*calc_price; } } //--- calculate for Sell if(direction==POSITION_TYPE_SELL) { //--- Reverse quote if(mode) { //--- Calculate using Sell price for reverse quote calc_price=tick.bid; answer=lot*lot_size*calc_price; } }
Bu nedenle örneğimizde EURUSD sembolü için mevduat para birimi Euro'dur, sözleşme boyutu 100.000'dir ve son Satış fiyatı = 1,2500'tir. Hesap para birimi - ABD doları ve hesaplama para birimi aynı EURUSD para birimi çiftidir. 100.000'i 1,2500 ile çarpın ve 125.000 ABD doları elde edin - Satış fiyatı =1,2500 ise 1 EURUSD lot satın almak için standart bir sözleşme tam olarak bu kadardır.
Karşıt para birimi hesap para birimine eşitse o zaman hesap para biriminin bir lotunun değerini elde etmek için sözleşmenin boyutunu, pozisyonun amaçlanan yönüne bağlı olarak uygun fiyat, Alış veya Satış ile çarptığımız sonucuna varabiliriz.
margin=lots*lot_size*rate/leverage;
2. USDCHF - doğrudan para birimi çifti
USDCHF eşleşmesi için ipotek para birimi ve hesap para birimi - ABD doları. İpotek para birimi ile hesap para biriminin aynı olduğu para birimi çiftlerine doğrudan para birimi çiftleri diyeceğiz. Sözleşme boyutu - 100.000. Bu en basit durumdur, sonucu geri göndermeniz yeterli.
//--- if the base currency symbol and the deposit currency are the same if(margin_currency==account_currency) { calc_currency=symbol; //--- Just return the contract value, multiplied by the number of lots return(lot*lot_size); }
Mevduat para birimi hesap para birimi ile örtüşüyorsa, hesap para birimindeki mevduatın değeri, standart sözleşmenin lot (sözleşme) ile çarpımının kaldıraç büyüklüğüne bölünmesinin sonucuna eşittir.
margin=lots*lot_size/leverage;
3. CADCHF - çapraz para birimi çifti
CADCHF para birimi çifti örnek amaçlı alınmıştır ve mevduat para birimi ile karşıt para biriminin, hesap para birimi ile örtüştüğü diğer herhangi bir başka çift kullanılabilir. Bu para birimi çiftlerine çapraz denir, çünkü üzerlerindeki marjı ve kârı hesaplamak için para birimlerinden birinde bununla kesişen başka bir para birimi çiftinin döviz kurunu bilmemiz gerekir.
Genellikle, çapraz para birimi çiftleri, fiyatlarında ABD doları kullanılmayan çiftlerdir. Ancak tekliflerinde hesap para birimini içermeyen tüm çiftleri çapraz para birimi çiftleri olarak adlandıracağız. Bu nedenle, hesap para birimi Euro cinsinden ise, mevduat para birimi İngiliz sterlini ve para birimi teklifleri ABD doları cinsinden olduğundan GBPUSD çifti, çapraz para birimi çifti olacaktır. Bu durumda marjı hesaplamak için sterlini (GBP) Euro (EUR) olarak ifade etmemiz gerekecek.
Ancak sembolün CADCHF para birimi çifti olduğu bir örneği ele almaya devam edeceğiz. Mevduat para birimi Kanada Doları (CAD) cinsindendir ve ABD doları (USD) ile örtüşmemektedir. Karşıt para birimi İsviçre Frangı cinsindendir ve ayrıca Amerikan doları ile örtüşmez.
Sadece 1 lotta pozisyon açma mevduatının 100.000 Kanada dolarına eşit olduğunu söyleyebiliriz. Görevimiz, mevduatı ABD doları cinsinden hesap para birimine göre yeniden hesaplamaktır. Bunu yapmak için döviz kuru ABD doları ve mevduat para birimi - CAD içeren para birimi çiftini bulmamız gerekiyor. Toplam iki potansiyel seçenek vardır:
- CADUSD
- USDCAD
CADCHF için çıktı verilerine sahibiz:
margin_currency=CAD (Canadian dollar) profit_currency=CHF (Swiss frank)
Terminalde hangi para birimi çiftlerinin bulunduğunu önceden bilmiyoruz ve MQL5 dili açısından her iki seçenek de tercih edilmez. Bu nedenle, verilen para birimi grupları için hesaplamalarda bize ilk eşleşen para birimi çiftini verecek olan GetSymbolByCurrencies() fonksiyonunu yazıyoruz.
//+------------------------------------------------------------------+ //| Return symbol with specified margin currency and profit currency | //+------------------------------------------------------------------+ string GetSymbolByCurrencies(string margin_currency,string profit_currency) { //--- In loop process all symbols, that are shown in Market Watch window for(int s=0;s<SymbolsTotal(true);s++) { //--- Get symbol name by number in Market Watch window string symbolname=SymbolName(s,true); //--- Get margin currency string m_cur=SymbolInfoString(symbolname,SYMBOL_CURRENCY_MARGIN); //--- Get profit currency (profit on price change) string p_cur=SymbolInfoString(symbolname,SYMBOL_CURRENCY_PROFIT); //--- if If symbol matches both currencies, return symbol name if(m_cur==margin_currency && p_cur==profit_currency) return(symbolname); } return(NULL); }
Koddan da anlaşılacağı gibi, "Piyasa Görünümü" penceresinde bulunan tüm sembollerin numaralandırılmasına başlıyoruz (SymbolsTotal() fonksiyonu "true" parametresi ile bize bu miktarı verecektir). "Piyasa Görünümü" listesindeki sayıya göre her sembolün adını almak için true parametresi ile SymbolName() fonksiyonunu kullanıyoruz! Parametreyi "false" olarak ayarlarsak, işlem sunucusunda sunulan tüm sembolleri numaralandırırız ve bu genellikle terminalde seçilenden çok daha fazladır.
Daha sonra, para birimi yatırma ve teklifleri elde etmek ve bunları GetSymbolByCurrencies() fonksiyonuna iletilenlerle karşılaştırmak için sembolün adını kullanırız. Başarılı olunması durumunda, sembolün adını döndürürüz ve fonksiyonun çalışması başarıyla ve planlanandan önce tamamlanır. Döngü tamamlandıysa ve fonksiyonun son satırına ulaşırsak, hiçbir şey uymaz ve sembol bulunamaz - NULL döndürün.
Artık GetSymbolByCurrencies() fonksiyonunu kullanarak çapraz para birimi çifti için hesaplama para birimini elde edebileceğimize göre, iki deneme yapacağız: ilk denemede, mevduat para birimi margin_currency olan (mevduat para birimi CADCHF - CAD) ve karşıt para biriminin hesap para birimi (USD) olduğu sembolü arayacağız. Başka bir deyişle, CADUSD çiftine benzer bir şey arıyoruz.
//--- If calculation currency is still not determined //--- then we have cross currency if(calc_currency="") { calc_currency=GetSymbolByCurrencies(margin_currency,account_currency); mode=true; //--- If obtained value is equal to NULL, then this symbol is not found if(calc_currency==NULL) { //--- Lets try to do it reverse calc_currency=GetSymbolByCurrencies(account_currency,margin_currency); mode=false; } }
Deneme başarısız olursa, başka bir seçenek bulmaya çalışın: mevduat para birimi account_currency (USD) ve karşıt para birimi margin_currency (CADCHF - CAD için mevduat para birimi) olan bir sembol arayın. USDCAD'e benzer bir şey arıyoruz.
Artık para birimi çifti hesaplamalarını bulduğumuza göre, iki seçenekten biri olabilir - doğrudan veya ters. Mod değişkeni, ters para birimi çifti için "true" değerini alır. Doğrudan para birimi çiftimiz varsa, değer "false"a eşittir. "True" değeri için bunu para birimi çiftinin döviz kuru ile çarparız, false değeri için bunu, hesap para birimindeki standart bir sözleşmenin mevduat değerine böleriz.
Bulunan hesaplama para birimi için hesap para birimi cinsinden mevduat boyutunun son hesaplaması buradadır. Her iki seçeneğe de uygundur - doğrudan ve ters para birimi çiftleri.
//--- We know calculation currency, let's get its last prices MqlTick tick; SymbolInfoTick(calc_currency,tick); //--- Now we have everything for calculation double calc_price; //--- Calculate for Buy if(direction==POSITION_TYPE_BUY) { //--- Reverse quote if(mode) { //--- Calculate using Buy price for reverse quote calc_price=tick.ask; answer=lot*lot_size*calc_price; } //--- Direct quote else { //--- Calculate using Sell price for direct quote calc_price=tick.bid; answer=lot*lot_size/calc_price; } } //--- Calculate for Sell if(direction==POSITION_TYPE_SELL) { //--- Reverse quote if(mode) { //--- Calculate using Sell price for reverse quote calc_price=tick.bid; answer=lot*lot_size*calc_price; } //--- Direct quote else { //--- Calculate using Buy price for direct quote calc_price=tick.ask; answer=lot*lot_size/calc_price; } }
Elde edilen sonucu döndürün
//--- Return result - amount of equity in account currency, required to open position in specified volume return (Answer);
GetMarginForOpening() fonksiyonu bu noktada işini tamamlar. Yapılması gereken son şey, elde edilen değeri sağlanan kaldıraç boyutuna bölmektir, ardından varsayılan yönde belirtilen hacimde açık pozisyonlar için marj değerini elde edeceğiz. Ters veya çapraz para birimi çiftini temsil eden semboller için marj değerinin tik ile değişeceğini unutmayın.
İşte SymbolInfo_Advanced.mq5 Uzman Danışman kodunun bir parçası buradadır. Kodun tamamı bir dosya olarak eklenmiştir.
//+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- String variable for comment string com="\r\n"; StringAdd(com,Symbol()); StringAdd(com,"\r\n"); //--- Size of standard contract double lot_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE); //--- Margin currency string margin_currency=SymbolInfoString(_Symbol,SYMBOL_CURRENCY_MARGIN); StringAdd(com,StringFormat("Standard contract: %.2f %s",lot_size,margin_currency)); StringAdd(com,"\r\n"); //--- Leverage int leverage=(int)AccountInfoInteger(ACCOUNT_LEVERAGE); StringAdd(com,StringFormat("Leverage: 1/%d",leverage)); StringAdd(com,"\r\n"); //--- Calculate value of contract in account currency StringAdd(com,"Deposit for opening positions in 1 lot consists "); //--- Calculate margin using leverage double margin=GetMarginForOpening(1,Symbol(),POSITION_TYPE_BUY)/leverage; StringAdd(com,DoubleToString(margin,2)); StringAdd(com," "+AccountInfoString(ACCOUNT_CURRENCY)); Comment(com); }
Grafik üzerindeki çalışmasının sonucu.
Sonuç
Verilen örnekler, alım satım hesabının en önemli özellikleri ve finansal enstrümanların özellikleri hakkında bilgi edinmenin ne kadar kolay ve basit olduğunu göstermektedir.
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal makale: https://www.mql5.com/ru/articles/113
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz