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

 
업데이트된 기능 목록
파일:
f_kimiv_1.rar  12 kb
 

이고르, 보류 주문 을 하기 위한 포인트의 최소값을 결정하는 기능이 있습니까?

고맙습니다!

 
mozg писал(а) >>
이고르, 보류 주문을 위한 최소 포인트 값을 결정하는 기능이 있습니까?
 MarketInfo ( Symbol ( ) , MODE_STOPLEVEL ) ;
 

안녕하세요 이고르입니다! EA가 신호를 반복하지 못하도록 하는 함수를 작성할 수 있습니까? 예를 들어, 구매 신호가 수신되었습니다. ) 즉, 이 코드 블록을 추가한 후 상태는 다음과 같아야 합니다. buy, sit, buy, sit, buy, sit .... 음, 등등.

 
Shniperson писал(а) >>

안녕하세요 이고르입니다! EA가 신호를 반복하지 못하도록 하는 함수를 작성할 수 있습니까? ... 즉, 이 코드 블록을 추가한 후 상태는 다음과 같아야 합니다. buy, sit, buy, sit, buy, sit .... 음, 등등..

그네...

 //+----------------------------------------------------------------------------+
//|  Управление позициями.                                                     |
//+----------------------------------------------------------------------------+
void ManagePositions ( ) {
   double sl = 0 , tp = 0 ;
   int     bs = GetTradeSignal ( ) ;

   if ( bs > 0 ) {
     if ( ExistPositions (NULL , OP_SELL , Magic ) ) ClosePositions ( NULL , OP_SELL , Magic ) ;
     if ( ! ExistPositions ( NULL , OP_BUY , Magic ) ) {
       if ( StopLoss   > 0 ) sl = Ask - StopLoss   * Point ; else sl = 0 ;
       if ( TakeProfit > 0 ) tp = Ask + TakeProfit * Point ; else tp = 0 ;
      OpenPosition ( NULL , OP_BUY , Lots , sl , tp , Magic ) ;
     }
   }
   if ( bs < 0 ) {
     if ( ExistPositions ( NULL , OP_BUY , Magic ) ) ClosePositions ( NULL , OP_BUY , Magic ) ;
     if ( ! ExistPositions ( NULL , OP_SELL , Magic ) ) {
       if ( StopLoss   > 0 ) sl = Bid + StopLoss   * Point ; else sl = 0 ;
       if ( TakeProfit > 0 ) tp = Bid - TakeProfit * Point ; else tp = 0 ;
      OpenPosition ( NULL , OP_SELL , Lots , sl , tp , Magic ) ;
     }
   }
}
//+----------------------------------------------------------------------------+
//|  Возвращает торговый сигнал:                                               |
//|     1 - покупай                                                            |
//|     0 - сиди, кури бамбук                                                  |
//|    -1 - продавай                                                           |
//+----------------------------------------------------------------------------+
int GetTradeSignal ( ) {
   int bs = 0 ;

   if ( условия для покупки ) bs = 1 ;
   if ( условия для продажи ) bs = - 1 ;

   return ( bs ) ;
}

존재 위치()

닫기 위치()

 

NormalizePrice() 함수.

이 함수는 정규화된 가격 값을 반환합니다. MarketInfo(MODE_TICKSIZE || MODE_DIGITS) 함수의 값을 사용하여 정규화를 수행합니다. NormalizePrice() 함수는 다음 매개변수를 사용합니다.

  • np - 정규화할 로트 값입니다. 필수 매개변수입니다.
  • sy - 거래 상품의 이름. NULL 또는 "" 는 현재 문자입니다. 기본값은 "" 입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 21.08.2008                                                     |
//|  Описание : Возвращает нормализованное под размер тика значение цены.      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    np - нормализуемое значение цены.                                       |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//+----------------------------------------------------------------------------+
double NormalizePrice ( double np , string sy = "" ) {
   if ( sy = = "" | | sy = = "0" ) sy = Symbol ( ) ;
   double pp , ts = MarketInfo ( Symbol ( ) , MODE_TICKSIZE ) ;
   int     di = MarketInfo ( Symbol ( ) , MODE_DIGITS ) ;

   if ( ts > 0 ) pp = NormalizeDouble ( np / ts , 0 ) * ts ;
   else {
     if ( di > 0 ) pp = NormalizeDouble ( np * di , 0 ) / di ; else pp = np ;
   }
   return ( pp ) ;
}

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

