Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 748

 
RogozaIV :
yakın zamanda mql4'ten mql5'e taşındı. RTS endeksinde bir danışmanı test ediyorum ve böyle bir sorun vardı, anlaşma yapma koşullarından biri yazılı olmasına rağmen birkaç anlaşma açıyor: if (...OrdersTotal()==0). Bu koşul neden çalışmıyor? Sadece bir ticaret açmak için ne yapılabilir?

SiparişlerToplam

OrdersTotal Aktif siparişlerin sayısını verir.

PozisyonlarToplam

PositionsTotal Açık pozisyonların sayısını verir.


Not

Aktif bekleyen emirleri , "Araçlar" panelindeki "Ticaret" sekmesinde de görüntülenen pozisyonlarla karıştırmayın. Emir, bir alım satım işlemi yürütmek için bir talimattır ve bir pozisyon, bir veya daha fazla işlemin sonucudur.

"Netleştirme" pozisyon muhasebesi ile ( ACCOUNT_MARGIN_MODE_RETAIL_NETTING ve ACCOUNT_MARGIN_MODE_EXCHANGE ), bir veya daha fazla anlaşmanın sonucu olan her sembol için herhangi bir zamanda sadece bir pozisyon açılabilir. "Araçlar" panelindeki "Ticaret" sekmesinde de görüntülenen pozisyonlar ve aktif bekleyen emirler birbiriyle karıştırılmamalıdır.

Konumların bağımsız temsili ile ( ACCOUNT_MARGIN_MODE_RETAIL_HEDGING ), her bir sembol için aynı anda birkaç pozisyon açılabilir.


Yani, OrdersTotal'ı kullanarak şu anda kaç BEKLEMEDEKİ SİPARİŞ olduğunu kontrol edersiniz:

ORDER_TYPE_BUY_LIMIT

Bekleyen sipariş Alış Limiti

ORDER_TYPE_SELL_LIMIT

Bekleyen emir Satış Limiti

ORDER_TYPE_BUY_STOP

Bekleyen sipariş Satın Al Durdur

ORDER_TYPE_SELL_STOP

Bekleyen sipariş Satış Durdur

ORDER_TYPE_BUY_STOP_LIMIT

Emir fiyatına ulaşıldığında, StopLimit fiyatına bir Buy Limit bekleyen emri verilir.

ORDER_TYPE_SELL_STOP_LIMIT

Emir fiyatına ulaşıldığında, StopLimit fiyatına bekleyen bir Satış Limiti emri verilir.


ve şu anda kaç tane açık POSITIONS olduğunu kontrol etmeniz gerekiyor:

POSITION_TYPE_BUY

Satın almak

POSITION_TYPE_SELL

Satış


- bunun için PositionsTotal kullanmanız gerekir.

 

Vladimir Karputov'a teşekkürler

 
Agat :
Tünaydın. 1604'ü oluşturmak için yapılan son MT5 güncellemesinden sonra göstergelerim düzgün çalışmayı durdurdu. kullanırım
sözde "sıvı" göstergeler. Örneğin, bir pencerede farklı dönemlere ait birkaç stokastik ayarlanır. Yani şimdi kısa olanlar çizildi
normalde, daha önce olduğu gibi, biraz daha uzun olanlar sadece birkaç çubuk çizer ve en uzun olanlar hiç çizilmez.

Görünüşe göre hikaye büyük ölçüde eksik hale geldi. Ne olmuş olabileceğini önerebilir misin?
Daha düşük zaman dilimlerinin açılmadığı MT'lerde aksaklığın meydana geldiği ortaya çıktı. TF M1 ve üzeri çizelgelerde gezinmek zorunda kaldım ve her şey yolunda gitti. Soru kapanmıştır.
 
Evet erkenden sevindim, terminal yeniden başlatıldığında her şey aynı, her seferinde oturup tüm çizelgelere tıklamanız gerekiyor.
Çalışmıyor, çalışmıyor. En azından birisi konunun esası hakkında bir şey söyleyecek mi, söylemeyecek mi? Belli ki buggy güncellemesi.

Böyle sorular için nereye gidiyorlar?
 
Merhaba! 2017.06.02_17:45 GMT+3. Bir sorum var. .mq5 programı lotunun hesaplamasını yazdı, -- sonuç, - strateji test cihazındaki program son derece büyük bir lot ile bir anlaşma açmaya çalışıyor. 1.09 risk yüzdesi ile. Depozito miktarı, depozitodan daha fazladır (varsayılan 10.000$). Include>Expert>Money>MoneyFixedRisk.mqh klasöründeki standart OOP dosyasını kullanmaya çalıştım. Sonuç: program sıfır lotlu bir işlem açmaya çalışır. (0.00). Bence bunlar şirket programcılarının şakaları. Yoksa bir şey anlamıyor muyum? Danışmanının işe yaramaz olduğundan emin ol. Parçayı yana doğru bükün. Belki birisi, danışmanın belirli bir risk yüzdesi ile hesaplanmış bir parti ile anlaşmalar açması için ne yazılması gerektiğini biliyordur? Kendim yapamam, sadece zamanımı boşa harcıyorum. Umarım şirketin programcıları çok fazla gücenmezler? Lot.mqh içerme dosyasını ekliyorum. Umarım birisi cevap verir. 18:00 GMT+3. 18:11 GMT+3'te eklendi.
Dosyalar:
Lot.mqh  2 kb
 
