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

 
trader781 :

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

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

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

12 , 3과 ...

당신은 일주일 이상 같은 일을 하고 있고, 상황이 악화될 때마다 이미 답변을 받았지만 실수를 지적했습니다. 첫 번째 코드에서 컴파일러는 두 번째 차원이 없다고 맹세하지 않았지만 후속 차원에서는 맹세하기 시작했습니까? 컴파일러가 고장 났습니까? 또한 배열이 있는 모든 코드를 열고 생성 방법을 확인하고 유추하여 수행할 수 있습니다.

 
Artyom Trishkin :

그와 같은 일은 없다. Mashki는 이미 너무 많은 사람들에 의해 삽질되어 갓 구운 야심 찬 상인의 신선한 생각을 기다리는 일만 남습니다. 농담.

사실 - 나는 Mashka를 수년 동안 미루는 것에 지쳤습니다. 그들은 늦는다. 그것들은 아마도 다른 영역에서 사용되어야 하지만 평평한 추세를 잡기 위한 것은 아닙니다.

자동차는 다릅니다.

전반적으로 동일한 기계를 사용하는 모든 곳에서

 
Victor Nikolaev :

자동차는 다릅니다.

대체로 동일한 차를 사용하는 모든 곳에서

내가 무슨 말을 하는 거지? 나는 이마가 아닌 다른 형태로 말합니다.
 
Vitaly Muzichenko :


내가 할 때까지. 다른 사람들과 비슷하다고 생각하면 여기에 쓰지 않을 것입니다. 당신은 숫자 시리즈와 구조 목록이 동일하지 않다는 것을 이해합니다. 그렇지 않으면 무한한 수의 미지수를 가진 또 다른 방정식이 있을 것입니다.

Artyom Trishkin :

그래서?



#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 );
    
}
  
그리고 여기에 코드를 던지는 것에 대해 - 누군가가 그것을 배치하고 페이지를 스크롤하면서 앉아있을 때 분노합니다. 그래서 더 컴팩트합니다.
 
trader781 :
내가 할 때까지. 다른 사람들과 비슷하다고 생각하면 여기에 쓰지 않을 것입니다.
파일이 아닌 메시지에 코드를 붙여넣으십시오. 모바일로 어떻게 보나요?
 
trader781 :
내가 할 때까지. 다른 사람들과 비슷하다고 생각하면 여기에 쓰지 않을 것입니다. 당신은 숫자 시리즈와 구조 목록이 동일하지 않다는 것을 이해합니다. 그렇지 않으면 무한한 수의 미지수를 가진 또 다른 방정식이 있을 것입니다.
#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=- 1 ;

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, 10 );
         orders[count1].Ticket= OrderTicket ();
         orders[count1].lot= OrderLots ();
         orders[count1].orderopenprice= OrderOpenPrice ();
         orders[count1].ordertype= OrderType ();
         orders[count1].profit= OrderProfit ();
         orders[count1].stoploss= OrderStopLoss ();
         }    
     }
     ArraySort (orders, WHOLE_ARRAY , 0 , MODE_ASCEND );
    
}
  
그리고 여기에 코드를 던지는 것에 대해 - 누군가가 그것을 배치하고 페이지를 스크롤하면서 앉아있을 때 분노합니다. 그래서 더 컴팩트합니다.

잘못된. 코드를 사용하여 배열의 크기를 추적하십시오.

당신은 적어도 조금 생각해야합니다. 당신은 추측해서는 안됩니다. 생각한다. 프로그램의 모든 단계. 아니면 누군가가 당신을 위해 글을 쓰기를 기다리고 있습니까? 이것은 프리랜서입니다. 때때로 기능 작성을 주문합니다.

 
Artyom Trishkin :

잘못된. 코드를 사용하여 배열의 크기를 추적하십시오.

당신은 적어도 조금 생각해야합니다. 당신은 추측해서는 안됩니다. 생각한다. 프로그램의 모든 단계. 아니면 누군가가 당신을 위해 글을 쓰기를 기다리고 있습니까? 이것은 프리랜서입니다. 때때로 기능 작성을 주문합니다.

내가 그것을 어떻게 볼

1) 주문이 발견되면 0에 추가

2) 크기를 0으로 변경하고 10을 예약합니다.

3) 첫 번째 순서는 0으로, 두 번째 순서는 1 등으로 기록됩니다.

글쎄, 프리랜서와 관련하여 나는 그들이 아무 것도 쓰지 않을 것이라고 주장하지 않습니다. 그때에만 당신이 직접 다시 작성해야합니다. 논스톱으로 가지 마십시오.
 
trader781 :
내가 할 때까지. 다른 사람들과 비슷하다고 생각하면 여기에 쓰지 않을 것입니다. 당신은 숫자 시리즈와 구조 목록이 동일하지 않다는 것을 이해합니다. 그렇지 않으면 무한한 수의 미지수를 가진 또 다른 방정식이 있을 것입니다.
int count1 =- 1 ;

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 , 10 );
         orders[count1].Ticket= OrderTicket ();
         }    
     }
     ArraySort (orders, WHOLE_ARRAY , 0 , MODE_ASCEND );
    
}
  
그리고 여기에 코드를 던지는 것에 대해 - 누군가가 그것을 배치하고 페이지를 스크롤하면서 앉아있을 때 분노합니다. 그래서 더 컴팩트합니다.

글을 많이 안쓰고 동영상 답변 만 적었습니다.

물론 Artyom은 최선을 다해 도와주지만 물고기는 주지 않고 낚싯대만 줍니다)

trader781, 때때로 문서를 보면 모든 단계에서 가득 찼습니다.
 
trader781 :

내가 그것을 어떻게 볼

1) 주문이 발견되면 0에 추가

2) 크기를 0으로 변경하고 10을 예약합니다.

3) 0은 첫 번째 순서의 숫자로, 1은 두 번째 순서로 작성됩니다.

글쎄, 프리랜서와 관련하여 나는 그들이 아무 것도 쓰지 않을 것이라고 주장하지 않으며, 그때에만 당신이 그것을 다시 작성해야합니다. 논스톱으로 가지 마십시오.

크기가 0인 배열에 어떻게 입력하시겠습니까?

존재하지도 않는 지갑에 돈을 넣고...

 
Artyom Trishkin :

크기가 0인 배열에 어떻게 입력하시겠습니까?

존재하지도 않는 지갑에 돈을 넣고...

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

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