KimIV의 유용한 기능 - 페이지 121

 

https://forum.mql4.com/ru/38949/page5#434241 기능에 오류가 있습니다.

이렇게 되어야 한다

 double PriceOpenNearPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double mi, oop= 0 , p;
   int     i, k= OrdersTotal (), pp= 0 ;

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) {
             if (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
             if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
             if (p== 0 ) if ( StringFind (sy, "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
             if (pp== 0 || pp> MathAbs (OrderOpenPrice()-mi)/p) {
              pp= MathAbs (OrderOpenPrice()-mi)/p;
              oop=OrderOpenPrice();
              if(pp==0) break;
            }
          }
        }
      }
    }
  }
   return (oop); 

}

재업로드 부탁드립니다.

 

모두에게 좋은 하루!

Expert Advisors를 수정할 때(MQL 업데이트로 인해) Igor Kim의 많은 기능이 작동을 멈춘 것으로 나타났습니다. 포함 가장 수요가 많습니다. 예를 들어,

NumberOfPositions - 위치 수를 반환합니다.

ExistPositions - 위치의 존재에 대한 플래그를 반환합니다.

어제 스레드에서 언급한 또 다른 함수: NumberOfBarCloseLastPos() 함수.
이 함수는 마지막 위치의 닫는 막대 번호를 반환합니다.

테스터 차트에 설명을 표시하고 거래(현재, 마감)가 있음에도 불구하고 함수가 항상 상수 값(-1 및/또는 0)을 반환한다는 것이 분명합니다. 그리고 Advisor는 코드에서 이러한 함수에 의해 설정된 조건을 보지 못하는 것 같습니다.

또한, 그들은 소위 작업을 중단했습니다. "실행 가능한" 기능, 예를 들어 포지션을 닫기 위한 함수 세트: ClosePosBySelect(미리 선택된 하나의 포지션을 닫음) 및 관련:
ClosePositions - 시장 가격 등으로 포지션을 마감 합니다.

최소한 나열된 예제 중 하나의 예에서 기능에서 버그가 발생했으며 수정해야 할 사항이 무엇인지 알려주세요. - NumberOfPositions - 위치 수를 반환 합니까?

 
Rita :

모두에게 좋은 하루!

Expert Advisors를 수정할 때(MQL 업데이트로 인해) Igor Kim의 많은 기능이 작동을 멈춘 것으로 나타났습니다. 포함 가장 수요가 많습니다. 예를 들어,

NumberOfPositions - 위치 수를 반환합니다.

ExistPositions - 위치의 존재에 대한 플래그를 반환합니다.

어제 스레드에서 언급한 또 다른 함수: NumberOfBarCloseLastPos() 함수.
이 함수는 마지막 위치의 닫는 막대 번호를 반환합니다.

테스터 차트에 설명을 표시하고 거래(현재, 마감)가 있음에도 불구하고 함수가 항상 상수 값(-1 및/또는 0)을 반환한다는 것이 분명합니다. 그리고 Advisor는 코드에서 이러한 함수에 의해 설정된 조건을 보지 못하는 것 같습니다.

또한, 그들은 소위 작업을 중단했습니다. "실행 가능한" 기능, 예를 들어 포지션을 닫기 위한 함수 세트: ClosePosBySelect(미리 선택된 하나의 포지션을 닫음) 및 관련:
ClosePositions - 시장 가격 등으로 포지션을 마감 합니다.

최소한 나열된 예제 중 하나의 예에서 기능에서 버그가 발생했으며 수정해야 할 사항이 무엇인지 알려주세요. - NumberOfPositions - 위치 수를 반환 합니까?

NumberOfPositions()가 잘 작동합니다! 사실, 아무런 이점도 없이 MQL4로 계속 작업하고 있습니다! 업데이트된 언어로 작성하는 경우 모든 것이 해당 언어로 조정되거나 Freelance에 문의해야 합니다! 이제 모든 것이 무서운 힘으로 상품화됩니다! 진심으로 공감합니다!

어떻게든 NumberOfPositions()를 조정할 수 있다면 ExistPositions()가 필요하지 않습니다! 다음과 같이 확인하십시오.

 if (NumberOfPositions() > 0 ) //вместо if(ExistPositions() == true)
---------------------------- //или
if (NumberOfPositions() == 0 ) //вместо if(ExistPositions() == false)

행운을 빕니다!

 
borilunad :

NumberOfPositions()가 잘 작동합니다! 사실, 아무런 이점도 없이 MQL4로 계속 작업하고 있습니다! 업데이트된 언어로 작성하는 경우 모든 것이 해당 언어로 조정되거나 Freelance에 문의해야 합니다! 이제 모든 것이 무서운 힘으로 상품화됩니다! !

여기 자주 오지 않아서 잘 모르겠지만 "플러스 없는 MQL4" 라는 뜻인가요?

프리랜서에 대한 간단한 질문에 대한 답변에 방문자가 비용을 지불하도록 여기에서 답변할 수 있는 사람들이 이렇게 하는 것이 아니라고 생각하십니까?

흥미롭고, 업데이트된 MQL이 포함된 최신 버전의 MT4에서 작업하기 위해 지역 프로그래머-상업가가 I. Kim이 이러한 기능을 수정한 것으로 추정하는 금액은 얼마입니까?

 //|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal (), kp= 0 ;
   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) kp++;
          }}}}}
   return (kp);
}
Comment ( NumberOfPositions(NULL, -1, Magic) ) 를 출력할 때; 열려 있더라도 -1이 지속적으로 반환됨을 알 수 있습니다. 포지션 고문.
 
