MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 705

 
multiplicator :
어떤 이유로 터미널에 오류가 표시되지 않습니다)

하지만 혼자서?

 
multiplicator :
어떤 이유로 터미널에 오류가 표시되지 않습니다)

그리고 터미널은? 프로그램에서 볼륨의 그라데이션을 고려해야 합니다.

프로그래밍 방식으로 0.000001, 0.12345678, 100000.1 등의 많은 포지션을 개설 하도록 주문을 보내보십시오.

 
Алексей Тарабанов :

하지만 혼자서?

어떤 식 으로든? 표시하지 않습니다.
 
Artyom Trishkin :


0.12345678이 많은 포지션을 열 도록 프로그래밍 방식으로 주문을 보내보십시오.

로트 0.12로 열립니다.

문제는 정규화하거나 정규화하지 않는 것입니다.

 
Artem, 아마도 - 글쎄, 그들?
 
Alekseu Fedotov :

이걸로 해봐.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает нормализованное значение торгуемого лота.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    lo - нормализуемое значение лота.                                       |
//|    ro - способ округления          (   False    - в меньшую,               |
//|                                        True     - в большую сторону)       |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//+----------------------------------------------------------------------------+
double NormalizeLot( double lo, bool ro= False , string sy= "" ) {
   double l, k;
   if (sy== "" || sy== "0" ) sy= Symbol ();
   double ls= MarketInfo (sy, MODE_LOTSTEP );
   double ml= MarketInfo (sy, MODE_MINLOT );
   double mx= MarketInfo (sy, MODE_MAXLOT );

   if (ml== 0 ) ml= 0.1 ;
   if (mx== 0 ) mx= 100 ;

   if (ls> 0 ) k= 1 /ls; else k= 1 /ml;
   if (ro) l= MathCeil (lo*k)/k; else l= MathFloor (lo*k)/k;

   if (l<ml) l=ml;
   if (l>mx) l=mx;

   return (l);
}


여기에는 명확하지 않습니다.
   if (ls> 0 ) k= 1 /ls; else k= 1 /ml;
로트 단계가 0보다 크거나 작은 차이는 무엇입니까?
 
Алексей Тарабанов :
Artem, 아마도 - 글쎄, 그들?
당신을 잘.
자러 가십시오.
 
multiplicator :

로트 0.12로 열립니다.

문제는 정규화하거나 정규화하지 않는 것입니다.

이미 이해했습니다. 그거랑 무슨 상관이야, 얼마에 열었니, 고생했니?

 
Алексей Тарабанов :

이미 이해했습니다. 그거랑 무슨 상관이야, 얼마에 열었니, 고생했니?

오래된 그루터기, 아무도 당신에게 아무것도 묻지 않았습니다. 자러 가십시오.

포럼에서 당신의 게시물을 읽을 때 나는 "이 사람은 두뇌가 약하다"고 생각합니다.
 
Alekseu Fedotov :

이걸로 해봐.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает нормализованное значение торгуемого лота.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    lo - нормализуемое значение лота.                                       |
//|    ro - способ округления          (   False    - в меньшую,               |
//|                                        True     - в большую сторону)       |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//+----------------------------------------------------------------------------+
double NormalizeLot( double lo, bool ro= False , string sy= "" ) {
   double l, k;
   if (sy== "" || sy== "0" ) sy= Symbol ();
   double ls= MarketInfo (sy, MODE_LOTSTEP );
   double ml= MarketInfo (sy, MODE_MINLOT );
   double mx= MarketInfo (sy, MODE_MAXLOT );

   if (ml== 0 ) ml= 0.1 ;
   if (mx== 0 ) mx= 100 ;

   if (ls> 0 ) k= 1 /ls; else k= 1 /ml;
   if (ro) l= MathCeil (lo*k)/k; else l= MathFloor (lo*k)/k;

   if (l<ml) l=ml;
   if (l>mx) l=mx;

   return (l);
}

여기에서 그는 로트 단계 크기로 나누고 나머지를 버린 다음 이 로트 단계 중 몇 개가 나왔는지를 취합니다.

여기에 오류가 있을 수 있습니다.

예를 들어, 함수에 값을 대체합니다: 7 lot.
브로커의 최소 로트 크기는 5이고 로트 단계는 2입니다.


그는 7을 제비의 단계로 나눌 것입니다. 전체 부분의 수를 취합니다. 그리고 다시 제비의 단계로 곱하십시오. 결과는 6랏이 됩니다. 그리고 그는 이 볼륨으로 주문을 열려고 할 것입니다.
그러나 주문은 5, 7, 9 등과 같은 볼륨에서만 열 수 있습니다.


로트(7)에서 최소 로트 크기(5)를 버리는 것이 좋습니다. 그리고 나머지와 함께 일하십시오.

나머지는 함수에 있는 모든 작업을 수행합니다.

얼마나 많은 전체 단계가 있는지, 로트 단계의 크기를 계산하십시오. 그런 다음 단계 수에 로트 단계 크기를 곱합니다. 우리는 2를 얻습니다.

그런 다음 이 듀스를 최소 로트(5)의 크기에 다시 추가합니다. 5+2=7이 됩니다.


하지만 저는 환상적인 예를 보여주고 있습니다.
이제 브로커는 0.01만큼 최소 로트와 로트를 가집니다.
또는 최소 로트 및 로트 단위로 0.1