파일:
 

(초보 질문)

Dear KimIV 작성 기능:

GetExtremumZZPrice().


 double GetExtremumZZPrice ( string sy = "" , int tf = 0 , int ne = 0 , int dp = 12 , int dv = 5 , int bs = 3 ) {
   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   double zz ;
   int      i , k = iBars ( sy , tf ) , ke = 0 ;

   for ( i = 1 ; i < k ; i ++ ) {
     zz = iCustom ( sy , tf , " ZigZag " , dp , dv , bs , 0 , i ) ;
     if ( zz != 0 ) {
       ke ++;
       if ( ke > ne ) return ( zz ) ;
     }
   }
   Print ( " GetExtremumZZPrice(): Экстремум ЗигЗага номер " , ne , " не найден " ) ;
   return ( 0 ) ;
}
2개의 변수에서 마지막 최소값과 최대값의 가격을 나타내려면 어떤 코드가 있어야 합니까? (내 두뇌는 이미 끓고 있습니다 ;(( )
 
WroC писал(а) >>
2개의 변수에서 마지막 최소값과 최대값의 가격을 나타내려면 어떤 코드가 있어야 할까요?
 void start ( ) {
   double p1 = GetExtremumZZPrice ( "" , 0 , 0 ) ;
   double p2 = GetExtremumZZPrice ( "" , 0 , 1 ) ;

   if ( p1 > p2 ) Comment ( "Последний максимум " , p1 , " \n Последний минимум " , p2 ) ;
   else Comment ( "Последний максимум " , p2 , " \n Последний минимум " , p1 ) ;
}
 

KimIV

고맙습니다!

 
이고르, 안녕!
나는 최선을 다해 당신이 제시한 자료를 이해하려고 노력했습니다. 솔직히 말하면 아직 어드바이저나 스크립트를 써본 적도 없고 실전 경험도 없지만, 많은 주문을 할 때 도움이 될 스크립트를 만들어야 할 필요가 있다.
스크립트의 임무는 보류 중인 주문의 배치를 용이하게 하는 것입니다(주로 매수 정지 및 매도 정지 )
저것들. 예를 들어 스크립트 매개변수 세트에서:
1. 주문이 이루어진 수준(예: EUR\USD Buystop c 1.3000)
2. 각 주문의 크기(예: 0.01)
3. 주문 단계(예: 1핍)
4. 각 주문의 TP(예: 3핍)
5. 발주된 주문의 수(예: 70) 또는 보류 중인 주문을 해야 하는 수준(예: 최대 1.3070).
스크립트의 손실 중지 및 후행 중지 매개변수는 바람직하지만 필수는 아닙니다...
3~4시간에 한 번씩 컴퓨터를 켜고 상황을 분석하고 1핍의 주문 개시 기간으로 범위를 높이거나 낮추는 주문을 결정한다고 가정합니다. 최소 TP(3핍). 따라서 가격이 올바른 방향으로 움직이면 이러한 주문이 열리기 시작하고 원하는 가격에 도달하면 TP에 의해 닫힙니다. 또한 옵션은 TR에서 모두 닫힐 때 가능합니다. 가격 변동이 모든 주문을 통과하거나 주문의 일부(6개)가 열리고 "마이너스"가 됩니다. 이 경우 다른 매개변수(로트 크기, 단계, TP, 주문 수)를 사용하여 반대 방향으로 주문의 다음 "사다리"를 배치해야 하며, 이는 거래자에게 가장 최적으로 보일 것입니다.
거래일이 끝나면 "카운터 포지션"이 닫히고 거래자는 약 6개의 주문을 위(또는 아래)로 향하게 합니다.
전문가의 답변에 미리 감사드립니다!