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

 
tim-time :

... e-SignalOfTrade Expert Advisor에 PUSH 알림을 추가하시겠습니까?

추가됨... 내 사이트에서 다운로드...
 
KimIV :

코드로 오류에 대한 짧거나 자세한 러시아어 설명을 반환하는 ErrorRU() 함수를 컴파일했습니다. 트레이드 서버에서 반환된 오류와 MQL 프로그램 실행 오류는 모두 인식됩니다. 그러나 모든 사람에게 "해야 할 일"이라는 권장 사항과 함께 오류에 대한 자세한 설명이 있지만 거기에는 무엇이 있습니다.

테스트를 위해 스크립트의 일부로 함수를 게시합니다.

누군가가 MQH 파일 형식의 변형이 필요한 경우 내 사이트 에서 가져옵니다.


이고르 인사드립니다. 이 기능을 주셔서 감사합니다, 많이 필요합니다
 

안녕하세요 KimIV

귀하의 사이트 에는 i-Profit.mq4라는 멋진 기능이 있습니다.

저울에서 저울 상태에 대한 데이터를 추출하는 방법을 알려주십시오.

// 0 - 현재 잔액

// 1 - 하루 시작 시 잔액

// 2 - 주의 시작 시 잔액

// 3 - 월초 잔액

// 4 - 분기 시작 시 잔액

// 5 - 연초 잔액

// 6 - 사용자 지정 날짜의 잔액

 

ProfitByPrice() 함수.

이 함수는 내 예측 함수의 작은 집합 중 하나입니다. 미래를 보여 준다는 의미에서 예측적입니다. 즉, "사건이 발생하면 어떻게 될까요?"라는 질문에 답합니다. 예를 들어 이 함수는 현재 포지션이 매개변수로 전달된 가격으로 마감된 경우 예금 통화로 이익을 반환합니다.

  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 모든 거래 작업을 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
  • cp - 예상 마감 가격. 기본값 0 은 현재 입찰 가격을 의미합니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2013                                                     |
//|  Описание : Возвращает профит в валюте депозита, если текущие позиции      |
//|             будут закрыты по цене, переданной в качестве параметра.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - операция                             (-1 - любая позиция)          |
//|    mn - MagicNumber                          (-1 - любой магик)            |
//|    cp - цена предполагаемого закрытия (Bid)  ( 0 - текущая цена)           |
//+----------------------------------------------------------------------------+
double ProfitByPrice( int op=- 1 , int mn=- 1 , double cp= 0 ) {
   double pr= 0 ;
   double po=MarketInfo( Symbol (), MODE_POINT);
   double sp=MarketInfo( Symbol (), MODE_SPREAD);
   double tv=MarketInfo( Symbol (), MODE_TICKVALUE);
   int     i, k= OrdersTotal ();

  RefreshRates();
   if (cp<= 0 ) cp=Bid;
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderSymbol()== Symbol () && (op< 0 || OrderType()==op)) {
         if (mn< 0 || OrderMagicNumber()==mn) {
           if (OrderType()==OP_BUY) {
            pr+=(cp-OrderOpenPrice())/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
           if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-cp-Ask+Bid)/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
   return (pr);
}

추신. 기능 테스트를 위한 기존 스크립트가 첨부되어 있습니다.

ZZY. 매개변수 사이에는 전통적인 sy 가 없습니다. 다른 매개변수에 전달된 가격은 거래 상품에 연결되어야 합니다. 너무 신경쓰지 않고 현재의 상징에 집착하기로 했다.

파일:
 
친애하는 이고르! 프로그래밍의 첫 단계를 더 쉽게 만들어주는 기능에 감사드립니다! 저를 도와주시겠습니까? 한 위치를 닫는 함수가 필요하지만 다른 함수를 호출하지 않고 Select를 포함하려면 3번의 시도와 오류 처리가 필요합니다! 그리고 처음에는 프로세스가 느려지지 않도록 Select 없이 검사 기능이 있는 조건을 지정합니다. 다양한 검사로 시작 시 Select 사이클을 사용하는 동안 Select 없이 닫기 기능을 호출하면 거의 두 배나 느려집니다! 당신이 나에게 무엇을 조언할 수 있습니까? 고맙습니다!
 

김 IV :

이 가격에서 거리(Distance) 거리 내에 다른 주문이나 포지션이 없는 경우 계산된 가격 으로 보류 주문 을 해야 합니다. 당신은 그런 기능이없는 것 같습니다 : 주어진 가격에서 떨어진 주문이나 위치의 존재?

 
KimIV 는 여기에 보이지 않는 것 같습니다! :(
 
khorosh :

김 IV :

이 가격에서 거리(Distance) 거리 내에 다른 주문이나 포지션이 없는 경우 계산된 가격으로 보류 주문을 해야 합니다. 당신은 그런 기능이없는 것 같습니다 : 주어진 가격에서 떨어진 주문이나 위치의 존재?


이것 과 유추하여 무언가를 묘사 할 수 있습니다 ...

업데이트...

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//|  Версия   : 24.06.2013                                                     |
//|  Описание : Возвращает флаг существования ордера или позиции               |
//|             около заданной цены.                                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    zp - заданная цена                                                      |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    op - торговая операция               (    -1      - любая операция)     |
//|    mn - MagicNumber                     (    -1      - любой магик)        |
//|    ds - расстояние в пунктах от цены    (  1000000   - по умолчанию)       |
//+----------------------------------------------------------------------------+
bool ExistOPNearPrice( double zp, string sy= "" , int op=- 1 , int mn=- 1 , int ds= 1000000 ) {
   int i, k= OrdersTotal (), ot;

   if (sy== "" || sy== "0" ) sy= Symbol ();
   double p=MarketInfo(sy, MODE_POINT);
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
       if ((OrderSymbol()==sy) && (op< 0 || ot==op)) {
         if (mn< 0 || OrderMagicNumber()==mn) {
           if ( MathAbs (OrderOpenPrice()-zp)<ds*p) return (True);
        }
      }
    }
  }
   return (False);
}

ExistOPNearPrice() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.

 
borilunad :
친애하는 이고르! 프로그래밍의 첫 단계를 더 쉽게 만들어주는 기능에 감사드립니다! 저를 도와주시겠습니까? 한 위치를 닫는 함수가 필요하지만 다른 함수를 호출하지 않고 Select를 포함하려면 3번의 시도와 오류 처리가 필요합니다! 그리고 처음에는 프로세스가 느려지지 않도록 Select 없이 검사 기능이 있는 조건을 지정합니다. 다양한 검사로 시작 시 Select 사이클을 사용하는 동안 Select 없이 닫기 기능을 호출하면 거의 두 배나 느려집니다! 당신은 나에게 무엇을 조언할 수 있습니까? 고맙습니다!
ClosePosBySelect()가 옳지 않습니까?
 
artmedia70 :
ClosePosBySelect()가 옳지 않습니까?
이것은 결과적인 오류와 함께 다른 함수에 대한 많은 불필요한 호출입니다.