MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1634

 
makssub # :

예를 작성하십시오. 그렇지 않으면 약간 혼란스럽습니다. 어렵지 않다면. 감사해요

주문 주기에서:

 if (OrderOpenPrice()<previous_value)
   {
   previous_value=OrderOpenPrice();
   nearest_order=OrderTicket();
   }

루프 전에 previous_value=DBL_MAX a Nearest_order=0 초기화

 
Taras Slobodyanik # :

주문 주기에서:

루프 전에 previous_value=DBL_MAX a Nearest_order=0 초기화

정확히. 고맙습니다. 공장

 
Taras Slobodyanik # :

주문 주기에서:

루프 전에 previous_value=DBL_MAX a Nearest_order=0 초기화

DBL_MAX는 절대적으로 그렇습니다.)
 
Valeriy Yastremskiy # :
DBL_MAX는 절대적으로 그렇습니다.)

주요 작품)

최대 OrderOpenPrice로 OP_BUY를 찾고 해당 OrderProfit을 결정하는 방법.
어떤 식으로든 합칠 수 없어 모든 것이 조를 통해 작동합니다 ... 예를 들면) 감사합니다)

 
makssub # :

주요 작품)

최대 OrderOpenPrice로 OP_BUY를 찾고 해당 OrderProfit을 결정하는 방법.
어떤 식으로든 합칠 수 없어 모든 것이 조를 통해 작동합니다 ... 예를 들면) 감사합니다)

previous_value= 0 ;

if (OrderOpenPrice()>previous_value)
   {
   previous_value=OrderOpenPrice();
   profit_order=OrderProfit();
   }
 
MakarFX # :

나는 그냥 모든 것을 했다고 말하고 싶었다.

하지만 더 간결한 방식으로 모든 작업을 수행했습니다. 나는 당신의 선택을 받아들입니다)

감사해요

 
디스크에 파일을 쓰지 않고 mql5 프로그램에서 파일로 작업하지만 속도를 높이기 위해 RAM에서만 작업하는 방법. mql5 프로그램에서 내 컴퓨터의 프로그램으로 데이터를 전송하고 싶습니다. 네트워크 기능 없이 가능한가요? 반드시 파일, 배열 또는 변수가 가능한 것은 아니며 훨씬 더 좋습니다. python 통합 모듈과 웹 소켓의 두 가지 방법만 알고 있지만 그런 작업을 수행할 수 있습니까?
 

OnDeInit()에서 사이클의 모든 객체를 삭제합니다(신호 막대와 하나의 버튼을 나타내는 화살표).

 const int obj_total= ObjectsTotal ();

Print (" ObjectsTotal ",obj_total);

for ( int i= 0 ; i < obj_total ; i++){
 Print (" ObjectName ", ObjectName (i),", i = ",i);
 ObjectDelete ( ObjectName (i));
}

ObjectsDeleteAll()이 있다는 것을 알고 있지만 여전히 루프를 통해 수행하면 개체의 절반만 하나씩 삭제됩니다. 사실, 다음은 주기의 작업이며 왜 이런 일이 발생하는지 이해하지 못합니다.

 2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName , i = 20
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName , i = 19
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName , i = 18
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName , i = 17
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName , i = 16
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName , i = 15
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName , i = 14
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName , i = 13
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName , i = 12
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName , i = 11
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName button1, i = 10
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName ArrowUp0008, i = 9
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName ArrowUp0006, i = 8
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName ArrowUp0004, i = 7
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName ArrowUp0002, i = 6
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName ArrowUp0000, i = 5
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName ArrowDown0008, i = 4
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName ArrowDown0006, i = 3
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName ArrowDown0004, i = 2
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName ArrowDown0002, i = 1
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectName ArrowDown0000, i = 0
2021.09 . 30 04 : 47 : 30.462      2021.01 . 04 03 : 56 : 45   test EURUSD,M1: ObjectsTotal 21
 
Nerd Trader # :

OnDeInit()에서 사이클의 모든 객체를 삭제합니다(신호 막대와 하나의 버튼을 나타내는 화살표).

ObjectsDeleteAll()이 있다는 것을 알고 있지만 여전히 루프를 통해 수행하면 개체의 절반만 하나씩 삭제됩니다. 사실, 다음은 주기의 작업이며 왜 이런 일이 발생하는지 이해하지 못합니다.

삭제 주기를 반대로 해야 합니다.

 for ( int i=obj_total- 1 ; i>= 0 ; i--)

이것은 그래픽 개체의 삭제뿐만 아니라 일반적으로 터미널 목록에 있는 개체의 삭제에도 적용됩니다.

 
Nerd Trader # :

OnDeInit()에서 사이클의 모든 객체를 삭제합니다(신호 막대와 하나의 버튼을 나타내는 화살표).

ObjectsDeleteAll()이 있다는 것을 알고 있지만 여전히 루프를 통해 수행하면 개체의 절반만 하나씩 삭제됩니다. 사실, 다음은 주기의 작업이며 왜 이런 일이 발생하는지 이해하지 못합니다.

그렇게 시도하면 모든 이름을 입력하기만 하면 됩니다.

 string    m_name[]= { "button1" , "ArrowUp0008" , "ArrowDown0008" , "ArrowUp0006" , "ArrowDown0006" };
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   for ( int i= 0 ; i< ArraySize (m_name); i++)
     {
       ObjectDelete ( 0 ,m_name[i]);
     }
//---
  }
//+------------------------------------------------------------------+