[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 603

 
rigonich :

더 정확하게 답하려면 어드바이저의 코드를 살펴봐야 합니다. 그러나 이것은 일반적으로 고문을 작성할 때 호출된 지표가 있는 고문 작업의 일부 기능이 고려되지 않을 때 발생합니다. Expert Advisors는 지표 값을 스스로 계산하지 않고 지표 버퍼에서 미리 만들어진 값을 가져옵니다. 따라서 예를 들어 표시기의 이전 값이나 표시기 자체가 수행하는 다른 값을 기억해야 하는 경우 이 모든 것이 고문에게 제공되어야 합니다. 적어도 코드베이스에서 나는 그런 것을 보았지만 표준 확률론이 있는 것처럼 보이지만 이것은 적용되지 않는 "비뚤어진" 지표도 있습니다.


답변 감사합니다만, 별 도움이 되지 않았습니다. 문제를 다시 게시합니다. 다른 사람이 이에 대해 생각하고 있는 것일 수도 있습니다 ???

안녕하세요! 도와주세요 왜 불필요한 주문이 뜨는지 이해가 안가네요

파일:
 
rigonich :

그렇다면 이것은 도움말 개발자를 위한 질문입니다.


여기의 개발자는 그것과 관련이 없습니다. :__

( Hour()>=10 || Hour()<20 ) 대신 간단한 Hour()>=10 && Hour()<20

그리고 모든 것이 효과가 있었다

 
여러분, 시각화 창의 트랜잭션과 함께 테스터가 어드바이저에서 사용되는 지표도 그리는 방법을 알려주세요.
 

"만약 마지막 거래가 이익을 내기 위해 마감된 경우 > 0이면 ...."라는 조건이 어떻게 코딩되어 있는지 알아보기 위해 어디를 뒤져야 하는지 알려주세요.

저것들. 이미 마감된 (자동으로) 거래에 대한 회계.

 
lottamer :

"만약 마지막 거래가 이익을 내기 위해 마감된 경우 > 0이면 ...."라는 조건이 어떻게 코딩되어 있는지 알아보기 위해 어디를 뒤져야 하는지 알려주세요.

저것들. 이미 마감된 (자동으로) 거래에 대한 회계.


https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

isCloseLastPosByTake() 함수.

이 함수는 take로 마지막 위치를 닫기 위한 플래그를 반환합니다. 플래그가 제기됨 - True - TakeProfit이 작동했습니다. 플래그가 생략됨 - False - 다른 이유로 포지션이 마감되었습니다. 고려할 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
  •  //+----------------------------------------------------------------------------+
    //|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
    //+----------------------------------------------------------------------------+
    //|  Версия   : 19.05.2008                                                     |
    //|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
    //+----------------------------------------------------------------------------+
    //|  Параметры:                                                                |
    //|    sy - наименование инструмента   (""   - любой символ,                   |
    //|                                     NULL - текущий символ)                 |
    //|    op - операция                   (-1   - любая позиция)                  |
    //|    mn - MagicNumber                (-1   - любой магик)                    |
    //+----------------------------------------------------------------------------+
    bool isCloseLastPosByTake( string sy= "" , int op=- 1 , int mn=- 1 ) {
       datetime t;
       double    ocp, otp;
       int       dg, i, j=- 1 , k=OrdersHistoryTotal();
    
       if (sy== "0" ) sy= Symbol ();
       for (i= 0 ; i<k; i++) {
         if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
           if (OrderSymbol()==sy || sy== "" ) {
             if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
               if (op< 0 || OrderType()==op) {
                 if (mn< 0 || OrderMagicNumber()==mn) {
                   if (t<OrderCloseTime()) {
                    t=OrderCloseTime();
                    j=i;
                  }
                }
              }
            }
          }
        }
      }
       if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) {
        dg=MarketInfo(sy, MODE_DIGITS);
         if (dg== 0 ) if ( StringFind (OrderSymbol(), "JPY" )< 0 ) dg= 4 ; else dg= 2 ;
        ocp= NormalizeDouble (OrderClosePrice(), dg);
        otp= NormalizeDouble (OrderTakeProfit(), dg);
         if (ocp==otp) return (True);
      }
       return (False);
    }

 
