Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 8

 

Yardım'da yazıyor

ENUM_SYMBOL_CALC_MODE

tanımlayıcı

Tanım

formül

SYMBOL_CALC_MODE_FOREX

Forex modu - Forex için kar ve marj hesaplaması

Marj: Lot*Sözleşme_Boyutu/Kaldıraç

Kar: (close_price-open_price)*Contract_Size*Çok

SYMBOL_CALC_MODE_FUTURES

Vadeli işlemler modu - vadeli işlemler için marj ve kar hesaplaması

Marj: Lot *İlk Marj*Yüzde/100

Kar: (close_price-open_price)*TickPrice/TickSize*Lots

SYMBOL_CALC_MODE_CFD

CFD modu - CFD için marj ve kar hesaplaması

Marj: Lot *Sözleşme Büyüklüğü*PiyasaFiyatı*Yüzde/100

Kar: (close_price-open_price)*Contract_Size*Çok

SYMBOL_CALC_MODE_CFDINDEX

CFD endeks modu – endeks CFD'leri için marj ve kar hesaplaması

Marj: (Lot*SözleşmeBoyutu*PiyasaFiyatı)*TickPrice/TickSize

Kar: (close_price-open_price)*Contract_Size*Çok

SYMBOL_CALC_MODE_CFDLEVERAGE

CFD Kaldıraç modu – kaldıraçla işlem yaparken CFD için marj ve kar hesaplaması

Marj: (Lot*Sözleşme Büyüklüğü*PiyasaFiyatı*Yüzde)/Kaldıraç

Kar: (close_price-open_price)*Contract_Size*Çok

SYMBOL_CALC_MODE_EXCH_STOCKS

Borsa modu - menkul kıymetler borsasında alım satım için teminat ve kârın hesaplanması

Marj: Lot*SözleşmeBoyutu*AçıkFiyat

Kar: (close_price-open_price)*Contract_Size*Çok

SYMBOL_CALC_MODE_EXCH_FUTURES

Vadeli işlem modu - borsada işlem gören vadeli işlem sözleşmeleri için marj ve kâr hesaplaması

Marj: Lotlar*İlk Marj veya Lotlar*Bakım Marjı

Kar: (close_price-open_price)*Lots*TickPrice/TickSize

SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS

FORTS Vadeli İşlemler modu - FORTS'ta vadeli işlem sözleşmeleri ticareti için marj ve kar hesaplaması. Marj, aşağıdaki kurallara göre MarginDiscount sapması ile azaltılabilir:

1. Bir uzun pozisyonun (alış emri) fiyatı uzlaşma fiyatından düşükse, MarginDiscount = Lot*((PriceSettle-PriceOrder)*TickPrice/TickSize)

2. Bir kısa pozisyonun (satış emri) fiyatı uzlaşma fiyatından büyükse, MarginDiscount = Lot*((PriceOrder-PriceSettle)*TickPrice/TickSize)

nerede:

    • PriceSettle – önceki seansın uzlaşma (takas) fiyatı;
    • PriceOrder – emirde (siparişte) belirtilen ağırlıklı ortalama pozisyon fiyatı veya açılış fiyatı;
    • TickPrice - tick fiyatı (fiyatı bir puan değiştirmenin maliyeti);
    • TickSize - onay boyutu (minimum fiyat değişikliği adımı)

Marj: Lotlar*İlk Marj veya Lotlar*Bakım Marjı

Kar: (close_price-open_price)*Lots*TickPrice/TickSize

SYMBOL_CALC_MODE_SERV_COLLATERAL

Teminat modu - enstrüman, ticaret hesabında ticarete konu olmayan bir varlık olarak kullanılır. Açık pozisyonun piyasa değeri hacim, cari piyasa fiyatı, sözleşme büyüklüğü ve likidite oranına göre hesaplanır. Maliyet, özkaynaklarla (Özkaynak) özetlenen Varlıklarda dikkate alınır. Böylece, böyle bir enstrümandaki açık pozisyonlar, serbest teminat miktarını (Serbest Marj) arttırır ve alım satımı yapılan enstrümanlardaki açık pozisyonlar için ek teminat görevi görür.

kenar boşluğu: hayır

Kar: hayır

Piyasa Değeri: Lot*SözleşmeBoyutu*PiyasaFiyatı*Likit Oranı

 
fxsaber :

Yardım'da yazıyor

Tüm saygımla, sizi okumaya geri döndürmek niyetindeyim.

not

Bunu alabilirsiniz, ancak AUDCAD ile hesaplarsak, depozitoyu AUD para biriminde alacağız ve hesap dolar cinsinden. AUDUSD fiyatını değiştirirsek, gerekli marjı elde ederiz, ancak bu evrensel ve faul değildir, çünkü ön ve son ekleri olan hesaplar vardır ve tüm hikaye burada başlar. Ayrıca, piyasa incelemesinde açık bir çift olmayabilir ve hesaplama bir "bakır havza" ile kapsanacaktır.

Para ile çalışan bir program (geliştiricilerin beyanı) bu parayı sayamaz. Eski, kötü ve yavaş MT4 parayla çalışabilir, ancak yeni ve modaya uygun MT5 yapamaz. Nasıl yani?

 
fxsaber

İşte linkteki formül:

Örneğin, CADJPY'de bir teminat düşünüyoruz, CAD'de bir teminat alıyoruz

SymbolInfoDouble (" CADJPY ", SYMBOL_TRADE_CONTRACT_SIZE ) / AccountInfoInteger ( ACCOUNT_LEVERAGE )* 0.7625 // СADUSD