Agat :
Tünaydın. 1604'ü oluşturmak için yapılan son MT5 güncellemesinden sonra göstergelerim düzgün çalışmayı durdurdu. kullanırım
sözde "sıvı" göstergeler. Örneğin, bir pencerede farklı dönemlere ait birkaç stokastik ayarlanır. Yani şimdi kısa olanlar çizildi
normalde, daha önce olduğu gibi, biraz daha uzun olanlar sadece birkaç çubuk çizer ve en uzun olanlar hiç çizilmez.

Görünüşe göre hikaye büyük ölçüde eksik hale geldi. Ne olmuş olabileceğini önerebilir misin?


Başka birinin döneminin geçmişine nasıl erişirsiniz? Hangi erişim kontrollerini gerçekleştiriyorsunuz? Hangi hata kodlarını alıyorsunuz?

 
Николай Никитюк :
Merhaba! 2017.06.02_17:45 GMT+3. Bir sorum var. .mq5 programı lotunun hesaplamasını yazdı, -- sonuç, - strateji test cihazındaki program son derece büyük bir lot ile bir anlaşma açmaya çalışıyor. 1.09 risk yüzdesi ile. Depozito miktarı, depozitodan daha fazladır (varsayılan 10.000$). Include>Expert>Money>MoneyFixedRisk.mqh klasöründeki standart OOP dosyasını kullanmaya çalıştım. Sonuç: program sıfır lotlu bir işlem açmaya çalışır. (0.00). Bence bunlar şirket programcılarının şakaları. Yoksa bir şey anlamıyor muyum? Danışmanının işe yaramaz olduğundan emin ol. Parçayı yana doğru bükün. Belki birisi, danışmanın belirli bir risk yüzdesi ile hesaplanmış bir parti ile anlaşmalar açması için ne yazılması gerektiğini biliyordur? Kendim yapamam, sadece zamanımı boşa harcıyorum. Umarım şirketin programcıları çok fazla gücenmezler? Lot.mqh içerme dosyasını ekliyorum. Umarım birisi cevap verir. 18:00 GMT+3. 18:11 GMT+3'te eklendi.

Bu Uzman Danışmanı çalıştırın: Para Sabit Risk - her iki giriş parametresini de değiştirin ve terminalin "Uzmanlar" sekmesindeki baskılara bakın.
 

Göstergemdeki gösterge verilerini hiç alamıyorum.

 int OnInit ()
  {  
   handle1= iMA ( NULL , 0 ,per1, 0 , MODE_LWMA , PRICE_CLOSE );
   handle2= iMA ( NULL , 0 ,PLength1, 0 , MODE_LWMA , PRICE_CLOSE );
  }
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   int copied1= CopyBuffer (handle1, 0 , 0 ,toCount,TMP_Buf1);
   if (copied1<= 0 )
     {
       Sleep ( 50 );
       for ( int i= 0 ;i< 100 ;i++)
        {
         if ( BarsCalculated (handle1)> 0 )
             break ;
         Sleep ( 50 );
        }
      copied1= CopyBuffer (handle1, 0 , 0 ,toCount,TMP_Buf1);
       if (copied1<= 0 )
        {
         Print ( __FUNCTION__ + ": copying indicator data failed. Error=" , GetLastError ());
         return ( 0 );
        }
     }  
   int copied2= CopyBuffer (handle2, 0 , 0 ,toCount,TMP_Buf2);
   if (copied2<= 0 )
     {
       Sleep ( 50 );
       for ( int i= 0 ;i< 100 ;i++)
        {
         if ( BarsCalculated (handle2)> 0 )
             break ;
         Sleep ( 50 );
        }
      copied2= CopyBuffer (handle2, 0 , 0 ,toCount,TMP_Buf2);
       if (copied2<= 0 )
        {
         Print ( __FUNCTION__ + ": copying indicator data failed. Error=" , GetLastError ());
         return ( 0 );
        }
     }
  }

Hiçbir şey kopyalanmaz. Kopyalanan 1/2 değişkenleri her zaman sıfırdan küçüktür. Hata ayıklayıcıda, bu kodu hiç geçemiyorum. Nasıl doğru yapılır, zaten kafasını kırdı.

 
Hmm .. ondan önce, OnInit () içindeki tanıtıcının oluşturulması aktarılırken 4806, şimdi 4807 hatası vardı. Bu nasıl yapılır?
 
Anlaşıldı öyle görünüyor. Kol oluşturulmadı. Tüm veriler başlatılmadı.