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

 
Vitaly Muzichenko :

감사합니다. 어떤 이유로 작동하지 않습니다.

double GetLotLastOrder( string sy= "" , int op=- 1 , int mn=- 1 ) {
double    r=- 1 ;
   if (sy== "0" ) sy= Symbol ();
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()> 1 && OrderType ()< 6 ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (r> OrderLots () || r==- 1 ) {
                r= OrderLots ();
  }}}}}}}
   return (r);
}

그림 로트 = 0.03에서 열네 번째 매도 스톱의 로트를 반환하는 방법은 무엇입니까?

 
Marina Korotkih :

감사합니다. 어떤 이유로 작동하지 않습니다.

double GetLotLastOrder( string sy= "" , int op=- 1 , int mn=- 1 ) {
   if (sy== "0" ) sy= Symbol ();
   double r= MarketInfo (sy, MODE_MINLOT );
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()> 1 && OrderType ()< 6 ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (r> OrderLots ()) {
                r= OrderLots ();
  }}}}}}}
   return (r);
}
이것은 최소입니다. 최신 주문이 필요하면 지금 하겠습니다.
 
Vitaly Muzichenko :

이것은 최소입니다. 최신 주문이 필요하면 지금 하겠습니다.

가격에서 가장 먼 곳을 찾고 있습니다

double GetLotLastOrder( string sy= "" , int op=- 1 , int mn=- 1 ) {
datetime t= 0 ;
double r=- 1 ,l= 0 ;
if (sy== "0" ) sy= Symbol ();
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()> 1 && OrderType ()< 6 ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (r> OrderOpenPrice () || r==- 1 ) {
                r= OrderOpenPrice ();
                l= OrderLots ();
  }}}}}}}
   return (l);
}
 
Marina Korotkih :

감사합니다. 어떤 이유로 작동하지 않습니다.

double GetLotLastOrder( string sy= "" , int op=- 1 , int mn=- 1 ) {
double    r=- 1 ;
   if (sy== "0" ) sy= Symbol ();
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()> 1 && OrderType ()< 6 ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (r> OrderLots () || r==- 1 ) {
                r= OrderLots ();
  }}}}}}}
   return (r);
}

그림 로트 = 0.03에서 열네 번째 매도 스톱의 로트를 반환하는 방법은 무엇입니까?



아니요, 함수가 올바르게 작동합니다. 반환된 값이 1 및 14 주문이 아니라 2인 이유는 무엇입니까?

이것은 테스터입니까?

나를 위해 올바르게 작동합니다.

 
Vitaly Muzichenko :

가격에서 가장 먼 곳을 찾고 있습니다


감사합니다. 너무 명확합니다. 우리는 그것을 찾았습니다. 이제 그것에 대해 필요한 모든 것을 찾을 수 있습니다)

 
Alekseu Fedotov :

아니요, 함수가 올바르게 작동합니다. 반환 값이 1 및 14 주문이 아니라 2인 이유는 무엇입니까?

이것은 테스터입니까?

나를 위해 올바르게 작동합니다.

가격순으로 정렬해야 합니다. 크기로 검색할 수 없고 그리드가 여러 개 있을 수 있으며 가장 큰 것 또는 작은 것 중 하나를 찾을 수 있지만 첫 번째와 마지막은 찾을 수 없기 때문입니다.
 
Marina Korotkih :

감사합니다. 너무 명확합니다. 우리는 그것을 찾았습니다. 이제 그것에 대해 필요한 모든 것을 찾을 수 있습니다)

주문이나 포지션에 대한 전체 정보를 알아보려면 티켓으로 하는 것이 좋습니다.

if ( OrderSelect (i, SELECT_BY_TICKET )) {
   // всё что угодно
}
 
Alekseu Fedotov :

...반환된 값이 1 및 14 주문이 아니라 2인 이유는 무엇입니까?


이렇게 부르니까

GetOrderOpenPrice( Symbol (), OP_SELLSTOP ,_Magic)
 
Vitaly Muzichenko :

주문이나 포지션에 대한 전체 정보를 알아보려면 티켓으로 하는 것이 좋습니다.

if ( OrderSelect (i, SELECT_BY_TICKET )) {
   // всё что угодно
}

그러나 이를 위해서는 먼저 라스트 오더 14의 티켓을 찾아야 합니다.

따라서 첫 번째 함수에서와 같이 순서를 먼저 검색해야 합니까?

또는 간단히 SELECT_BY_POSSELECT_BY_TICKET 으로 교체

 
Marina Korotkih :

그러나 이를 위해서는 먼저 라스트 오더 14의 티켓을 찾아야 합니다.

따라서 첫 번째 함수에서와 같이 순서를 먼저 검색해야 합니까?

또는 간단히 SELECT_BY_POSSELECT_BY_TICKET 으로 교체

알아야 할 사항을 참조하십시오. 실제로 여기에서 모든 것을 찾고 가격 으로 주문 을 선택한 다음 필요한 매개 변수를 기록하고 모든 것을 반환할 수 있습니다.

다시 한 번 주기를 사용하는 것은 좋지 않으므로 한 주기에 모든 것을 구현하는 것이 좋습니다. 실제 거래에서는 눈에 띄지 않지만 테스터에서는 테스트 시간이 오래 걸립니다. 모든 것이 작업에 따라 다르지만 누군가는 테스터를 위한 프로그램을 작성하고 누군가는 거래를 위해 작성하므로 한 사이클이 아니라 여러 사이클을 사용할 수 있습니다.

추신, 물론 고문 - 피서 인 경우 단일 사이클을 사용하지 않는 것이 좋습니다)
사유: