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

 
KimIV >> :

아니 ... 쓴 ...

ClosePosBySortLots() 함수.

이 기능은 로트 크기별로 정렬된 순서로 위치를 마감합니다. 즉, 이 기능을 이용하여 로트 크기의 오름차순 또는 내림차순으로 포지션을 청산할 수 있습니다. ClosePosBySortLots() 함수는 다음과 같은 선택적 매개변수를 허용합니다.

  • sy - 거래 상품의 이름. "" - 모든 계측기, NULL - 현재 계측기. 기본값은 ""입니다.
  • op - 무역 작업 유형. 유효한 값 -1 - 모든 위치, OP_BUY - 매수, OP_SELL - 매도. 기본값은 -1입니다.
  • mn - 고유한 거래 작업 식별자인 MagicNumber입니다. 기본값은 -1 - 모든 마법입니다.
  • sd - 로트 크기 정렬 방향. MODE_ASCEND의 유효한 값은 오름차순, MODE_DESCEND는 내림차순입니다. 기본값은 MODE_DESCEND입니다.

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

이고르 감사합니다. 나는 너를 위해기도 할거야 :-)

 

프라이빗

rsi

예를 들어 주셔서 감사합니다!

어렵지 않은 경우 다음을 해독하십시오.

var = Close [ 0 ]
무엇과 함께 먹습니까?
 

어... 여기서 그만... 죄송합니다... 삭제... 생성은 언제나 환영입니다!

첨부 파일의 함수에 대한 참조를 가져옵니다.

파일:
f_kimiv.rar  12 kb
 
WroC писал(а) >>

어렵지 않은 경우 다음을 해독하십시오.

var = 닫기 [ 0 ]

무엇과 함께 먹습니까?

var 라는 변수에는 현재 막대의 종가 값(0 숫자)이 할당됩니다. 그러나 현재 바의 형성이 아직 끝나지 않았기 때문에 Close[0]Bid , 즉 현재 가격과 동일합니다.

 

KimIV


그리고 Marketinfo를 통해 어떻게든 모든 것을 시도했지만 더 쉬운 것으로 판명되었습니다 ....

 
if ( ExistPositions ( NULL , OP_BUY , Magic ) ) {
 po = PriceOpenLastPos ( NULL , OP_BUY , Magic ) ;
 if ( ! ExistOrders ( NULL , OP_SELLSTOP , Magic + 1 )
 & & ! ExistPositions ( NULL , OP_SELL , Magic + 1 ) ) {
 pp = po - offSet * Point ;
 if ( StopLoss > 0 ) sl = pp + StopLoss * Point ; else sl = 0 ;
 if ( TakeProfit > 0 ) tp = pp - TakeProfit * Point ; else tp = 0 ;
 SetOrder ( NULL , OP_SELLSTOP , ll , pp , sl , tp , Magic + 3 ) ;

안녕하세요.
이고르, 잠금 전술을 구현하는 기능이 있습니까?
45페이지에서 이에 사용할 수 있는 예를 제시했습니다.

그러나 이 접근 방식은 미결 주문 수를 1로 제한합니다.
예를 들어 상황을 고려하면 다음과 같습니다.
열린 위치 에서 LockStep=20
LockStopLoss=10
1500 - 오픈 매수\1480 - 오픈 매도

1470 - 오픈 매수\1450 - 오픈 매도

1460 - 판매 중지 1450 닫기\판매 중지 1450 열기
1490 - 판매 중지 1480 닫기\ 판매 중지 1450 열기
주어진 기능에 따라 두 개의 Sellstop 1450 주문이 열립니다.

PS 노고에 진심으로 감사드립니다. 사실 정보도 많고 도움이 많이 되는 부분이 있어서 대부분 서비스에 활용했습니다.



 
demsan писал(а) >>
이고르, 잠금 전술을 구현하는 기능이 있습니까?

아니요, 그런 기능은 없습니다. 따라서 기존 것에서 결합하고 자신의 것을 추가해야 합니다. 이러한 번들을 구성하는 것이 좋습니다. 하나의 Buy/SellStop 쌍 - 하나의 마법. 다음 쌍은 다음 마술사입니다.

 

StringLower() 함수.

이 함수는 문자열을 소문자로 변환합니다. 모든 UPPER(큰) 문자는 소문자(작게)가 됩니다. StringLower() 함수는 입력 문자열인 필수 매개변수를 하나만 사용합니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает строку в нижнем регистре                            |
//+----------------------------------------------------------------------------+
string StringLower ( string s ) {
   int c , i , k = StringLen ( s ) , n ;
   for ( i = 0 ; i < k ; i + + ) {
    n = 0 ;
    c = StringGetChar ( s , i ) ;
     if ( c > 64 & & c < 91 ) n = c + 32 ;      // A-Z -> a-z
     if ( c > 191 & & c < 224 ) n = c + 32 ;    // А-Я -> а-я
     if ( c = = 168 ) n = 184 ;              //  Ё  ->  ё
     if ( n > 0 ) s = StringSetChar ( s , i , n ) ;
   }
   return ( s ) ;
}

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

파일:
 

StringUpper() 함수.

이 함수는 문자열을 대문자로 변환합니다. 모든 소문자(작은) 문자는 UPPER(큰)가 됩니다. StringUpper() 함수는 입력 문자열인 필수 매개변수를 하나만 사용합니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает строку в ВЕРХНЕМ регистре                           |
//+----------------------------------------------------------------------------+
string StringUpper ( string s ) {
   int c , i , k = StringLen ( s ) , n ;
   for ( i = 0 ; i < k ; i + + ) {
    n = 0 ;
    c = StringGetChar ( s , i ) ;
     if ( c > 96 & & c < 123 ) n = c - 32 ;      // a-z -> A-Z
     if ( c > 223 & & c < 256 ) n = c - 32 ;    // а-я -> А-Я
     if ( c = = 184 ) n = 168 ;              //  ё  ->  Ё
     if ( n > 0 ) s = StringSetChar ( s , i , n ) ;
   }
   return ( s ) ;
}

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

파일:
 

StringToArrayDouble() 함수.

이 함수는 문자열을 구성 실수로 분할하고 각 숫자는 별도의 요소로 배열에 추가됩니다. 얼마나 많은 실수가 문자열에 포함될 것인지, 동일한 수의 요소가 배열에 추가될 것입니다. 세미콜론은 구분 기호로 인식됩니다. StringToArrayDouble() 함수는 배열 요소의 수를 반환하고 다음 필수 매개변수를 사용합니다.

  • st - 세미콜론으로 구분된 실수 문자열입니다.
  • ad - 실수의 배열입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.10.2008                                                     |
//|  Описание : Перенос вещественных чисел из строки в массив                  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    st - строка вещественных чисел через точку с запятой                    |
//|    ad - массив вещественных чисел                                          |
//+----------------------------------------------------------------------------+
//|  Возврат:                                                                  |
//|    Количество элементов в массиве                                          |
//+----------------------------------------------------------------------------+
int StringToArrayDouble ( string st , double & ad [ ] ) {
   int     i = 0 , np ;
   string stp ;

   ArrayResize ( ad , 0 ) ;
   while ( StringLen ( st ) > 0 ) {
    np = StringFind ( st , ";" ) ;
     if ( np < 0 ) {
      stp = st ;
      st = "" ;
     } else {
      stp = StringSubstr ( st , 0 , np ) ;
      st = StringSubstr ( st , np + 1 ) ;
     }
    i + + ;
     ArrayResize ( ad , i ) ;
    ad [ i - 1 ] = StrToDouble ( stp ) ;
   }
   return ( ArraySize ( ad ) ) ;
}

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