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

 
KimIV :

한편, 툴바의 "Expert Advisors" 버튼을 눌러 Expert Advisor를 중지할 수 있습니다.

글쎄, 원칙적으로는 옵션으로 감사합니다. 고문을 떠날 매개 변수가 많지 않으므로 어렵지 않습니다.

 

ClosePosBySizeProfitInCurrency() 함수 사용 예

특히 ClosePosBySizeProfitInCurrency() 함수의 작업을 보여주기 위해 Expert Advisor를 작성했습니다.
e-CloseByProfitPosInCurrency , 예금 통화의 이익이 특정 지정된 값을 초과하는 포지션만 마감합니다. Expert Advisor는 하나의 차트와 여러 차트에 모두 설치할 수 있습니다. 어드바이저의 외부 매개변수를 사용하여 마감된 위치 목록을 지정할 수 있습니다.

  • 기호 ="0" - 거래 수단. 다음 값이 허용됩니다. "0" - 모든 거래 상품, "" - 현재 상품 및 시장 시계의 모든 값(EURUSD, GBPUSD 등).
  • 작업 =-1 - 무역 작업. 유효한 값: -1 - 모든 거래 작업, 0 - OP_BUY, 1 - OP_SELL.
  • 이익 =50 - 예금 통화의 이익.
  • MagicNumber = 0 - 위치 ID.
 

모두에게 좋은 하루.

Igor, 주어진 손실에 도달했을 때 ClosePosBySizeProfitInCurrency()와 유사한 방식으로 수익성이 없는 포지션을 닫는 함수가 있습니까? (또는 결합하여 손익에 대한 마감을 설정할 수 있습니다.)

내가 이해하는 한, 마이너스 기호를 사용하여 OrderProfit () 에 대한 pr 매개변수를 간단히 설정할 수 있습니다 . 그러면 원하는 것을 얻을 수 있습니다.

그러나 포인트(예금 통화가 아님)로 임계값을 설정할 수 있습니까? 그렇다면 어떻게? (이익 및 손절을 제안하지 마십시오)

 
rid писал (а):
Igor, 주어진 손실에 도달했을 때 ClosePosBySizeProfitInCurrency()와 유사한 방식으로 수익성이 없는 포지션을 닫는 함수가 있습니까? (또는 결합하여 손익에 대한 마감을 설정할 수 있습니다.)

아니요, 아직 이 기능이 없습니다. 그러나 ClosePosBySizeProfitInCurrency()를 다시 만들 수 있습니다.


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

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = k - 1 ; i >= 0 ; 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 ( OrderProfit () + OrderSwap () <- MathAbs ( pr )) ClosePosBySelect () ;
           }
         }
       }
     }
   }
}

손실이 양수(손실)와 음수(마이너스 기호가 있는 이득)로 양도될 수 있도록 만들었습니다.

리드 는 다음과 같이 썼습니다.
내가 이해하는 한, 마이너스 기호를 사용하여 OrderProfit () 에 대한 pr 매개변수를 간단히 설정할 수 있습니다 . 그러면 원하는 것을 얻을 수 있습니다.

그러나 포인트(예금 통화가 아님)로 임계값을 설정할 수 있습니까? 그렇다면 어떻게? (이익 및 손절을 제안하지 마십시오)

e-CloseByProfit EA 코드를 보십시오.

 
덕분에.
 

ClosePositions() 함수.

이 함수는 매개변수가 지정된 값을 충족하는 위치를 닫습니다.

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. NULL은 현재 도구를 의미하고 ""(기본값)은 모든 도구를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY, OP_SELL 또는 -1. 기본값 -1은 임의의 위치를 의미합니다.
  • mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие позиций по рыночной цене                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePositions ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   int i , k = OrdersTotal () ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = k - 1 ; i >= 0 ; 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 ) ClosePosBySelect () ;
         }
       }
     }
   }
}
 
도와주세요!!! 4일 나는 첫눈에 간단한 일에 머리를 긁적였다. 등록이 필요하며 CCI 값이 100 이상이면 값이 -100 미만이 될 때까지 매수 포지션을 열고 -100 미만이 될 때 100 이상이 될 때까지 매도를 엽니다.
 

ClosePosFirstProfit() 함수.

