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

 
KimIV :
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이면 모든 구매를 닫고 판매합니다.

:))) 물론 도움을 주셔서 감사합니다만, 제 실수가 충분히 설명을 드리지 못했고, CCI 지표는 50 간격으로 추세의 방향과 변화를 보여주고, 가격이 EMA 8에 닿을 때 오프닝이 발생합니다. , 손절매와 이익실현 또한 수정을 결정하는 데 사용되는 기타 지표입니다. 그림은 다음과 같습니다. CCI가 +100을 돌파할 때 EMA가 터치하면 매수 포지션이 열리며, CCI가 (+10이든 -20이든) 어디에 있든 상관없습니다. 중요한 것은 그것이 교차할 때 판매가 시작된다는 것입니다 - 100. CCI>=+100과 CCI<=-100 사이의 시간 간격 동안 100개의 양초가 통과할 수 있고 10개 이상의 위치를 열 수 있습니다. 나는 그것이 명확하기를 바랍니다. 조언해 주시면 기쁠 것입니다.

 
B_Dima писал (а):
내 실수, 내가 충분히 명확하게 설명하지 않았습니다

글쎄요... 당신의 실수는 바로 당신에게 달려있습니다 :-)

정확한 방향을 알려드렸습니다. 목표로 이어질 것입니다. 그러니 계속...

 
KimIV :

ModifyOrder() 함수 사용의 예.

가장 먼저 나는 이미 반복적으로 질문을 받은 예를 제시하기로 결정했습니다. 이것은 시장 주문 Market Watch 의 시장 실행 조건에서 포지션을 여는 것입니다. 이는 시장 가격으로 포지션을 오픈하는 주문을 하는 동시에 보류 중인 주문을 첨부하는 것이 불가능한 경우입니다. Market Watch 조건에서 이러한 개시는 두 단계로 수행되어야 합니다. 먼저 포지션을 개설한 다음 보류 중인 주문을 첨부합니다. 즉, StopLossTakeProfit 가격 수준을 설정합니다.

1. 현재 상품의 0.1랏을 매수하고 30포인트의 손절매를 설정합니다.

 int ti = OpenPosition ( NULL , OP_BUY , 0.1 ) ;
if ( OrderSelect ( ti , SELECT_BY_TICKET ))
  ModifyOrder ( - 1 , Ask - 30 * Point , - 1 , clModifyBuy ) ;

2. 현재 상품의 0.15랏을 매도하고 SL=45, TP=99로 설정합니다.

 int ti = OpenPosition ( NULL , OP_SELL , 0.15 ) ;
if ( OrderSelect ( ti , SELECT_BY_TICKET ))
  ModifyOrder ( - 1 , Bid + 45 * Point , Bid - 99 * Point , clModifySell ) ;
예고편에서 예제가 있는 작업 스크립트.


Igor, 다시 확인하십시오 - 스크립트가 작동하지 않습니다:

1) 일반 DC에서는 오픈 주문 수에 제한이 없습니다(무제한 오픈)

2) 주문이 시장에서 열리는 DC에서 - (Error131). 예를 들어 NorthFinance로 테스트할 수 있습니다.

 

너무 많은 유용한 기능이 게시되었습니다 ... 아마도 지정된 조건에 따라 보류중인 주문, 포지션, 테이크 및 손절매 설정, 주문 및 포지션 수정을 열고 닫을 수 있는 거래 고문을 작성하기위한 템플릿을 작성하고 싶을 것입니다 사용자에 의해 ... 이러한 템플릿을 사용하면 조건 블록만 변경되는 Expert Advisor를 빠르게 작성할 수 있습니다(물론 이 부분은 전략에 따라 사용자가 삽입합니다)...


Kim의 유용한 기능이 있다면, 즉. 다용성 사용의 일부 표준, Kim의 거래 고문을 위한 템플릿 코드를 게시하지 않으시겠습니까?

 
Set777 писал (а):
Igor, 다시 확인하십시오 - 스크립트가 작동하지 않습니다:
1) 일반 DC에서는 오픈 주문 수에 제한이 없습니다(무제한 오픈)
2) 주문이 시장에서 열리는 DC에서 - (Error131). 예를 들어 NorthFinance로 테스트할 수 있습니다.

1. 스크립트에서 열린 자리의 수에 대한 확인이 없습니다. 스크립트를 몇 번 실행하면 열릴 위치가 너무 많습니다.

2. 오류 131 - 잘못된 볼륨 , 로트 크기. 아마도 숫자 0.15일 것입니다. 0.2로 변경

 
kharko писал (а):
유용한 기능이 너무 많아서...

계획한 것의 5분의 1도 안 펼쳤는데... 가을까지 여기 계신 모든 분들 귀찮게 할게요. 그러니 참으세요...

하르코 는 다음과 같이 썼다.
사용자가 지정한 조건에 따라 보류 중인 주문, 포지션을 열고 닫고 손실을 설정하고 손절하고 주문과 포지션을 수정할 수 있는 거래 고문을 작성하기 위한 템플릿을 작성 하려는 바람이 있을 수 있습니다.
패턴... 패턴... 좋은 생각입니다! 고맙습니다! 하지만 먼저 기능...
 

DistMarketAndPos() 함수.

잘! 더 재미있는 기능을 얻으십시오! 예를 들어, 시장과 가장 가까운 위치 사이의 거리를 포인트 단위로 반환합니다. 확인된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • 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      - любой магик)             |
//+----------------------------------------------------------------------------+
int DistMarketAndPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   double d , p ;
   int i , k = OrdersTotal () , r = 1000000 ;

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

DistMarketAndPos() 함수를 사용하는 예.

시장이 가장 가까운 위치에서 얼마나 멀리 떨어져 있는지를 결정하는 함수가 필요한 이유는 무엇입니까? 최소한 네 가지 주요 옵션이 표시됩니다.

  1. 구매 또는 판매. 시장이 우리 쪽으로 움직였다. 그리고 일정 거리를 지나면 기존 포지션이 일정 이익을 얻었기 때문에 바로 충전을 하고 같은 방향으로 다시 진입합니다.
  2. 구매 또는 판매. 시장이 우리 쪽으로 움직였다. 그리고 일정 거리를 이동하고 기존 위치가 일정 이익을 얻 자마자 우리는 즉시 모든 것을 이해합니다! 반전이 임박했다! 뒤집을 시간입니다. 우리는 현재 위치 를 닫고 반대 방향으로 엽니다.
  3. 구매 또는 판매. 시장은 우리에게 불리했다. 그러나 어떤 이유로 우리는 우리가 옳고 가장 가까운 진입점에서 어느 정도 거리에 있다고 확신합니다. 즉, 평균 손실 수준에서 우리는 같은 방향으로 열립니다.
  4. 구매 또는 판매. 시장은 우리에게 불리했다. 그리고 입력에 오류가 있음을 깨달았습니다. 따라서 우리는 일정 수준의 손실을 고정하고 다른 방향으로 엽니다.

추신. 나열된 옵션의 특정 구현이 필요한 경우 여기에 애플리케이션을 작성하십시오. 나는 내가 위에 열거한 틀 안에서 모든 소원을 성취할 것입니다.

ZY-ZY. 예고편에는 DistMarketAndPos() 함수를 실험하기 위한 스크립트가 포함되어 있습니다.

파일:
 
KimIV님 , e-TFL_v2 Expert Advisor 에 포함된 bool idPriceLevel() 함수에 오류가 있습니다. 마지막 조건에서 gdUpPrice==0 이 두 번 반복됩니다. 아마도 두 번째 경우에는 gdDnPrice==0 을 쓰고 싶었을 것입니다. . 어떤 이유로이 고문은 내 테스터에서 시각적 모드로 작동하지만 설명에서 판매 및 구매 수준에 대해보고하지만 데모 계정에서 직책을 열지 않습니다. 뭐가 잘못됐는지 말해줄 수도 있어요.
 
khorosh :
e-TFL_v2 Expert Advisor 에 포함된 bool idPriceLevel() 함수에 오류가 있습니다. 마지막 조건에서 gdUpPrice==0 이 두 번 반복됩니다. 아마도 두 번째 경우에는 gdDnPrice==0 을 작성하고 싶었을 것입니다.

덕분에! e-TFL_v2 Expert Advisor의 수정된 버전이 사이트에 업로드되었습니다.


호로쉬 :
어떤 이유로이 고문은 내 테스터에서 시각적 모드로 작동하지만 설명에서 판매 및 구매 수준에 대해보고하지만 데모 계정에서 직책을 열지 않습니다. 무엇이 잘못되었는지 말해 줄 수 있습니다.

잘 모르겠습니다... 방금 NorthFinance 데모에서 이 Expert Advisor 테스트를 마쳤습니다. 어제 모스크바에서 친구가 전화했습니다. 같은 고문에 대해 고발했습니다. 예를 들어, 그는 라인에서 포지션을 연 다음, 다른 포지션을 오픈하고, 당신이 그를 막을 때까지 그는 많은 포지션을 오픈할 수 있습니다. 따라서 테스트의 목적은 두 가지였습니다.

1. 귀하의 질문에. 일반 건강 검진.

2. 내 친구의 질문에. 한 줄에서 한 위치만 엽니다.

테스트를 위해 e-TFL_v2 Expert Advisor 를 5분 TF EURUSD, GBPUSD, USDCHF 및 USDJPY에 배치했습니다. 추세선을 사용하여 마지막 20-30개의 막대에 대한 채널을 그렸습니다. 결과적으로 고문은 정상적으로 작동했습니다. 유로는 맨 아래에서 매수했고 엔은 맨 위에서 매도했습니다. 파운드와 추장도 모든 것이 올바르게 해결되었습니다. 따라서 스스로 확인하십시오. 노동자 고문.