[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 814

 
열기[1] 닫기[1]
 

잔액 600-1199 로트 0.1

잔액 1200-1799 로트 0.2

잔액 1800-2399 로트 0.3 등

고문으로 조직하는 방법? 고맙습니다.

 
Maniac :

잔액 600-1199 로트 0.1

잔액 1200-1799 로트 0.2

잔액 1800-2399 로트 0.3 등

고문에서 조직하는 방법? 고맙습니다.

 double Lot()
{
   double balance=AccountBalance();
   if (balance> 600 && balance< 1199 ) return ( 0.1 );
   if (balance> 1200 && balance< 1799 ) return ( 0.2 );
   if (balance> 1800 && balance< 2399 ) return ( 0.3 );
return (MarketInfo( Symbol (), MODE_MINLOT));
}
 

호출: ticket=OrderSend(Symbol(),OP_BUY, Lot() ,Ask,3,Bid-25*Point,Ask+25*Point,"내 주문 번호",magic,0, CLR_NONE );
 
IgorM :

call: ticket=OrderSend(Symbol(),OP_BUY, Lot() ,Ask,3,Bid-25*Point,Ask+25*Point,"내 주문 번호",magic,0,CLR_NONE);

이 경우 잔액은 클라우드에 있고 자본은 큰 손실을 입을 수 있습니다. 따라서 부지의 크기가 열 수 있는 것보다 더 커질 수 있으며 전체 구조가 머리 위로 굴러떨어질 것입니다...

개봉하기 전에 정말 가능한 로트를 조정하는 것이 좋습니다.

이를 위해 함수를 만들었습니다. Victor( Vinin )에 의해 약간 수정되었습니다. 시도해 보세요.

 // ===========================================================================
// --- Функция рассчёта величины лота для открытия позиции. Редакция VininI---
// Если лот превышает возможный для открытия позы, то он корректируется 
// ===========================================================================

double CorrectLots( double lt)
{
   double ltcorr;
   double pnt =      MarketInfo( Symbol (),MODE_POINT);
   double mspr =     MarketInfo( Symbol (),MODE_SPREAD);
   double dig =      MarketInfo( Symbol (),MODE_DIGITS);
   double MaxLot =   MarketInfo( Symbol (),MODE_MAXLOT);
   double MinLot =   MarketInfo( Symbol (),MODE_MINLOT);
   double StpLot =   MarketInfo( Symbol (),MODE_LOTSTEP);
   double OneLot =   MarketInfo( Symbol (),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble (AccountFreeMargin()/ 4.0 ,dig);     // Свободные средства, разрешенные к торговле
   
   
   double Money=lt*OneLot+mspr*pnt;           // Вычисляем стоимость открываемой позы
   if (Money>=TradeMrg)                       // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         lt= MathFloor (TradeMrg/OneLot/StpLot)*StpLot;   // ... рассчитаем допустимый лот
         Print ( "Func CorrectLots: полученный лот " ,lt, " скорректирован под допустимый " ,lt); 
      }
       else 
         Print ( "Func CorrectLots: лот вернули без изменений" );
   lt= MathMin (MaxLot, MathMax (MinLot, lt)); // Проверим превышение допустимых ...
   
   return (lt);                            
}

인라인

 double TradeMrg = NormalizeDouble (AccountFreeMargin()/ 4.0 ,dig);     // Свободные средства, разрешенные к торговле

... 자유 증거금을 4로 나누고 자유 증거금의 4분의 1만 거래할 수 있는 것으로 간주됩니다.

4로 나누기를 제거하고 최소한 전체 마진을 사용하여 원하는 대로 베팅할 수 있습니다.

그러나 이 기능은 허용된 것보다 더 큰 크기를 사용하는 것을 허용하지 않습니다.

 
artmedia70 :
이 경우 잔액은 클라우드에 있고 자본은 큰 손실을 입을 수 있습니다. 따라서 부지의 크기가 열 수 있는 것보다 더 커질 수 있으며 전체 구조가 머리 위로 굴러떨어질 것입니다...


왜이리 슬프지...

내 함수의 마지막 return()은 상품에 대한 최소 가용 로트를 제공합니다. 계정이 레버리지가 큰 센트 계정인 경우 잔액이 600 미만일 때 EA는 아마도 한동안 계속 거래할 것입니다. :)

추신: 작업이 구체적이며 질문자에게 검색 방향을 제공하는 분기

 
IgorM :


왜이리 슬프지...

내 함수의 마지막 return()은 상품에 대한 최소 가용 로트를 제공합니다. 계정이 레버리지가 큰 센트 계정인 경우 잔액이 600 미만일 때 EA는 아마도 한동안 계속 거래할 것입니다. :)

추신: 작업이 구체적이며 질문자에게 검색 방향을 제공하는 분기

글쎄, 너그럽게 용서하십시오 ... :) 너무 화내지 마십시오, 선생님 ... :)

내 에디션의 기능은 다음과 같습니다.

 // ==========================================================================
// ------------ Функция рассчёта величины лота для открытия позиции ---------
// Если лот превышает возможный для открытия позы, то он корректируется 
// ==========================================================================