0,7625 CADUSD fiyatıdır, ancak terminalde hesaplamada kullanmak için böyle bir çift bile yoktur.

"MODE_MARGINREQUIRED" hesaplama fonksiyonunu " copypaste " yöntemiyle MT5'e aktarmak, geliştiricilerin hayatını kolaylaştırmak gerçekten çok mu zor?

 
Artyom Trishkin :
Program türünden bağımsız bir hesaplama istiyorum.
Geliştiriciler, marj hesaplamasının (ve diğer bazı bilgi işlevlerinin) bir ticaret işlevi olduğuna ve göstergelerde yasaklanması gerektiğine inanıyor. Bu konuyla ilgili ciddi bir konu açtım - moderatörler her zamanki gibi anonim olarak anında kesti. Şimdi umurumda değil, KB'de marjsız hadım edilmiş bir gösterge yayınladım.
 
Vitaly Muzichenko :

Tüm saygımla, sizi okumaya geri döndürmek niyetindeyim.

Dikkatsiz olduğumu kabul ediyorum. Bana göre, marjın hesaplanması bir şekilde her zaman gereksiz olmuştur. Özellikle göstergelerde. Göstergelerde nerede gerekli olabilir?

Çözümün çok basit olduğunu düşünüyorum. Özgür olacağım - çözeceğim.

 
Vitaly Muzichenko :

Bunu alabilirsiniz, ancak AUDCAD ile hesaplarsak, depozitoyu AUD para biriminde alacağız ve hesap dolar cinsinden. AUDUSD fiyatını değiştirirsek, gerekli marjı elde ederiz, ancak bu evrensel ve faul değildir, çünkü ön ve son ekleri olan hesaplar vardır ve tüm hikaye burada başlar. Ayrıca, piyasa incelemesinde açık bir çift olmayabilir ve hesaplama bir "bakır havza" ile kapsanacaktır.

Ve AUDUSD piyasa saatinde değilse, dörtlü ne getirecek?

Göstergedeki marjı gösterme özel görevi için, önekleri ve sonekleri hesaba katan (veya yardımcı bir Uzman Danışman kullanan) bir koltuk değneği de oluşturabilirsiniz. Ve ticaret için her şey orada görünüyor.

 
Andrey Khatimliansky :

Ve AUDUSD piyasaya genel bakışta yoksa dörtlü ne getirecek ?

Göstergedeki marjı gösterme özel görevi için, önekleri ve sonekleri hesaba katan (veya yardımcı bir Uzman Danışman kullanan) bir koltuk değneği de oluşturabilirsiniz. Ve ticaret için her şey orada görünüyor.

Dört " MODE_MARGINREQUIRED " döndürür)

Alexey Volchanskiy :
Geliştiriciler, marj hesaplamasının (ve diğer bazı bilgi işlevlerinin) bir ticaret işlevi olduğuna ve göstergelerde yasaklanması gerektiğine inanıyor. Bu konuyla ilgili ciddi bir konu açtım - moderatörler her zamanki gibi anonim olarak anında kesti. Şimdi umurumda değil, KB'de marjsız hadım edilmiş bir gösterge yayınladım.

Gerçek ticaret? ))) Evet olmasına rağmen tavlama yasak değildir. Neyin ticaretini yaptığını, açtığını veya kapattığını veya sadece emirleri değiştirdiğini merak ediyorum.

fxsaber :

Dikkatsiz olduğumu kabul ediyorum. Bana göre, marjın hesaplanması bir şekilde her zaman gereksiz olmuştur. Özellikle göstergelerde. Göstergelerde nerede gerekli olabilir?

Çözümün çok basit olduğunu düşünüyorum. Özgür olacağım - çözeceğim.

MA ve stokastiklere ek olarak, bilgi göstergeleri de vardır. Herkes bot ticareti yapmaz, örneğin, bir anlaşma yapmadan önce bilgi göstergesinden marjı bulmanız (MM'yi gözlemleyin), lotu hesaplamanız ve TS'niz için koşullara uyup uymadığına bakmanız veya yine de anlaşmaya girmemeniz gerekir. ve başka bir sinyal bekleyin. Ve bu sadece tek kullanımlık bir durumdur.

 
fxsaber :

Çözümün çok basit olduğunu düşünüyorum. Özgür olacağım - çözeceğim.

Karar hemen geldi.
// Размер свободных средств, необходимых для открытия 1 лота на покупку
double GetMarginRequired( const string Symb )
{
   MqlTick Tick;

   return ( SymbolInfoTick (Symb, Tick) ? Tick.ask * SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE ) /
        ( SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_SIZE ) * AccountInfoInteger ( ACCOUNT_LEVERAGE )) : 0 );
}
Bu FOREX için bir hesaplamadır. Gerisi benzetme gereğidir.
 
fxsaber :
Karar hemen geldi.
// Размер свободных средств, необходимых для открытия 1 лота на покупку
double GetMarginRequired( const string Symb )
{
   MqlTick Tick;

   return ( SymbolInfoTick (Symb, Tick) ? Tick.ask * SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE ) * SymbolInfoDouble (Symb, SYMBOL_TRADE_CONTRACT_SIZE ) *
         SymbolInfoDouble (Symb, SYMBOL_POINT ) / ( SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_SIZE ) * AccountInfoInteger ( ACCOUNT_LEVERAGE )) : 0 );
}
Bu FOREX için bir hesaplamadır. Gerisi benzetme gereğidir.
Çok teşekkürler, yen çiftlerinde bir hata oluştu
 
Vitaly Muzichenko :
Çok teşekkürler, yen çiftlerinde bir hata oluştu
Evet, biraz karıştırdım. Şimdi her şey doğru.