Rita :

여기 자주 오지 않아서 잘 모르겠지만 "플러스 없는 MQL4" 라는 뜻인가요?

프리랜서에 대한 간단한 질문에 대한 답변에 방문자가 비용을 지불하도록 여기에서 답변할 수 있는 사람들이 이렇게 하는 것이 아니라고 생각하십니까?

흥미롭고, 업데이트된 MQL이 포함된 최신 버전의 MT4에서 작업하기 위해 지역 프로그래머-상업가가 I. Kim이 이러한 기능을 수정한 것으로 추정하는 금액은 얼마입니까?

Comment( NumberOfPositions(NULL, -1, Magic) ) ; 열려 있더라도 -1이 지속적으로 반환됨을 알 수 있습니다. 포지션 고문.

함수 매개변수로서의 NULL 은 매개변수가 없음을 의미합니다.

이 방법이 더 좋습니다) Comment ( NumberOfPositions( Symbol() , -1, Magic) ) ;

 
Rita :

여기 자주 오지 않아서 잘 모르겠지만 "플러스 없는 MQL4" 라는 뜻인가요?

프리랜서에 대한 간단한 질문에 대한 답변에 방문자가 비용을 지불하도록 여기에서 답변할 수 있는 사람들이 이렇게 하는 것이 아니라고 생각하십니까?

흥미롭고 프로그래머-상업가가 그러한 기능의 수정을 얼마나 추정합니까?

Comment( NumberOfPositions(NULL, -1, Magic) ); otkr이 있는 경우에도 -1이 지속적으로 반환됩니다. 포지션 고문.

MQL4++가 업데이트되었습니다. 여기에서 호출합니다!

나는 동일한 기능이 정확한 위치 수 를 제공합니다! 하지만 Comment()에 오류가 있습니다! 기능이 작동한다고 확신합니다!

다음과 같이 시도하십시오.

 int start() // или что у Вас там, как в обновлённом MQL4


   int BuyPos = NumberOfPositions( Symbol (),OP_BUY, Magic); //это вызов этой функции, чтобы знать, сколько у Вас баев
   int SellPos = NumberOfPositions( Symbol (),OP_SELL,Magic); //а это для селлов



   Comment ( "Buy " ,BuyPos, " Sell " ,SellPos);

따라서 차트에서 모든 것을 정확하게 볼 수 있습니다. BuyPos 및 SellPos 변수를 사용하여 조건을 확인하십시오! 내 상태를 확인하십시오:

       if (BuyPos == 0 && SellPos == 0 ) 
      {
// и так далее ...

행운을 빕니다!

 

팁을 주신 borilunad와 vadynik 에게 감사드립니다!

실제로 기능을 얻었습니다! 다음은 유용한 조언을 위한 겸손한 선물입니다. https://www.youtube.com/watch?v=SFJeHI2LVX4&feature=related !

 
borilunad :

이제 모든 것이 무서운 힘으로 상품화됩니다! 진심으로 공감합니다!

보리스, 그런 말 하기 부끄럽지 않아? 당신을 돕기 위해 쓰여진 페이지 수를 세십시오. 그리고 이것은 당신을 도운 모든 사람들에 대한 감사입니까? 나는 모든 사람을 기억하지 못하지만 Artyom(artmedia70)은 그의 영혼의 친절로 당신의 문제를 간호했고 그에 대한 응답으로 거기에도 도달했습니다 ...
 
Rita :

여기에 대안이 있습니다. 함수는 주문 수가 변경된 경우에만 호출됩니다. 또한 주문 유형이 변경된 경우에도 호출할 수 있습니다.

 // переменные глобального уровня
int Total[ 6 ];
int ot;

void OnTick ()
{
 if (ot != OrdersTotal ())
  CountTrades();

   Comment ( "Ордеров BUY " , Total[OP_BUY], "\n"
        , "Ордеров SELL " , Total[OP_SELL], "\n"
        , "Ордеров BUYLIMIT " , Total[OP_BUYLIMIT], "\n"
        , "Ордеров SELLLIMIT " , Total[OP_SELLLIMIT], "\n"
        , "Ордеров BUYSTOP " , Total[OP_BUYSTOP], "\n"
        , "Ордеров SELLSTOP " , Total[OP_SELLSTOP], "\n"
}
void CountTrades()
{ /*********************Подсчёт открытых ордеров**********************/
   ArrayInitialize (Total, 0 );
           int type, total = OrdersTotal (); ot = 0 ;
             for ( int i = 0 ; i < total; i++)
             {
               if ( OrderSelect (i, SELECT_BY_POS) && OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
               {
                type = OrderType();
                 Total[type] += 1 ;
                ot++;
               }
             }
} /*******************************************************************/
 
Rita :

팁을 주신 borilunad와 vadynik 에게 감사드립니다!

실제로 기능을 얻었습니다! 다음은 유용한 조언을 위한 겸손한 선물입니다. https://www.youtube.com/watch?v=SFJeHI2LVX4&feature=related !

고맙습니다! 다음에 제공되는 다른 기능만 실패할 수 있습니다. MQL4++로 작성되었습니다!