double CorrectLots( double lt)
{
   double ltcorr;
   double pnt =      MarketInfo( Symbol (),MODE_POINT);
   double mspr =     MarketInfo( Symbol (),MODE_SPREAD);
   double dig =      MarketInfo( Symbol (),MODE_DIGITS);
   double MaxLot =   MarketInfo( Symbol (),MODE_MAXLOT);
   double MinLot =   MarketInfo( Symbol (),MODE_MINLOT);
   double StpLot =   MarketInfo( Symbol (),MODE_LOTSTEP);
   double OneLot =   MarketInfo( Symbol (),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble (AccountFreeMargin()/ 4.0 ,dig);       // Свободные средства, разрешенные к торговле
   
   lt= MathAbs (lt);
   ltcorr=lt;                       // Зададим начальное значением ltcorr равным значению lt
   
   if (lt>=MaxLot) ltcorr=MaxLot;   // Проверим превышение допустимых ...
   if (lt<=MinLot) ltcorr=MinLot;   // ... значений лота
   
   double Money=lt*OneLot+mspr*pnt; // Вычисляем стоимость открываемой позы

   if (Money<TradeMrg)               // Если свободных средств больше, чем цена позиции - 
      {
         return (ltcorr);             // ... возвращаем неизменённый лот
      }
   else if (Money>=TradeMrg)         // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         ltcorr= MathAbs ( MathFloor (TradeMrg/OneLot/StpLot)*StpLot);       // ... рассчитаем допустимый лот
         double MoneyCorr=ltcorr*OneLot+mspr*pnt;                      
         Print ( "Func CorrectLots: лот " ,lt, " скорректирован до " ,ltcorr,
               " Стоимость позы до корректировки = " ,Money,
               " Стоимость позы после корректировки = " ,MoneyCorr
               ); 
         return (ltcorr);                                                 // ... и вернём его значение
      }
   Print ( "Func CorrectLots: лот вернули без изменений" );
   return (ltcorr);                                                       // Возврат изначального лота в непредусмотренных случаях с сообщением
}
 
IgorM :


왜이리 슬프지...

내 함수의 마지막 return()은 상품에 대한 최소 가용 로트를 제공합니다. 계정이 레버리지가 큰 센트 계정인 경우 잔액이 600 미만일 때 EA는 아마도 한동안 계속 거래할 것입니다. :)

추신: 작업이 구체적이며 질문자에게 검색 방향을 제공하는 분기

알다시피, Igor-여기 사람이 물었고, 당신은 그에게 올바르게 대답했으며, 말하자면 잊어 버릴 수 있습니다. 그러나 결국 균형에서 춤을 추는 것은 내장이 아닙니다. 균형이 하늘 높이 치솟을 수 있는 바로 그 이유와 실제 상황 - 이제 저장해야 할 때입니다. 그리고 여기 우리는 여전히 Xr-r-like입니다 ... 그리고 주문의 맨 위에 있고 많은 것이 ... 그리고 그는 rr - 한 번, 예에서 마이너스로 갔었습니다 ... 주식 - 거기, 그렇지만
이미 거기에 ... 따라서 잔액보다 자금에서 춤을 추는 것이 좋습니다 ... :)

 

안녕하세요!

모든 통화 쌍을 동시에 처리하도록 MQL4 에서 사용자 지정 표시기 를 작성할 수 있는지 초보자에게 알려주십시오. 내가 이해하는 한 지표 차트에는 최대 8개의 선을 표시할 수 있지만 한 개의 선만 필요합니다. 저것들. 모든 통화 쌍에 대한 배열 또는 변수에서 동시에 처리된 이 행에 대한 배열을 얻을 수 있습니까?

답장을 보내주셔서 감사합니다.

 
Igor_Sev :

저것들. 모든 통화 쌍에 대한 배열 또는 변수에서 동시에 처리된 이 행에 대한 배열을 얻을 수 있습니까?


이론적으로 장애물이 보이지 않습니다. 또 다른 질문은 이 어레이를 구체적으로 처리할 수 있는지 여부입니다.
 
Roger :

이론적으로 장애물이 보이지 않습니다. 또 다른 질문은 이 어레이를 구체적으로 처리할 수 있는지 여부입니다.


도구를 작성할 때 프로그램 코드의 모든 통화 쌍을 어떻게 참조할 수 있습니까? 작성 도구의 예를 살펴보니 통화 쌍에 대한 참조가 없으며 특정 시세 차트에 연결된 통화 쌍이 기본적으로 처리됩니다.

내 요점은 Excel과 VBA가이 모든 작업을 수행하고 있다는 것입니다. DDE 서버를 통해 22 통화 쌍에 대한 정보를 받고 VBA 프로그램 코드를 사용하여 동시 처리를 의미하지만 먼저 2 시간을 기다려야하기 때문에 매우 불편합니다. Excel에서 그래프로 분석을 위한 데이터 기록 축적. 네, 그리고 프로그램에서 다른 프로그램으로 건너뛰기가 불편해서 MT4로 이 모든 것을 옮기는 방법을 고민하고 있습니다.

사유: