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

 
trader781 :

여기에서 코드를 다시 작성하지 않도록 844번 포스트를 다시 만들었습니다.

음, 크기가 0인 배열과 관련하여 - 0은 정수가 될 수 있고 부울 false와 같을 수 있으며 비어 있거나 참조의 시작점이 될 수 있습니다.

0이 의미하는 바는 중요하지 않습니다. 배열의 크기를 0으로 설정하면 (적어도 진저브레드 0이라고 부르면) 0이 됩니다. 따라서 배열은 null이 됩니다.
 
trader781 :

여기에 코드를 다시 작성하지 않도록 844번 포스트를 다시 작성했습니다.

음, 크기가 0인 배열과 관련하여 - 0은 정수가 될 수 있고 부울 false와 같을 수 있으며 비어 있거나 참조의 시작점이 될 수 있습니다.

그리고 내가 당신을 위해 올바른 게시물에 올바른 코드를 넣게 만들지 마십시오.

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct myorder
  {
   int                Ticket;
   double             orderopenprice;
   int                ordertype;
   double             profit;
   double             stoploss;
   double             lot;
  };
myorder orders[];

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= 0 ;

   for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ())
         && ( OrderMagicNumber ()==Magic) && ( OrderType ()< 2 ))
        {
         count1++;
         ArrayResize (orders,count1);
         orders[count1- 1 ].Ticket= OrderTicket ();
         orders[count1- 1 ].lot= OrderLots ();
         orders[count1- 1 ].orderopenprice= OrderOpenPrice ();
         orders[count1- 1 ].ordertype= OrderType ();
         orders[count1- 1 ].profit= OrderProfit ();
         orders[count1- 1 ].stoploss= OrderStopLoss ();
        }
     }
   ArraySort (orders, WHOLE_ARRAY , 0 , MODE_ASCEND );

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

이제 채우고 있는 배열과 정렬하려는 필드를 살펴보십시오. 그리고 가장 중요한 것은 이 정렬이 왜 필요한가요? 그것의 의미는 무엇입니까?

 
Artyom Trishkin :

그리고 내가 당신을 위해 올바른 게시물에 올바른 코드를 넣게 만들지 마십시오.

А теперь поглядите какой массив вы заполняете и по какому полю его сортируете. И, главное - зачем нужна эта сортировка? Какой в ней смысл?

0에서 오름차순으로 주문 배열 정렬

예를 들어 주문이 20개 있고 18개가 실수로 몇 점 더 추가된 경우 즉시 손으로 덮었습니다.

 
trader781 :

0에서 오름차순으로 주문 배열 정렬

예를 들어 주문이 20개 있고 18개가 실수로 몇 점 더 추가된 경우 즉시 손으로 덮었습니다.

티켓별로 정렬해야 하는 경우 배열을 2개 만들어야 합니다. 하나는 구조의 배열이고 두 번째는 2차원으로, 첫 번째 차원의 주문 티켓과 구조의 배열에 주문에 대한 정보가 저장되는 인덱스인 두 번째 차원의 주기 카운터 인덱스를 포함합니다. 그리고 이 배열을 한 사이클에서 동시에 채웁니다.

당신은 너무 오랫동안 이 질문을 풀기 위해 노력해 왔기 때문에 당신이 달성하고자 하는 목표가 더 이상 기억나지 않습니다. 예, 아마도 다른 모든 사람들도 마찬가지일 것입니다.

내가 여전히 올바르게 기억한다면 목록의 번호로 결정된 주문 목록에서 선택해야합니다. 그래서 이게 뭐가 문제야??? 간단한 1차원 배열을 만들고 거기에 티켓을 넣고 정렬한 다음 OrderSelect( array[필요한] , SELECT_BY_TICKET) 그게 다야... 그런 다음 이 순서로 원하는 대로 하십시오.

 
Alexey Viktorov :

티켓별로 정렬해야 하는 경우 배열을 2개 만들어야 합니다. 하나는 구조의 배열이고 두 번째는 2차원으로, 첫 번째 차원의 주문 티켓과 구조의 배열에 주문에 대한 정보가 저장되는 인덱스인 두 번째 차원의 주기 카운터 인덱스를 포함합니다. 그리고 이 배열을 한 사이클에서 동시에 채웁니다.

당신은 너무 오랫동안 이 질문을 풀기 위해 노력해 왔기 때문에 당신이 달성하고자 하는 목표가 더 이상 기억나지 않습니다. 예, 아마도 다른 모든 사람들도 마찬가지일 것입니다.

