초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1026

 
Vladimir Karputov :

본질은 변경되지 않습니다. 각 틱에서 "0" 티켓으로 보류 중인 주문을 삭제 하려고 합니다.

그리고 매 틱마다 티켓 0이 있는 보류 중인 주문이 있다고 누가 말했습니까? 대기 중인 주문이 몇 개인지 확인하셨나요? 와 저거 어디서 났어....?

어떤 티켓 "0"으로??? OrderGetTicket(0)은 티켓이 0인 주문이 선택되었음을 의미하지 않지만 인덱스 0의 보류 중인 주문 목록에서 주문 티켓을 반환합니다.

 
ascerdfg :


문제를 더 정확하게 공식화해야 할 수도 있습니다.

예: 마법이 "1"인 보류 주문 이 있으면 삭제하십시오.

이 경우 구현은 다음과 같습니다.

 #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));
  }

모든 보류 중인 주문을 반복합니다.

보류 중인 주문을 선택할 수 있는 경우(반환된 값은 0보다 큰 티켓)

선택한 보류 주문의 매직이 "1"인 경우

삭제

 
Alexey Viktorov :

어떤 티켓 "0"으로??? OrderGetTicket(0)은 티켓이 0인 주문이 선택되었음을 의미하지 않지만 인덱스 0의 보류 중인 주문 목록에서 주문 티켓을 반환합니다.

네 맞습니다.

 

2004년부터 현재까지 테스터에서 30자를 실행하려면 얼마나 많은 RAM이 필요합니까?

테스터는 부족하다고 쓰지만 얼마가 필요한지는 쓰지 않는다.

 
Igor Zakharov :

2004년부터 현재까지 테스터에서 30자를 실행하려면 얼마나 많은 RAM이 필요합니까?

테스터는 부족하다고 쓰지만 얼마가 필요한지는 쓰지 않는다.

2명의 캐릭터, 5명의 캐릭터를 실행...

 
Vladimir Karputov :

2명의 캐릭터, 5명의 캐릭터를 실행...

질문은 전적으로 이것에 있지 않습니다. 그러한 테스트를 가능하게 하려면 얼마나 많은 메모리를 구입해야 합니까?

다음은 하나의 기호에 대한 결과입니다(공개 가격 모드의 로그에서)

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

여기 2가 있습니다:

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

삼:

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

다음은 4가지입니다.

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

기하급수적으로 진행되었습니다 :) 논리를 못 따라가네요 ㅠ. 틱은 거의 같습니다.

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자 이상에 대한 보고서를 여러 번 보았지만 누군가가 테라바이트의 RAM을 사용하고 있다는 것이 믿기지 않습니다. 비밀이 있는 건 아닐까?

 

표시기 설정에서 그래픽 버퍼 수를 설정할 수 있습니까?

그리고 즉시 두 번째 질문은 RAM을 절약하기 위해 고문이 사용하는 표시기를 강제로 다시 초기화할 가능성이 있습니까?

 
Aleksey Vyazmikin :

표시기 설정에서 그래픽 버퍼 수를 설정할 수 있습니까?

그리고 즉시 두 번째 질문은 RAM을 절약하기 위해 고문이 사용하는 표시기를 강제로 다시 초기화할 가능성이 있습니까?

#property indicator_plots 에 선언되어 줄어들 수 있습니다. 그러나 증가할 가능성은 낮습니다. 그러나 이 감소로 인해 RAM이 절약되지는 않습니다. 결국 버퍼는 남아 있습니다. INDICATOR_DATA에서 INDICATOR_CALCULATIONS로만 전송되고 그 이상은 전송되지 않습니다.

 
Alexey Viktorov :

#property indicator_plots 에 선언되어 줄어들 수 있습니다. 그러나 증가할 가능성은 낮습니다. 그러나 이 감소로 인해 RAM이 절약되지는 않습니다. 모든 버퍼가 남습니다. INDICATOR_DATA에서 INDICATOR_CALCULATIONS로만 전송되고 그 이상은 전송되지 않습니다.

답변 해주셔서 감사합니다. 불행히도 버퍼 수의 외관상의 변화는 관련이 없습니다.

 

Expert Advisor의 OnInit() 블록에서 표준 MACD 표시기의 핸들을 3개의 반쪽(М1 М2 М3)에서 가져오고 싶습니다. 나는 차트에서 방송 중입니다-작동하지만 테스터에서 작동하지 않고 터미널이 단단히 멈 춥니 다! 존재하지 않는 데이터를 수신하고 싶습니다. 이것을 극복하는 방법을 알려주세요?


 //+------------------------------------------------------------------+
//|                                                        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 ()
  {
//---

  }
//+------------------------------------------------------------------+
사유: