Hatalar, hatalar, sorular - sayfa 2411

 
Aleksey Sergan :



Lütfen şu kodu çalıştırın: Multicurrency iMA Trend 2 .

Ayarlarda (Parametre Sembolleri ) "EURUSD,GBPUSD" belirtin.

yapılandırmam var

MetaTrader 5 x64 build 2009 started (MetaQuotes Software Corp.)
Windows 10 (build 17763 ) x64, IE 11 , UAC, Intel Core i3- 3120 M  @ 2.50 GHz, Memory: 3518 / 8077 Mb, Disk: 86 / 415 Gb, GMT+ 2
C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

tüm SL'ler sembollerinin fiyatları üzerinden kapatıldı. Yani fiyat çakışması hatası yoktur.

 
Vladimir Karputov :

Lütfen şu kodu çalıştırın: Multicurrency iMA Trend 2 .

Ayarlarda (Parametre Sembolleri ) "EURUSD,GBPUSD" belirtin.

yapılandırmada var

tüm SL'ler sembollerinin fiyatları üzerinden kapatıldı. Yani fiyat çakışması hatası yoktur.

Teşekkürler, hata düzeltildi. Aşağıda yayınlayın.

 
Andrey Barinov :

2 hata var.

1. Senin hatan. Kodun içinde bir yerde. GBPUSD fiyatını kullanarak bir EURUSD pozisyonu için SL'yi ayarlarsınız. Terminalin buna karşı hiçbir şeyi olmamalıdır.

2. Terminal hatası. Bu SL, GBPUSD fiyatı kullanılarak EURUSD akışında o sırada mevcut olmayan bir fiyatta tetiklenirse.

Andrey Barinov :

https://www.mql5.com/ru/docs/constants/structures/mqltraderequest

Görünüşe göre, bir değişiklik talebi gönderirken, konum alanının önceliği var, sembolü değil. İstenen konumu yazdır

Evet haklıydın, benim hatam mantıklı:

yapıda:

MqlTradeRequest m_request;

m_request.position = #3

m_request.symbol = GBPUSD

m_request.sl = 1.60704

GBPUSD #4 için gerçek pozisyon numarası

OrderSend yürütülürken, test cihazı #3 konumuna karşılık gelen sembol için bir durdurma ayarlar, bu eurusd'dur.

Test cihazı hataları:

- uygunluğu kontrol etmez m_request.position ve m_request.symbol;

- mevcut fiyatı 1.30935 olan bir satın alma pozisyonu, sembol eurusd için 1.60704 stopunu ayarlar;

- sonraki tikte, gerçek fiyat 1.30935 olmasına rağmen 1.60704 fiyatında bir stop gerçekleştirir.

Herkese teşekkürler. Umarım platform geliştiricileri gönderiyi görür.

 
Aleksey Sergan :

Evet haklıydın, benim hatam mantıklı:

yapıda:

MqlTradeRequest m_request;

m_request.position = #3

m_request.symbol = GBPUSD

m_request.sl = 1.60704

GBPUSD #4 için gerçek pozisyon numarası

OrderSend yürütülürken, test cihazı #3 konumuna karşılık gelen sembol için bir durdurma ayarlar, bu eurusd'dur.

Test cihazı hataları:

- uygunluğu kontrol etmez m_request.position ve m_request.symbol;

- mevcut fiyatı 1.30935 olan bir satın alma pozisyonu, sembol eurusd için 1.60704 stopunu ayarlar;

- sonraki tikte, gerçek fiyat 1.30935 olmasına rağmen 1.60704 fiyatında bir stop gerçekleştirir.

Herkese teşekkürler. Umarım platform geliştiricileri gönderiyi görür.

Geçerli 1.30935 fiyatında 1.60704 alış pozisyonu için stopun uygulanması bir hata değildir. Ancak şu anki 1.30935 fiyatında 1.60704 seviyesinde bir alış stopu ayarlamak bir hatadır.

 

Yapı 2007

İşlev:

 bool GetDialLastProfit ( string symbol, datetime startDate, datetime endDate, long magic, double &profit, double &lot)
{
   HistorySelect (startDate, endDate);
   int deals = HistoryDealsTotal ();
   ulong ticket;

   for ( int i = deals - 1 ; i >= 0 ; i--)
   //for (int i = 0; i < deals; i++)
  {
    ticket = HistoryDealGetTicket (i);
     if (ticket != 0 )
    {
       if ( HistoryDealGetInteger (ticket, DEAL_MAGIC ) == magic)
      {
        profit = HistoryDealGetDouble (ticket, DEAL_PROFIT );
        
         //if (!HistoryDealGetDouble(ticket, DEAL_PROFIT, profit))
         //  return false;
        
        lot    = HistoryDealGetDouble (ticket, DEAL_VOLUME );
        
         return ( true );
      }
    }
  }

   return ( false );
}

kar değişkeninde, teoride, işlemin finansal sonucunu vermelidir, ancak her zaman 0.0 olduğu ortaya çıkar ve lot değişkenindeki değer her zaman doğrudur.

Hata? Yoksa yanlış bir şey mi yapıyorum

 
Andrey Dik :

Yapı 2007

İşlev:

kar değişkeninde, teoride, işlemin finansal sonucunu vermelidir, ancak her zaman 0.0 olduğu ortaya çıkar ve lot değişkenindeki değer her zaman doğrudur.

Hata? yoksa yanlış bir şey mi yapıyorum

DEAL_ENTRY_OUT veya INOUT'a bakılmalıdır. _IN ticaretinin karı 0

 
Andrey Barinov :

DEAL_ENTRY_OUT veya INOUT'a bakılmalıdır. İşlemler _IN kar 0

peki, listenin sonundan ilki alındı, OUT olmalı

 
Andrey Dik :

peki, listenin sonundan ilki alındı, OUT olmalı

EndDate içinde TimeCurrent() iletirseniz , bunu TimeCurrent()+60 veya bunun gibi bir şeyle değiştirin. Yardım etmelisin.

 
Andrey Barinov :

EndDate'de TimeCurrent()'i iletirseniz, bunu TimeCurrent()+60 veya bunun gibi bir şeyle değiştirin. Yardım etmelisin.

hayır, ayrıca 0.0

 
Andrey Dik :

hayır, ayrıca 0.0

Ardından hata ayıklayın. Ticari biletleri yazdırın ve test cihazında gerçekte neyin seçildiğini görün. Anlaşma türüne göre bir filtre ekleyin.