내가 여전히 올바르게 기억한다면 목록의 번호로 결정된 주문 목록에서 선택해야합니다. 그래서 이게 뭐가 문제야??? 간단한 1차원 배열을 만들고 거기에 티켓을 넣고 정렬한 다음 OrderSelect( array[필요한] , SELECT_BY_TICKET) 그게 다야... 그런 다음 이 순서로 원하는 대로 하십시오.

저도 뭐가 필요한지 기억이 안나네요. 그러나 그가 하는 일은 그에게 좋은 일입니다.

글쎄, 나는 그에게 먼저 한 가지를 쓰도록 구체적으로 요청한 다음 작성된 내용을주의 깊게 살펴보고 그 자신이 이것이 작동하지 않는다는 것을 이해하도록 요청합니다. 함수에서 바로 다른 로컬 배열이 필요합니다. 정렬한 다음 정렬된 것에서 전역 배열을 채웁니다.

 
Alexey Viktorov :

티켓별로 정렬해야 하는 경우 배열을 2개 만들어야 합니다. 하나는 구조의 배열이고 두 번째는 2차원으로, 첫 번째 차원의 주문 티켓과 구조의 배열에 주문에 대한 정보가 저장되는 인덱스인 두 번째 차원의 주기 카운터 인덱스를 포함합니다. 그리고 이 배열을 한 사이클에서 동시에 채웁니다.

당신은 너무 오랫동안 이 질문을 풀기 위해 노력해 왔기 때문에 당신이 달성하고자 하는 목표가 더 이상 기억나지 않습니다. 예, 아마도 다른 모든 사람들도 마찬가지일 것입니다.

내가 여전히 올바르게 기억한다면 목록의 번호로 결정된 주문 목록에서 선택해야합니다. 그래서 이게 뭐가 문제야??? 간단한 1차원 배열을 만들고 거기에 티켓을 넣고 정렬한 다음 OrderSelect( array[필요한] , SELECT_BY_TICKET) 그게 다야... 그런 다음 이 순서로 원하는 대로 하십시오.

아니요, 배열 없이도 다르게 수행할 수 있는 방법이 많다는 것을 알고 있습니다. 구조 중 하나가 있으면 왜 2입니까?
 
trader781 :
아니요, 배열 없이도 다르게 수행할 수 있는 방법이 많다는 것을 알고 있습니다. 구조 중 하나가 있으면 왜 2입니까?

단순 배열은 배열의 첫 번째 차원의 값으로 정렬되기 때문에 구조체 배열이 어떻게 정렬 되는지 모르겠습니다.

질문이 흥미롭긴 하지만 ... 이제 구조체 배열을 정렬해 보겠습니다.

 
Alexey Viktorov :

단순 배열은 배열의 첫 번째 차원의 값으로 정렬되기 때문에 구조체 배열이 어떻게 정렬 되는지 모르겠습니다 .

질문이 흥미롭긴 하지만 ... 이제 구조체 배열을 정렬해 보겠습니다.

왜 이것이 구조의 형태인지 모르겠습니다. mq 프로그램은 하나의 파일에 작성되고 어레이 작업은 하나의 스크롤 스크롤에서 발생하며 하나의 화면에 맞습니다. 스포츠를 위해 이 경우 구조의 요점은 무엇입니까?
 
Alexey Viktorov :

단순 배열은 배열의 첫 번째 차원의 값으로 정렬되기 때문에 구조체 배열이 어떻게 정렬 되는지 모르겠습니다.

질문이 흥미롭긴 하지만 ... 이제 구조체 배열을 정렬해 보겠습니다.

그래서 나는 그것이 무엇인지, 무엇과 함께 먹는지 전혀 모른다.

하지만 이 주제가 제기된 이후로 그것을 버리는 것은 어리석은 일입니다. 클래스의 배열도 있습니다.

 
Vitaly Muzichenko :
왜 이것이 구조의 형태인지 모르겠습니다. mq 프로그램은 하나의 파일에 작성되고 어레이 작업은 하나의 스크롤 스크롤에서 발생하며 하나의 화면에 맞습니다. 스포츠를 위해 이 경우 구조의 요점은 무엇입니까?

예, 우리는 스포츠 관심을 위해 모든 것을 씁니다. 첫째, 우리는 그것이 무엇이며 어떻게 작동하는지 이해하고 그 다음에야 더 효율적으로 작성하는 방법을 이해하기 시작합니다.


구조 배열을 정렬하는 방법 : 예상대로 실험은 실패했습니다. 이미 컴파일하는 동안 컴파일러는 " 표현식은 영향을 미치지 않습니다 "라고 말했습니다.