"KimIV의 유용한 기능"만. - 페이지 11

 
방금 이러한 기능을 접했고 이 프로그래머의 논리를 이해하기로 결정했습니다. 여기서 저는 질문을 하고 있습니다. 이것이 포럼의 목적입니다.
 
satop :

DistMarketAndPos() 함수.

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

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. "" 또는 NULL은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY, OP_SELL 또는 -1. 기본값 -1은 임의의 위치를 의미합니다.
  • mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.


사탑 :

DistMarketAndPos() 함수.

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

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. "" 또는 NULL은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY, OP_SELL 또는 -1. 기본값 -1은 임의의 위치를 의미합니다.
  • mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.


친애하는 Igor Kim, 이것은 아주 좋은 기능입니다. 나는 그것을 앞뒤로 작동하게 하려고 노력하고 있고 그것을 가지고 앞뒤로 주문을 열려고 노력하고 있습니다. 한 가지 실수가 있습니다. 저는 그것을 제거할 수 없습니다. 고칠 수 있도록 도와주세요. 아래 오류 주석

외부 정수 TakeProfit = 150;

외부 이중 로트 = 0.01;

extern int MAGIC=1234;

정수 시작()

{

if (DistMarketAndPos()>150)

{

OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point);

}

리턴(0);

}

int DistMarketAndPos(문자열 sy="", int op=OP_BUY, int mn=-1)

{

더블 d,p;

정수 i, k=OrdersTotal(), r=1000000;


if (sy=="" || sy=="0") sy=Symbol();

p=시장정보(sy, MODE_POINT);

if (p==0) if (StringFind(sy, "")<0) p=0.00001; 그렇지 않으면 p=0.01;

(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 (주문 유형()==OP_SELL)

{

d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;

if (r>d) r=NormalizeDouble(d, 0);

}

}

}

}

}

//------------------------------------------------ -------------------------------------------------- --------------------------------------------------


if (DistMarketAndPos()>150)

{

OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point);

}

리턴(0);


{

int DistMarketAndPos(string sy="", int op=OP_SELL, int mn=-1) //이 줄은 1개의 오류를 제공합니다.

// 이 줄이 제거되면

//그런 다음 컴파일하지만

// op=OP_SELL을 설정하지 않습니다.

//그것이 없으면 어드바이저는 다음과 같이 생각할 것입니다.

//계산할 순서

//거리 - OP_BUY

if (sy=="" || sy=="0") sy=Symbol();

p=시장정보(sy, MODE_POINT);

if (p==0) if (StringFind(sy, "")<0) p=0.00001; 그렇지 않으면 p=0.01;

(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 (주문유형()==OP_BUY)

{

d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;

if (r>d) r=NormalizeDouble(d, 0);

}

if (주문 유형()==OP_SELL)

{

d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;

if (r>d) r=NormalizeDouble(d, 0);

}

}

}

}

}

리턴(r);

리턴(r);

}

}

//------------------------------------------------ --------------------------------------------------

감사합니다

 
qwanya :


친애하는 Igor Kim, 이것은 아주 좋은 기능입니다. 나는 그것을 앞뒤로 작동하게 하려고 노력하고 있고 그것을 가지고 앞뒤로 주문을 열려고 노력하고 있습니다. 한 가지 실수가 있습니다. 저는 그것을 제거할 수 없습니다. 고칠 수 있도록 도와주세요. 아래 오류 주석

감사합니다


노력하다:

그리고 여기 에 질문이 있습니다 ...

 extern    int      TakeProfit = 150 ;
extern    double   Lot        = 0.01 ;
extern    int      MAGIC= 1234 ;
      
      
//=====================================================================
   int     start()
      {
     if (DistMarketAndPos( NULL ,OP_BUY)> 150 )
            {                                     
             OrderSend ( Symbol (),OP_BUY,Lot,Ask, 3 , 0 ,Ask+TakeProfit* Point );
            }
          
     if (DistMarketAndPos( NULL ,OP_SELL)> 150 )
            {                                     
         OrderSend ( Symbol (),OP_SELL,Lot,Ask, 3 , 0 ,Ask-TakeProfit* Point );   
            }            
       return ( 0 );
       }
          
//========================================================================          
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}
 
원본 스레드에 의견을 남겨주세요. 출처의 문 (KimIV의 유용한 기능) .
 
원본 스레드에 의견을 남겨주세요. 출처의 문 (KimIV의 유용한 기능) .
 
satop :

MovingInWL() 함수.

아무도 작동하지 않는 기능을 게시하는 이유를 설명할 수 있습니까?

'LevelWLoss' - 선언되지 않은 식별자
'LevelProfit' - 선언되지 않은 식별자
'ModifyOrder' - 함수 가 정의되지 않았습니다.
'LevelWLoss' - 선언되지 않은 식별자
'LevelProfit' - 선언되지 않은 식별자
'ModifyOrder' - 함수가 정의되지 않았습니다.
오류 6개, 경고 0개

그리고 이것은 함수 자체 내부에 있습니다.

 
DenisovOleg :

아무도 작동하지 않는 기능을 게시하는 이유를 설명할 수 있습니까?

'LevelWLoss' - 선언되지 않은 식별자
'LevelProfit' - 선언되지 않은 식별자
'ModifyOrder' - 함수가 정의되지 않았습니다.
'LevelWLoss' - 선언되지 않은 식별자
'LevelProfit' - 선언되지 않은 식별자
'ModifyOrder' - 함수가 정의되지 않았습니다.
오류 6개, 경고 0개

그리고 이것은 함수 자체 내부에 있습니다.

함수는 작동하지만 ModifyOrder 함수를 호출합니다. 이 함수는 어드바이저 코드에 추가되어야 하며 LevelWLoss 및 LevelProfit 변수도 어드바이저에 다음과 같이 추가되어야 합니다.

외부 정수 LevelProfit = 1000;

외부 정수 레벨WLoss = 50;

 
Виктор
유리이 토크만

이 포럼 스레드에 대해 대단히 감사합니다. 기능에 대한 lurii Tokman에게 가장 큰 감사를 드립니다. 개인적으로 나는 그를 Stroustrup과 거의 동일시할 준비가 되어 있습니다.
고맙습니다!

 
Iurii Tokman :

GetAmountLotFromOpenPos() 함수.

이 함수는 많은 열린 위치의 합계를 반환합니다. 고려할 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.

돌아오지 않는다!!!

내가 무엇을 하든 0 또는 "이벤트 처리 기능 을 찾을 수 없습니다. 4.mq4 1 1
"

 
Aleksey Maryaskin :

이 포럼 스레드에 대해 대단히 감사합니다. 기능에 대한 lurii Tokman에게 가장 큰 감사를 드립니다. 개인적으로 나는 그를 Stroustrup과 거의 동일시할 준비가 되어 있습니다.
고맙습니다!

함수 작성자에게도 감사를 표하는 것을 잊지 마십시오.
사유: