% 보증금에서 정확한 로트 계산 - 페이지 3

 
7bec :

그러나 AccountFreeMargin이 아니라 AccountBalance 여야 합니다. 그러면 전문가가 둘 이상의 로트에서 작업하지 않으면 어떻게 될까요?

4년차 포스트에 질문을 하기 전에 오랜 시간 고민하셨나요? 그가 정말로 당신에게 대답할 것이라고 생각합니까?
 
zoritch :

4년차 포스트에 질문을 하기 전에 오랜 시간 고민하셨나요? 그가 정말로 당신에게 대답할 것이라고 생각합니까?
그리고 갑자기 운이 좋아
 
7bec :

그러나 반드시 AccountFreeMargin이 아니라 AccountBalance 여야 합니다. 그러면 전문가가 둘 이상의 로트에서 작업하지 않으면 어떻게 될까요?

이 기능을 사용하면 안 됩니다. 여기에서 제가 2010년 여름에 좋아했던 전체 기능에 대해 이야기하고 있습니다. 왜냐하면 더 잘 인쇄할 수 있습니다
 
wenay :

이 기능을 사용하면 안 됩니다. 여기에서 제가 2010년 여름에 좋아했던 전체 기능에 대해 이야기하고 있습니다. 왜냐하면 더 잘 인쇄할 수 있습니다


예를 들어? 저녁에 인터넷에서 찾은 것 중에서 저는 이것이 가장 마음에 들었습니다.

물론 어떤 코드도 무한정 완성될 수 있지만 가장 좋은 것은 좋은 것의 적입니다.)

 

안녕하세요 엄밀히 판단하지 마세요.. MQL4 프로그래밍 전문가가 아니라서 힌트를 찾다가...

3일째에 로트를 계산하기 위한 스크립트를 작성하는 것에 대해 머리가 아팠습니다. 제 생각은 다음과 같습니다. (조건부로) $1000의 보증금이 있으면 로트는 0.05가 됩니다. (실제로는 20000으로 나누기)

EURUSD, GBPUSD, AUDUSD, NZDUSD 쌍으로 작업할 때 모든 것이 괜찮습니다. 오늘 달러 차례) 113,000 엔 또는 38,700 루블,이 경우 5.65 및 0.19에는 많지 않을 것입니다 ... 나는 무언가를 얻었습니다. 내가 놓친 것이 무엇입니까 ???? 파헤칠 곳을 알려주세요.

 
gochu :

안녕하세요 엄밀히 판단하지 마세요.. MQL4 프로그래밍 전문가가 아니라서 힌트를 찾다가...

3일째에 로트를 계산하기 위한 스크립트를 작성하는 것에 대해 머리가 아팠습니다. 제 생각은 다음과 같습니다. (조건부로) $1000의 보증금이 있으면 로트는 0.05가 됩니다. (실제로는 20000으로 나누기)

EURUSD, GBPUSD, AUDUSD, NZDUSD 쌍으로 작업할 때 모든 것이 괜찮습니다. 오늘 달러 차례) 113,000 엔 또는 38,700 루블,이 경우 5.65 및 0.19에는 많지 않을 것입니다 ... 나는 무언가를 얻었습니다. 내가 놓친 것이 무엇입니까 ???? 파헤칠 곳을 알려주세요.


약간 다른 각도에서 작업을 봅니다. 예금 통화 로 일정 금액의 자금을 사용합니다.

다음은 계약 규모에 따른 로트를 계산하는 스크립트입니다. 계약 규모는 예금 통화로 설정됩니다.

파일:
 

