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

 
M2012K :

안녕하세요, 동료 여러분, 제가 코드를 공부하면서 미묘한 부분을 잘 파악하지 못하고 다소 어려움이 있습니다.

내가 아는 한, 주문하기 전에 매개변수를 수정하려면 이 함수를 호출해야 합니다.

주문을 여는 라인이 있습니다:

if(구매 == true && Open[0]>UpTr && 거래) {

buy=OrderSend(Symbol(),OP_BUYSTOP,LOT(),NormalizeDouble(op,Digits),slippage,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"T",Magic,0,MediumBlue);

이것은 항소를 해야 합니까? 그리고 그것을 올바르게 하는 방법. 아니면 이 명령에 CorrectingPrice() 함수가 필요하지 않습니까?

미리 감사드립니다.

서버 에 거래 요청을 보내기 전에 StopLoss 및 TakeProfit 가격을 계산해야 합니다. 내가 볼 때 변수는 각각 sltp 에 저장됩니다.

따라서 변수 이름을 삽입하여 함수를 실행합니다.

CorrectingPrice(Symbol(), OP_BUY, Ask , sl , tp );

그녀는 당신을 위해 그들을 고칠 것입니다.

그리고 이 함수를 호출한 후 위치 열기 함수를 호출할 수 있습니다.

 

안녕하세요.

KimIV의 PriceOpenNearPos() 함수를 사용하고 있습니다. 알아차렸다 때때로   분실 가장 가까운 위치 다른 위치사용됩니다 . 그래서 나는 했다 코드 로그 에서 손실된 방법을 볼 수 있는 테스트용 가장 가까운 위치 . _ 확인해주십시오 그것은 일어나고 있다.

 int     magic    = 665544 ;

bool flag = false ;

 

int start()

  {

//----

if ((PriceOpenNearPos( NULL , OP_BUY, magic) != 0

&& PriceOpenNearPos( NULL , OP_BUY, magic)- 0.1 <  Bid

&& PriceOpenNearPos( NULL , OP_BUY, magic)+ 0.1 > Bid))

flag = true ;

else

flag = false ;

 

Print ( "::::::::::::::::::::::::: flag = " ,  flag );

Print ( "PriceOpenNearPos(NULL, OP_BUY, magic)= " , PriceOpenNearPos( NULL , OP_BUY, magic));

 

if (!flag)

OpenPosition( NULL , OP_BUY, 0.1 , 0 , 0 ,magic);  

//----

   return ( 0 );

  }

조건에 따라 위치가 서로 겹치지 않아야 하지만 테스터를 실행하면 위치가 겹치는 것을 볼 수 있습니다 . (usdjpy 5m).

 
artmedia70 :

서버에 거래 요청을 보내기 전에 StopLoss 및 TakeProfit 가격을 계산해야 합니다. 내가 볼 때 변수는 각각 sltp 에 저장됩니다.

따라서 변수 이름을 삽입하여 함수를 실행합니다.

그녀는 당신을 위해 그들을 고칠 것입니다.

그리고 이 함수를 호출한 후 위치 열기 함수를 호출할 수 있습니다.


감사합니다. :)
 
abeiks :

안녕하세요.

KimIV의 PriceOpenNearPos() 함수를 사용하고 있습니다. 주목했다 때때로   분실 가장 가까운 위치 다른 위치사용됩니다 . 그래서 나는 했다 코드 로그 에서 손실된 방법을 볼 수 있는 테스트용 가장 가까운 위치 . _ 확인해주십시오 그것은 일어나고 있다.

조건에 따라 위치가 서로 겹치지 않아야 하지만 테스터를 실행하면 위치가 겹치는 것을 볼 수 있습니다 . (usdjpy 5m).


검사 ... 테스터에서 ... 모든 것이 정상입니다. 위치가 어떻게 손실되는지 자신에게 보여주십시오. 또는 정확히 당신이 직위 상실이라고 부르는 것을 더 자세히 설명하십시오.

모든 추가 기능을 테스트할 준비가 된 EA가 첨부되어 있습니다.

파일:
 

우리는보고있다   부록. 조건에 따라 포지션이 중복되어서는 안 되지만, 터미널에서는 3, 9 포지션이 같은 가격(4, 6, 8도 마찬가지)으로 열리는 것이 분명합니다. 그런 다음 파일 로그를 보면 어느 시점에서 98.179 위치가 손실되고 다른 위치 98.301이 나타납니다. 따라서 위치가 겹칩니다.

 
abeiks :

우리는보고있다   부록. 조건에 따라 포지션이 중복되어서는 안 되지만, 터미널에서는 3, 9 포지션이 같은 가격(4, 6, 8도 마찬가지)으로 열리는 것이 분명합니다. 그런 다음 파일 로그를 보면 어느 시점에서 98.179 위치가 손실되고 다른 위치 98.301이 나타납니다. 따라서 위치가 겹칩니다.


코드, 제공된 자료 및 인내심에 감사드립니다!

기능을 수정했습니다 . 새 버전은 다음과 같습니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.07.2013                                                     |
//|  Описание : Возвращает цену открытия ближайшей к рынку позиции.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenNearPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double mi, oop= 0 , p;
   int     i, k= OrdersTotal (), pp=- 1 ;

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; 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 (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
             if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
             if (pp< 0 || pp> MathAbs (OrderOpenPrice()-mi)/p) {
              pp= MathAbs (OrderOpenPrice()-mi)/p;
              oop=OrderOpenPrice();
            }
          }
        }
      }
    }
  }
   return (oop);
}

지금 작동하는 방법은 다음과 같습니다. 중복되지 않습니다.

 
KimIV :


코드, 제공된 자료 및 인내심에 감사드립니다!

기능을 수정했습니다 . 새 버전은 다음과 같습니다.

지금 작동하는 방법은 다음과 같습니다. 중복되지 않습니다.


감사합니다. 작동합니다! :)
 
KimIV :


기능을 수정했습니다 . 새 버전은 다음과 같습니다.

Igor, 새 기능이나 일부 기능이 수정된 새 라이브러리가 어딘가에 게시되어 있습니까?

즉, 이미 수정 및 추가된 업데이트된 라이브러리...

 
artmedia70 :

Igor, 새 기능이나 일부 기능이 수정된 새 라이브러리가 어딘가에 게시되어 있습니까?

즉, 이미 수정 및 추가된 업데이트된 라이브러리...


아직 게시된 것이 없습니다 ... 모든 것이 어떻게 든 여가가 아닙니다 .. 그러나 예 ... 나는 지속적으로 무언가를 수정합니다. 그리고 그는 30편 이상의 새로운 작품을 썼습니다. 나는 시간과 욕망이있을 때 조용히 여기에 게시합니다))))

추신. 나는 모든 리브레를 그대로 비누에 보낼 수 있습니다. 그렇지 않으면 게시하면 설명을 준비하거나 최소한 기능의 목록과 목적을 표시해야합니다 ...

 
KimIV :


아직 게시된 것이 없습니다 ... 모든 것이 어떻게 든 여가가 아닙니다 .. 그러나 예 ... 나는 지속적으로 무언가를 수정합니다. 그리고 그는 30편 이상의 새로운 작품을 썼습니다. 나는 시간과 욕망이있을 때 조용히 여기에 게시합니다))))

추신. 나는 모든 리브레를 그대로 비누에 보낼 수 있습니다. 그렇지 않으면 게시하면 설명을 준비하거나 최소한 기능의 목록과 목적을 표시해야합니다 ...

에... 집어들고 가시면 재미있을거에요 :) 개인비누 넣어드릴께요.