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

 
Vladimir Karputov :

Öz değişmez - bekleyen bir siparişi her tikte "0" bileti ile silmeye çalışırsınız.

Ve her tikte 0 bileti olan bekleyen bir siparişiniz olduğunu kim söyledi? Kaç tane bekleyen sipariş olduğunu kontrol ettiniz mi? Ve bunu nereden aldın ....?

Hangi biletle "0"??? OrderGetTicket(0), bilet 0'a sahip bir siparişin seçildiği anlamına gelmez, ancak dizin 0'daki bekleyen siparişler listesinden bir sipariş bileti döndürür.

 
ascerdfg :


Muhtemelen sorunu daha kesin bir şekilde formüle etmeniz gerekiyor.

Örneğin: sihirli "1"e eşit bekleyen bir emir varsa - o zaman silin.

Bu durumda, uygulama şöyle olacaktır:

 #include <Trade\Trade.mqh>

CTrade trader;
int OnInit ()
  {

   trader.SetExpertMagicNumber( 1 );

   return ( INIT_SUCCEEDED );
  }
void OnDeinit ( const int reason)
  {
//---
  
  }
void OnTick ()
  {
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--) // returns the number of current orders
       if ( OrderGetTicket (i)> 0 )     // selects the pending order by index for further access to its properties
         if ( OrderGetInteger ( ORDER_MAGIC )== 1 )
            trader.OrderDelete( OrderGetTicket (i));
  }

Bekleyen tüm siparişler arasında dolaşın

Bekleyen bir sipariş seçmek mümkün olsaydı (döndürülen değer sıfırdan büyük bir bilettir)

Seçilen bekleyen emrin büyüsü "1" ise

Silin

 
Alexey Viktorov :

Hangi biletle "0"??? OrderGetTicket(0), bilet 0'a sahip bir siparişin seçildiği anlamına gelmez, ancak dizin 0'daki bekleyen siparişler listesinden bir sipariş bileti döndürür.

Evet kesinlikle.

 

Söylesene, 2004'ten bugüne test cihazında 30 karakter çalıştırmak için ne kadar RAM gerekiyor?

Test eden kişi yeterli olmadığını yazıyor, ancak ne kadar gerekli olduğunu yazmıyor.

 
Igor Zakharov :

Söylesene, 2004'ten bugüne test cihazında 30 karakter çalıştırmak için ne kadar RAM gerekiyor?

Test eden kişi yeterli olmadığını yazıyor, ancak ne kadar gerekli olduğunu yazmıyor.

İki karakter, beş karakter çalıştırın...

 
Vladimir Karputov :

İki karakter, beş karakter çalıştırın...

Soru tamamen bununla ilgili değil - böyle bir testi mümkün kılmak için ne kadar bellek satın almanız gerekiyor?

işte bir sembolün sonucu (açık fiyat modundaki günlükten)

 264 Mb memory used including 6 Mb of history data, 64 Mb of tick data

işte 2:

 271 Mb memory used including 12 Mb of history data, 64 Mb of tick data

3:

 1038 Mb memory used including 12 Mb of history data, 832 Mb of tick data

Ve işte 4:

 1450 Mb memory used including 18 Mb of history data, 1216 Mb of tick data

Katlanarak gitti :) Mantığını takip edemiyorum tk. keneler yaklaşık olarak aynıdır:

EURUSD,H1: 21470549 ticks, 94233 bars generated. 63097850 total ticks for all symbols
EURUSD: generate 21470549 ticks in 0 : 00 : 05.375 , passed to tester 21470549 ticks
USDCAD: generate 20302871 ticks in 0 : 00 : 05.062 , passed to tester 20302871 ticks
USDJPY: generate 21324430 ticks in 0 : 00 : 05.641 , passed to tester 21324430 ticks
1450 Mb memory used including 18 Mb of history data, 1216 Mb of tick data

20 veya daha fazla karakter için birçok kez raporlar gördüm, birinin terabaytlarca RAM kullandığına inanamıyorum. Belki bir sır vardır?

 

Gösterge ayarlarında grafik arabellek sayısını ayarlamak mümkün müdür?

Ve hemen ikinci soru, danışman tarafından RAM'den tasarruf etmek için kullanılan göstergenin zorla yeniden başlatılması olasılığı var mı?

 
Aleksey Vyazmikin :

Gösterge ayarlarında grafik arabellek sayısını ayarlamak mümkün müdür?

Ve hemen ikinci soru, danışman tarafından RAM'den tasarruf etmek için kullanılan göstergenin zorla yeniden başlatılması olasılığı var mı?

#property'de belirtilen gösterge_çizgileri azaltılabilir, ben yaptım. Ama artması pek olası değil. Ancak bu azalma RAM tasarrufuna yol açmaz. Sonuçta, tamponlar kalır. Yalnızca INDICATOR_DATA'dan INDICATOR_CALCULATIONS'a aktarılır ve başka bir şey değil.

 
Alexey Viktorov :

#property'de belirtilen gösterge_çizgileri azaltılabilir, ben yaptım. Ama artması pek olası değil. Ancak bu azalma RAM tasarrufuna yol açmaz. Tüm tamponlar kaldıktan sonra. Yalnızca INDICATOR_DATA'dan INDICATOR_CALCULATIONS'a aktarılır ve başka bir şey değil.

Cevap için teşekkürler. Tampon sayısındaki kozmetik değişiklik maalesef alakalı değil.

 

Expert Advisor'da, OnInit() bloğunda, standart MACD göstergesinin tutamaçlarını üç yarıdan almak istiyorum - М1 М2 М3. Grafikte yayın yapıyorum - çalışıyor, ancak test cihazında çalışmıyor ve terminal sıkıca kilitleniyor! Mevcut olmayan verileri almak istediğim ortaya çıktı? Bunu nasıl aşacağımı söyle?


 //+------------------------------------------------------------------+
//|                                                        Test.mq5  |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

//--- Количество периодов торгуемых символов
#define NUMBER_OF_PERIODS 3

ENUM_TIMEFRAMES Periods[NUMBER_OF_PERIODS]={ PERIOD_M1 , PERIOD_M2 , PERIOD_M3 };
int handles[NUMBER_OF_PERIODS];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   ArrayInitialize (handles, INVALID_HANDLE );
       for ( int p= 0 ; p<NUMBER_OF_PERIODS; p++)
        {
         if (handles[p]== INVALID_HANDLE )
           {
            handles[p]= iCustom ( NULL ,Periods[p], "Examples\\MACD" );
             Print (handles[p]);
             if (handles[p]== INVALID_HANDLE )   Print ( "Не удалось получить хэндл индикатора для символа !" );
           }
        }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---

  }
//+------------------------------------------------------------------+