다음은 거래에 대한 로트를 계산하는 제 방법입니다(코드는 MQL4 업데이트 이전이므로 #property strict 없음).

 extern double DealLevel = 5.0 ; // процент свободной маржи для сделки
//---
double LotDeal = NormalizeDouble (TradedLotFunc(DealLevel), 2 );

//--- TradedLotFunc() - start ----- сама функция
double TradedLotFunc( double Deal_f)
{  
   double MinLot_f  = MarketInfo ( Symbol (), MODE_MINLOT );
   double MaxLot_f  = MarketInfo ( Symbol (), MODE_MAXLOT );
   double LotStep_f = MarketInfo ( Symbol (), MODE_LOTSTEP );
   double LotSize_f = MarketInfo ( Symbol (), MODE_LOTSIZE );
   int     Leverage_f= AccountLeverage ();
   //---
   int     i, coef; 
   double HighBorder;
   //---
   if (Deal_f<= 0.0 )   return (MinLot_f);
   if (Deal_f> 100.0 ) Deal_f= 100.0 ;
   double TradedLot=( AccountFreeMargin ()*Deal_f/ 100 )*Leverage_f/LotSize_f;
   if (TradedLot<=MinLot_f) return (MinLot_f);
   if (LotStep_f== 0.001 || LotStep_f== 0.01 || LotStep_f== 0.1 || LotStep_f== 1.0 )
      TradedLot= MathRound (TradedLot/LotStep_f)*LotStep_f;
   else
   {   if (((TradedLot-MinLot_f)/LotStep_f)<= 5.0 ) coef= 1 ;
       else coef= MathRound ((TradedLot-MinLot_f)/LotStep_f)- 3 ;
       for (i= 0 ; i<= 100 ; i++)
      {  HighBorder=MinLot_f+(LotStep_f*coef)+(LotStep_f*i);
         if (TradedLot> HighBorder) continue ;
         if (TradedLot==HighBorder) break ;
         if (TradedLot< HighBorder)
         {   if ( MathAbs (HighBorder-TradedLot)<= MathAbs (TradedLot-(HighBorder-LotStep_f)))
            {  TradedLot=HighBorder; break ; }
             else
            {  TradedLot=HighBorder-LotStep_f;   break ; }
   }  }  }
   if (TradedLot>=MaxLot_f) return (MaxLot_f);
   return (TradedLot);
}
//--- TradedLotFunc() - end -----
 

그리고 TradedLotFunc()는 항상 0보다 큰 값을 반환합니까?

그렇지 않은 경우 코드에서 더 나아가 if (Deal_f<= 0.0 ) return (MinLot_f); - 당신은 당원입니까? ..그리고 기관총이 다시 발사되었습니다 ..

( TradedLot <=MinLot_f) return (MinLot_f); - 당신은 당원입니까? ..그리고 기관총이 다시 발사되었습니다 ..

----------------------

일반적으로 기능이 올바르게 작동한다고 상상하면 거래 계정에서 첫 번째이자 유일한 주문을 여는 데 거의 적합하지 않습니다..

기존 오픈 포지션 이나 오픈되는 주문의 손절매를 고려 하지 않았기 때문에, 즉 이것은 학교 버전입니다.

그리고 실생활에서 거래하는 제정신이 있는 사람은 이 좋은 것을 사용하지 않을 것입니다..

 

팁 감사합니다만 제 질문을 제대로 작성하지 못했습니다.... 분실/도난 금액부터 시작하여 로트를 계산하고 싶습니다. 분명히 euro.bucks와 pound.bucks의 마진은 다르지만 정확히 내가 원하는 곳은 아닙니다. 이상적으로는 매개변수를 입력으로 받는 함수를 가져와야 합니다.

1- 예금 통화 (달러와 유로를 확인하겠습니다),

2- 입금액(1000)

3- 거래할 쌍(CADJPY 및 USDCHF를 확인하고 싶습니다),

통과 시 보증금의 4% 감소(2%로 가정)

5- 특정 수의 핍(4자리 플랫폼의 경우 100핍, 5자리 플랫폼의 경우 1000핍).

로트 값을 출력 매개변수로 얻고 싶습니다.

즉, (역 견적 EURUSD, GBPUSD, AUDUSD, NZDUSD가 있는 쌍의 경우 모든 것이 명확합니다. 즉, 견적 통화가 예금 통화인 경우) ...

1000달러를 예치한 상태에서 통화가 100(4자리)/1000핍(5자리)을 넘었을 때 2%(즉, 20달러)를 잃거나 얻었으므로 0.02를 많이 사용해야 합니다.

(반복합니다. EURUSD 또는 NZDUSD보다 GBPUSD 거래에 더 많은 자금이 사용될 것이 분명하지만 자금을 사용하지 않는 것이 중요하지만 명목 손실/이익 ... 나 내가 생략하고 있는 것 ... 내 머리가 완전히 요리되지 않습니다 ... 거의 일주일에 상관없이이 문제를 어떻게 고심합니까?). 시세통화로 손실금액을 계산해야 하는 지경에 이르렀습니다.. 그리고 여기에 (손실)을 내가 필요한 많은 예금통화로 더 변환하는 방법은..... 여기 ... 도움을 주셔서 감사합니다!

 
gochu :

팁 감사합니다만 제 질문을 제대로 작성하지 못했습니다.... 분실/도난 금액부터 시작하여 로트를 계산하고 싶습니다. ...

요청 ID 가 MODE_TICKVALUE인 https://docs.mql4.com/en/marketinformation/marketinfo 기능을 살펴보세요.