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

 
Artyom Trishkin # :
그러나 배열에 넣고 원하는 기준에 따라 정렬하는 것은 얼마나 쉬운 일입니까? 그러나 이미 100500 페이지에서 목발을 발 뒤꿈치에 묶습니다.
코드로 예시를 보여주세요. 배열에 추가한 다음 다시 정렬하는 방법을 모르겠습니다.
 
Alexey Viktorov # :
글쎄, 누군가의 대답을 기다리는 것보다 확인하는 것이 쉽고 빠릅니다 ...

내 mql 기술은 여전히 너무 작습니다) 확실히 시도 할 수는 있지만 많은 시간이 걸릴 것입니다. 따라서 많은 시간을 보내고 그것이 불가능하다는 것을 이해하는 것보다 무언가를 할 수 있는지 미리 아는 것이 좋습니다. 일)
손에 넣고 자유 시간이 더 많아지면 물론 직접 해보는 것이 더 쉬울 것입니다. 하지만 지금은 경험이 많은 사람들에게 할 수 있는지 물어보는 것이 좋습니다.

 
Scarick # :

내 mql 기술은 여전히 너무 작습니다) 확실히 시도 할 수 있지만 많은 시간이 걸릴 것이므로 많은 시간을 보내고 작동하지 않을 것이라는 것을 이해하는 것보다 무언가가 가능한지 미리 아는 것이 좋습니다 )
손에 넣고 자유 시간이 더 많아지면 물론 직접 해보는 것이 더 쉬울 것입니다. 하지만 지금은 경험이 많은 사람들에게 할 수 있는지 물어보는 것이 좋습니다.

귀하의 경우 기술이 뛰어나지 않지만 논리적 사고가 작동하면이 질문에서 이해할 수 있습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

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

스칼릭 , 2021.11.06 17:01

즉, 표시기에 5자를 서명하면 OnBookEvent()를 통해서만 5자 모두에 대해 작업할 수 있습니까? 가장 중요한 것은 변경이 발생한 문자를 기준으로 필터링하는 것입니다.

가장 확실한 것은 누군가의 긍정적인 답변을 기다리지 않고 확인하는 것입니다. 그래서 제가 대답한 대로 대답했습니다.
 
MakarFX # :
코드로 예시를 보여주세요. 배열에 추가하고 다시 정렬하는 방법을 모르겠습니다.

여기를보십시오 https://www.mql5.com/ru/articles/1404 거기에는 정렬이 없지만 배열에 넣습니다.

Управление ордерами – это просто
Управление ордерами – это просто
  • www.mql5.com
Статья описывает разнообразные способы контроля открытых позиций и отложенных ордеров и призвана облегчить написание экспертов.
 
MakarFX # :
코드로 예시를 보여주세요. 배열에 추가하고 다시 정렬하는 방법을 모르겠습니다.

bool BubbleSort(구조체 &arr[])

{

for(int i = ArraySize(arr)-1;i>=0;i--)
for(int j = i-1;j>=0;j--) {

if (Compare(arr[i],arr[j])<0 ) 스왑(arr[i],arr[j]);

}

}

어서, 씨발 - 학교에 가십시오 ... 그러한 마이크로 알고리즘은 기억에서 작성되고 술취한 혼미 상태에서 한쪽 눈을 감습니다.

진지하게 : 일부 스레드의 알고리즘 과정을 수강하십시오 ..

 
Alexey Viktorov # :

귀하의 경우 기술이 뛰어나지 않지만 논리적 사고가 작동하면이 질문에서 이해할 수 있습니다.

가장 확실한 것은 누군가의 긍정적인 답변을 기다리지 않고 확인하는 것입니다. 그래서 제가 대답한 대로 대답했습니다.
예, 적은 노력으로 시도하는 방법을 이미 알아냈습니다. 하지만 테스터로 확인할 수는 없습니다. 영업일을 기다려야 합니다. 하지만 그들은 직접 대답할 수 있었습니다.) 저를 위해 코드를 작성해 달라는 것이 아니라 그냥 질문을 한 것입니다.
 

Maxim Kuznetsov # :

어서, 씨발 - 학교에 가십시오 ... 그러한 마이크로 알고리즘은 기억에서 작성되고 술취한 혼미 상태에서 한쪽 눈을 감습니다.

진지하게 : 일부 스레드의 알고리즘 과정을 수강하십시오 ..

흥미로운 의사 소통 방식 ... 긴장 할 가치가 없었습니다.

 
MakarFX # :

흥미로운 의사 소통 방식 ... 긴장 할 가치가 없었습니다.

일반적인 방식 - 정렬 알고리즘이 제공됩니다. 어쨌든 일반적인 버블 정렬입니다. 아무도 긴장하지 않았다.

그리고 정말 정상적인 메시지 - 알고리즘에 대해 읽어보세요

글쎄, 문헌을 읽으십시오.

 

좋은 하루 프로그래머!!!!

내 질문을 다시 표현하려고 하지만 조금 바꿔 보겠습니다.

그리드 Expert Advisor에서 끝에서 두 번째 순서의 티켓을 찾아야 합니다. 최대 주문 티켓에서 -1과 같은 솔루션이 작동하지 않습니다. 아마도 전략 테스터에서는 작동하지만 데모 및 실제 계정에서는 작동하지 않습니다. 사진을 첨부하면 이유가 명확해질 것입니다.

두 번째 순서의 티켓을 결정하기 위한 함수 코드를 작성했습니다. 논리는 다음과 같습니다. 그리드의 모든 미결 주문을 반복한 후 가장 높은 주문을 찾고 필요한 주문 티켓이 있습니다.

하지만 내 프로그래밍 수준이 높지 않고 코드에 일종의 오류가 슬그머니 들어옵니다. 이 함수의 결과는 가장 최소한의 티켓입니다. 이 두 가지 기능은 최대 티켓과 끝에서 두 번째 티켓입니다. 최대 티켓은 완벽하게 작동합니다.

 //+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0 ;
     {
       for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--)
        {
         if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                   if (OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder())
                     penultimate_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return (penultimate_ticket);
  }
 //+----------------------------------------------------------------------------+
//| Расчет тикета максимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
int GetTicketMaxOrder()
  {
   max_ticket = 0 ;
     {
       for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--)
        {
         if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                   if (OrderTicket() > max_ticket)
                     max_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return (max_ticket);
  }

어떤 오류가 있는지 묻습니다. 고맙습니다.

 
Scarick # :
예, 적은 노력으로 시도하는 방법을 이미 알아냈습니다. 하지만 테스터로 확인할 수는 없습니다. 영업일을 기다려야 합니다. 하지만 그들은 직접 대답할 수 있었습니다.) 저를 위해 코드를 작성해 달라는 것이 아니라 그냥 질문을 한 것입니다.

음... 당신을 기분 상하게 할 생각은 하지도 않았습니다. 그리고 긍정적인 대답을 하면 어떤 변화가 생길까요? 결국 누구에게나 업무시간에만 작성하고 확인하면 된다.