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

 
trader781 :

그럼 이전 질문에 답해주세요

1) 구조체 배열 작성

2) 다른 기능으로의 전환

3) 구조체 배열의 요소 추출 및 서로 비교

4) 구조의 배열을 인쇄하십시오

항목 자체는 코드 형태로 나에게 중요하므로 어떻게 보여야 하는지 이해할 수 있습니다.

모든 것은 당면한 작업에 달려 있습니다. 작업이 임의로 다를 수 있으므로 정확히 무엇을 표시해야 합니까?

글쎄, 나는 시간을 할애 할 것이지만 내가 쓴 것은 정사각형입니다. 구멍은 삼각형입니다. 그러면 사각형을 어디로 밀어야 할까요?

 
Artyom Trishkin :

모든 것은 당면한 작업에 달려 있습니다. 작업이 임의로 다를 수 있으므로 정확히 무엇을 표시해야 합니까?

글쎄, 나는 시간을 할애 할 것이지만 내가 쓴 것은 정사각형입니다. 구멍은 삼각형입니다. 그러면 사각형을 어디로 밀어야 할까요?

포스트 699와 그 주변을 타십시오.

이것을 다른 함수에 전달하고 구조의 요소를 이전 요소와 비교하는 방법

순서대로 어떤 종류의 주문을 받고 모든 값을 인쇄할 수 있도록

차이점은 숫자가 없고 다른 녹음 규칙이 적용된다는 것입니다.

 
trader781 :

포스트 699와 그 주변을 타십시오.

이것을 다른 함수에 전달하고 구조의 요소를 이전 요소와 비교하는 방법

순서대로 주문하고 모든 값을 인쇄할 수 있도록

차이점은 숫자가 없고 다른 녹음 규칙이 적용된다는 것입니다.

필요한 모든 주문을 순환해야 합니다.

다음에 필요한 순서를 결정한 후 배열을 1씩 늘리고 이 순서에 대한 모든 데이터를 새 셀에 씁니다. 배열 자체의 셀에 주문 의 시작 시간을 기록합니다(닫힌 시간을 찾는 경우 닫는 시간). 구조의 필드에 나머지 데이터를 입력합니다.

루프가 끝난 후 배열을 오름차순으로 정렬합니다.

먼저 이 작업을 수행합니다. 나머지는 더 논의할 수 있습니다.

 
Vitalie Postolache :

한 주기 내에서는 이 문제가 해결되지 않습니다.

고맙습니다.

 
Artyom Trishkin :
//+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct myorder
  {
   int                Ticket;
   double             orderopenprice;
   int                ordertype;
   double             profit;
   double             stoploss;
   double             lot;
  };
myorder orders[][ 5 ];

int     i;
int     Magic= 444 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   CalcOrders();

  }
//+------------------------------------------------------------------+
void CalcOrders()
  {
   int count1=- 1 ;
   ArrayResize (orders, AccountInfoInteger ( ACCOUNT_LIMIT_ORDERS ), 10 );
   for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ())
         && ( OrderMagicNumber ()==Magic) && ( OrderType ()< 2 ))
        {
         count1++;
         orders[count1][ 0 ].Ticket= OrderTicket ();
         orders[count1][ 1 ].lot= OrderLots ();
         orders[count1][ 2 ].orderopenprice= OrderOpenPrice ();
         orders[count1][ 3 ].ordertype= OrderType ();
         orders[count1][ 4 ].profit= OrderProfit ();
         orders[count1][ 5 ].stoploss= OrderStopLoss ();
        }

     }
   ArraySort (orders, WHOLE_ARRAY , 0 , MODE_ASCEND );

  }
//+------------------------------------------------------------------+
파일:
test.mq4  3 kb
 
trader781 :

귀하의 게시물에 귀하의 코드를 게시했습니다.

이제 이해하기 시작하면

  1. 왜 그들은 구조의 배열을 다차원 배열로 만들었을까?
  2. CalcOrders() 함수에서 구조 배열의 크기를 " 최대 허용 가능한 활성 보류 주문 수 "로 변경하는 이유는 무엇입니까? 도움말을 열면(항상 수행해야 함) 이 식별자( ACCOUNT_LIMIT_ORDERS )도 0을 반환할 수 있으며 이는 보류 중인 주문 수에 제한이 없음을 나타냅니다. 배열의 크기는 루프 전에 0이어야 합니다.
  3. 루프에서 배열의 크기를 늘리지 않는 이유는 무엇입니까?
 
Artyom Trishkin :

귀하의 게시물에 귀하의 코드를 게시했습니다.

이제 이해하기 시작하면

  1. 왜 그들은 구조의 배열을 다차원 배열로 만들었을까?
  2. CalcOrders() 함수에서 구조 배열의 크기를 " 최대 허용 가능한 활성 보류 주문 수 "로 변경하는 이유는 무엇입니까? 도움말을 열면(항상 수행해야 함) 이 식별자( ACCOUNT_LIMIT_ORDERS )도 0을 반환할 수 있으며 이는 보류 중인 주문 수에 제한이 없음을 나타냅니다. 배열의 크기는 루프 전에 0이어야 합니다.
  3. 루프에서 배열의 크기를 늘리지 않는 이유는 무엇입니까?

1) X 순서 Y 매개변수 번호가 이 작업에 더 적합하다고 생각함

2) 계정 유형에 따라 50 또는 100과 같으며 다른 것은 없습니다.

3) 그렇다면   카운트1++; 각 패스와 함께 증가하고 배열은 값을 얻습니다.

 
trader781 :

1) X 순서 Y 매개변수 번호가 이 작업에 더 적합하다고 생각함

2) 계정 유형에 따라 50 또는 100과 같으며 다른 것은 없습니다.

3) 그렇다면   카운트1++; 각 패스와 함께 증가하고 배열은 값을 얻습니다.

1. 그렇다면 어떤 구조인가?

2. 시장 위치 배열에 이 매개변수가 필요합니다. "what go, what go"... 루프 앞의 배열은 크기가 0 이어야 합니다.

3. 모든 것이 정확합니다. 처음에 배열의 크기는 0입니다. 새로 찾은 주문이 있을 때마다 배열의 크기는 필요한 주문 수와 동일해집니다.

 
Artyom Trishkin :

1. 그렇다면 어떤 구조인가?

2. 시장 위치 배열에 이 매개변수가 필요합니다. "what go, what go"... 루프 앞의 배열은 크기가 0 이어야 합니다.

3. 모든 것이 정확합니다. 처음에는 배열의 크기가 0입니다. 새로 찾은 주문이 있을 때마다 배열의 크기는 필요한 주문 수와 동일해집니다.

1) 컴파일러는 두 번째 차원이 설정되지 않은 경우 즉시 "클래스 유형 지정, 알 수 없는 매개변수" 팝업을 표시합니다.

2) 그러면 봇은 "범위를 벗어난 치명적인 오류 어레이"로 시작 시 즉시 죽습니다.

3) 즉시 설정 int count1=- 1 ; 그런 다음 우리는 주기를 거칩니다. 여기서 무슨 문제가 있습니까?

 
trader781 :

1) 컴파일러는 두 번째 차원이 제공되지 않으면 맹세합니다.

2) 그러면 봇은 "범위를 벗어난 치명적인 오류 어레이"로 시작 시 즉시 죽습니다.

3) 즉시 설정 int count1=- 1 ; 여기서 무슨 문제가 있습니까?

1. 그는 차원 중 하나를 제거해야 한다고 말하고 있습니다. 1차원 배열을 선언하고 있지만 2차원 배열에 쓰려고 합니다. 결과는 무엇입니까? 물론 컴파일러에서 오류가 발생합니다.

2. 죽지 않으려면 루프에서 배열을 올바르게 채우고 알 수 없는 크기로 설정하지 않은 다음 이해할 수 없는 정도로 밀어 넣어야 합니다.

3. 변수를 -1로 설정합니다. 그리고 배열은 루프 전에 크기가 0이어야 합니다. 여기서 명확하지 않은 것은 무엇입니까?

연결을 재생해 봅시다.

  • 내부 볼륨이 0인(어레이 크기가 0인) 수축된 풍선(빈 어레이)이 있다고 상상해 보십시오. 이 공 안에 (배열로) 동전을 추가하고 싶습니다 (필요한 주문). 여기에서 각 동전은 공에 보관하기에 적합하다고 결정하는 즉시(각 필요한 순서를 찾았음) 공의 내부 부피를 증가시킵니다(동전 자체만 공을 늘리므로 의아해해야 합니다. 이것으로 스스로 - 어레이 크기를 1 늘리고 하나의 영장을 그에게 밀어 넣으십시오).
    결국, 모든 동전을 찾아 공에 밀어 넣으면 더 이상 수축되지 않습니다. 내부 볼륨은 동전에 의해 늘어납니다 (필요한 주문을 검색하는 사이클이 끝날 때, 크기 배열은 발견된 필요한 주문의 수와 같을 것입니다. 필요한 주문이 발견될 때마다 배열 크기가 1) 증가했기 때문입니다.

    이제 처음에 동전을 고무로 되어 크기를 변경할 수 있는 공이 아니라 부피가 제한된 작은 돼지 저금통에 넣었다고 상상해 보십시오(처음에는 어레이의 크기를 설정하고 더 이상 늘리지 않았습니다). . 무슨 일이 일어날 것? 모든 동전이 돼지 저금통에 들어가는 것은 아닙니다. 그리고 모든 것이 공 안에 있습니다.

이것이 당신의 협회입니다.
사유: