![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Anlaşıldı ve düzeltildi. Teşekkür ederim.
Düzeltme için teşekkürler, neredeyse iyi, neden neredeyse...
Yardım diyor
start_time [inç] İlk öğeye karşılık gelen çubuk süresi.
Ve ilk eleman 0'dır.
Ve işte son elemanlı sıra.
Eğer öyleyse, lütfen yardımı düzeltin.
Düzeltme için teşekkürler, neredeyse iyi, neden neredeyse...
Yardım diyor
start_time [inç] İlk öğeye karşılık gelen çubuk süresi.
Ve ilk eleman 0'dır.
Ve işte son elemanlı sıra.
Eğer öyleyse, lütfen yardımı düzeltin.
Durum öyledir ki, tarihten bugüne değişkendeki start_time ve stop_time herhangi bir şey olabilir - her durumda, bir aralık oluştururlar. Bunu belgelerde daha net bir şekilde göstermeye çalışalım.
Onlar. Kopyala* işlevlerinin, tarihten bugüne kadar olan durumda başlangıç öğesi dışındaki tüm öğeleri döndüreceğini mi söylüyorsunuz? Bu yüzden ifadeyi şöyle yazmam gerekiyor:
benim için bu soru çok önemli.
Yeni bir güne geçiş sırasında şu olayın gerçekleştiğine dikkatinizi çekiyorum:
Güncellemeden sonra her şey normale döndü.
Yeni bir güne geçişin oluşumunu izleyin, sık sık böyle bir kayma fark ederim ve en ilginç şey, ertesi günün ilk çubuğunun oluşumu sırasında, grafik güncellemesinin herhangi bir sonuç getirmemesidir. (Belki yanılıyorum ama sanırım bir önceki yazımın da bununla bir ilgisi var).
252 oluşturun.
Ana Menü: <CHARTS> - < GRAPHIC TOOLS > zaman dilimleri çıkar.
Ne yazık ki, CAccountInfo'nun en son sürümü derlemeye dahil edilmedi.
Ekli dosyada FreeMarginCheck yöntemini bulacaksınız (ancak şu ana kadar yalnızca SYMBOL_CALC_MODE_FOREX için).
Herhangi bir yorumunuz ve (veya) fikriniz varsa, lütfen yazın.
FreeMarginCheck yönteminin biraz çalışma gerektirdiği bulundu.
1. SYMBOL_CALC_MODE_FOREX durumunu düşünün:
work=SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN)+Currency();
teklif=SymbolInfoDouble(iş, SYMBOL_BID );
marj=teklif*hacim*sözleşme_boyutu/kaldıraç;
marj=free_margin-marj;
kırmak;
SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN) ve Currency() terimlerinin değerleri eşitse, teklif değişkeni 0'a ve marj değişkeni free_margin'e ayarlanır.
Durumu düzeltmek için şunu yaptım:
durum SYMBOL_CALC_MODE_FOREX:
teklif=1.0;
if (SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN)!=Para Birimi())
{
work=SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN)+Currency();
teklif=SymbolInfoDouble(iş,SYMBOL_BID);
}
marj=teklif*hacim*sözleşme_boyutu/kaldıraç;
marj=free_margin-marj;
kırmak;
Kopyala * () işlevlerinin normal olarak ne zaman çalışacağını öğrenebilir miyim?
Her yeni yapıda çalışmayı bırakıyorlar, gerçekten kimse onları kullanmıyor mu?
Düzeltme için teşekkürler, neredeyse iyi, neden neredeyse...
Yardım diyor
start_time [inç] İlk öğeye karşılık gelen çubuk süresi.
Ve ilk eleman 0'dır.
Ve işte son elemanlı sıra.
Eğer öyleyse, lütfen yardımı düzeltin.
Örneğinizden time1 değerinin nasıl elde edildiği açık değil. Durumu yeniden oluşturma girişimi başarısız oldu.
FreeMarginCheck yönteminin biraz çalışma gerektirdiği bulundu.
FreeMarginCheck yönteminin biraz çalışma gerektirdiği bulundu.
2. Bir diğer sorun ise şu şekildedir. SYMBOL_CALC_MODE_FOREX durumunu tekrar düşünün:
iş= SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN) + Currency() ;
teklif=SymbolInfoDouble(iş,SYMBOL_ BID );
Sembol değişkeni, temel para birimi olarak doğrudan fiyatı olmayan bir para birimine sahipse (örneğin, CADJPY ), o zaman SymbolInfoDouble(work,SYMBOL_BID) 0 değerini döndürür.
2.1. Ayrıca ikinci değişken (teklif) hesaplanırken neden BID fiyatının kullanıldığı da açık değildir. Sonuçta teminatın hesaplandığı para biriminin mevduat para birimi pahasına alınmasını sağlamamız gerekiyor, yani. "marj para birimini al, mevduat para birimini sat". Ve mevduat para birimi belirli bir döviz çiftinde ikinci sıradaysa, belirtilen işlemi gerçekleştirmek için ASK fiyatının kullanılması gerekecektir.
Durumu düzeltmek için şunu yaptım:
çift kurs;
//---
switch(SymbolInfoInteger(sembol,SYMBOL_TRADE_CALC_MODE))
{
durum SYMBOL_CALC_MODE_FOREX:
kurs=1.0;
//---Mevduat para biriminin mevcut para biriminin temel para birimi olup olmadığını kontrol edin
// çiftler. Eğer öyleyse, o zaman ders değişkeninin değeri 1.0'a eşit kalacaktır.
if(SymbolInfoString(sembol,SYMBOL_CURRENCY_MARGIN)!=Para Birimi())
{
work=SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN)+Currency();
//---Temel para birimi ile aynı olan bir döviz çifti olup olmadığını kontrol edin.
//mevcut çiftin temel para birimi ve karşıt para birimi mevduat para birimiyle aynı
//(yani, depozito USD ise, doğrudan bir teklif olup olmadığını kontrol edin).
if(SymbolInfoDouble(çalışma,SYMBOL_ASK)!=0)
kurs=SymbolInfoDouble(çalışma,SYMBOL_ASK);
//---Yukarıdaki koşul karşılanmıyorsa, karakter sırasını değiştirin
//değişkendeki para birimleri çalışır ve temel para birimi olan para birimi çiftini alır
// yatırılan para birimiyle örtüşür ve teklif para birimi temel para birimiyle eşleşir
// mevcut çiftin (depozito USD ise, o zaman ters kotasyonlu bir döviz çifti alırız).
başka
{
work=Currency()+SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN);
kurs=1/SymbolInfoDouble(iş,SYMBOL_BID);
}
}
marj=ders*hacim*sözleşme_boyutu/kaldıraç;
marj=free_margin-marj;
kırmak;