이 기능은 특정 순서, 즉 먼저 수익성이 있고 나머지는 모두 포지션을 마감합니다. 폐쇄 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. NULL은 현재 도구를 의미하고 ""(기본값)은 모든 도구를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY, OP_SELL 또는 -1. 기본값 -1은 임의의 위치를 의미합니다.
  • mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие позиций по рыночной цене сначала прибыльных           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePosFirstProfit ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   int i , k = OrdersTotal () ;
   if ( sy == " 0 " ) sy = Symbol () ;

   // Сначала закрываем прибыльные позиции
   for ( i = k - 1 ; i >= 0 ; 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 ( OrderProfit () + OrderSwap () > 0 ) ClosePosBySelect () ;
           }
         }
       }
     }
   }
   // Потом все остальные
   k = OrdersTotal () ;
   for ( i = k - 1 ; i >= 0 ; 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 ) ClosePosBySelect () ;
         }
       }
     }
   }
}
 

함수 ClosePosWithMaxProfitInCurrency().

이 기능은 예금 통화에서 최대 양수 이익으로 한 포지션을 마감합니다. 즉, 현재 각각의 이익이 -34, 15, 73, -90, 41인 5개 포지션 중 예금 통화로 73단위 이익이 있는 포지션이 청산됩니다. 폐쇄 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. NULL은 현재 도구를 의미하고 ""(기본값)은 모든 도구를 의미합니다.
  • op - 거래 작업 , 위치 유형. 유효한 값: OP_BUY, OP_SELL 또는 -1. 기본값 -1은 임의의 위치를 의미합니다.
  • mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие одной позиции с максимальным положительным профитом   |
//|             в валюте депозита                                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePosWithMaxProfitInCurrency ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   double pr = 0 ;
   int      i , k = OrdersTotal () , np =- 1 ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = k - 1 ; i >= 0 ; i -- ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if (( OrderSymbol () == sy || sy == "" ) && ( op < 0 || OrderType () == op )) {
         if ( mn < 0 || OrderMagicNumber () == mn ) {
           if ( pr < OrderProfit () + OrderSwap ()) {
             pr = OrderProfit () + OrderSwap () ;
             np = i ;
           }
         }
       }
     }
   }
   if ( np >= 0 ) {
     if ( OrderSelect ( np , SELECT_BY_POS , MODE_TRADES )) {
       ClosePosBySelect () ;
     }
   }
}
 
B_Dima :
CCI 값이 100보다 크면 값이 -100보다 작아질 때까지 매수 포지션을 열고 -100보다 작으면 100보다 클 때까지 매도 포지션을 엽니다.

Dima에게 다음 기능을 제공할 수 있습니다.

 int CCI_period = 14 ;
int Applied_Price = PRICE_CLOSE ;

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.24.2008                                                     |
//|  Описание : Возвращает торговый сигнал:                                    |
//|              1 - покупай                                                   |
//|              0 - сиди, кури бамбук                                         |
//|             -1 - продавай                                                  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    nb - номер бара                 (    0       - текущий номер бара)      |
//+----------------------------------------------------------------------------+
int GetTradeSignal ( string sy = "" , int tf = 0 , int nb = 0 ) {
   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   double cci0 = iCCI ( sy , tf , CCI_period , Applied_Price , nb ) ;
   double cci1 = iCCI ( sy , tf , CCI_period , Applied_Price , nb + 1 ) ;
   int bs = 0 ;

   if ( cci1 <=+ 100 && cci0 >+ 100 ) bs =+ 1 ;
   if ( cci1 >=- 100 && cci0 <- 100 ) bs =- 1 ;

   return ( bs ) ;
}

이 함수는 매수할 때 1을 반환하고 매도할 때 -1을 반환합니다. 구매 / 판매 조건은 귀하의 희망에 해당합니다. 이제 모든 틱에서 다음을 수행하기만 하면 됩니다.

1. GetTradeSignal() 함수의 값을 가져옵니다.

2. 수신된 값이 ==0이면 아무 작업도 수행하지 않습니다.

3. 수신된 값이 >0이면 모든 판매를 종료하고 구매합니다.

4. 받은 값이 <0이면 모든 구매를 닫고 판매합니다.