BeerGod :

https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

isCloseLastPosByTake() 함수.

이 함수는 take로 마지막 위치를 닫기 위한 플래그를 반환합니다. 플래그가 제기됨 - True - TakeProfit이 작동했습니다. 플래그가 생략됨 - False - 다른 이유로 포지션이 마감되었습니다. 고려할 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.




감사합니다. KIMA 라이브러리를 우연히 발견했습니다. 다른 변형의 최근 거래가 있는 "플래그"입니다...

나는 아직 #includ 를 사용하지 않았습니다 ....

몇 마디로 설명할 수 있습니까?

맨 위에 # include(mqh 파일 이름)를 씁니다.

하지만 코드에서? 사용자 funk를 삽입할 위치는 어디입니까? 예를 들어

GetTypeLastClosePos();

무엇 향후 계획 ?

이것에서 정확히 무엇을 나에게 위치의 TYPE을 반환합니까?

 int GetTypeLastClosePos( string sy= "" , int mn=- 1 ) {
   datetime t;
   int       i, k=OrdersHistoryTotal(), r=- 1 ;

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if ((OrderSymbol()==sy || sy== "" ) && (mn< 0 || OrderMagicNumber()==mn)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            r=OrderType();
          }
        }
      }
    }
  }
   return (r);
}

주문 유형() ?

저것들. 그런 다음 ( OrderType() ==TRUE ) 그렇게 하면... 맞습니까?

 
테스터의 기능은 온라인 거래의 기능과 어떻게 다릅니까?
 
 
lottamer :


감사합니다, 저는 KIM 라이브러리를 우연히 발견했습니다 .. (Kim 동지는 분명히 외환 세계의 MARKS와 같습니다 - CAPITAL을 썼습니다 ... 그리고 우리 모두는 지금 그를 인용합니다 (즉, 우리는 그들을 고문에 삽입합니다)) ... 거기 다른 변형의 최근 거래가 있는 "플래그"입니다...

나는 아직 #includ 를 사용하지 않았습니다 ....

몇 마디로 설명할 수 있습니까?

맨 위에 # include(mqh 파일 이름)를 씁니다.

하지만 코드에서? 사용자 funk를 삽입할 위치는 어디입니까? 예를 들어

GetTypeLastClosePos();

무엇 향후 계획 ?

여기서 정확히 어떤 유형의 위치를 나에게 반환합니까?

주문 유형() ?

저것들. 그런 다음 ( OrderType() ==TRUE ) 그렇게 하면... 맞습니까?

함수는 return(0) 다음에 삽입해야 합니다.

GetTypeLastClosePos() 함수는 매수가 있으면 0을 반환하고 매도가 있으면 1을 반환하거나 기록에 아무것도 없으면 -1을 반환합니다.

 //+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
if (isCloseLastPosByTake()== true ) Comment ( "Профит" ); else Comment ( "ХЗ" );   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t;
   double    ocp, otp;
   int       dg, i, j=- 1 , k=OrdersHistoryTotal();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
     if (dg== 0 ) if ( StringFind (OrderSymbol(), "JPY" )< 0 ) dg= 4 ; else dg= 2 ;
    ocp= NormalizeDouble (OrderClosePrice(), dg);
    otp= NormalizeDouble (OrderTakeProfit(), dg);
     if (ocp==otp) return (True);
  }
   return (False);
}
 
BeerGod :

함수는 return(0) 다음에 삽입해야 합니다.

GetTypeLastClosePos() 함수는 매수가 있으면 0을 반환하고 매도가 있으면 1을 반환하거나 기록에 아무것도 없으면 -1을 반환합니다.



덕분에 이해했습니다.

그러나 여전히 함수가 #include-file에 있으면 어떻게 처리합니까?