SL과 Account Risk를 기반으로 한 자금관리 LOT 사이즈 공식이 필요합니다!

 

안녕하세요, STOPLOSS를 포함하고 내 계정이 EUR라는 점을 고려하여 계산된 계정 위험 %를 기반으로 로트 크기를 조정하는 코드/공식이 필요합니다.

내가 가진 것은 다음과 같습니다.

 extern double RISK= 1 ;   //1% RISK
double LOT;

LOT = NormalizeDouble ( AccountEquity ()*RISK/ 10000 , 2 );

그러나 이것은 정지 손실을 고려하지 않습니다

그래서 구글 검색에서 찾았습니다

lot= NormalizeDouble ( AccountBalance ( )*MaximumRisk/StopLoss/( MarketInfo ( Symbol (), MODE_TICKVALUE )), 2 );

그리고 이것

lot = Risk * AccountEquity () / MarketInfo ( Symbol (), MODE_TICKVALUE ) / Stop;

하지만 이 중 아무 것도 작동하지 않습니다. 문제를 해결하는 데 도움을 주거나 더 나은 것을 제공하세요. 감사합니다!

 
  1. 계정 잔고 * 퍼센트 = 위험 = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots * DeltaPerlot (참고 OOP-OSL에는 SPREAD가 포함됨)
  2. TickValue 자체를 사용하지 마십시오 - DeltaPerlot
  3. 중단 을 피하기 위해 FreeMargin도 확인해야 합니다.
 
   double Spread=MarketInfo(Symbol(),MODE_SPREAD)/Q;
   double Risk=(RiskPercent*AccountEquity())/100;//this means if your balance 1000$ & RiskPercent=10% >> you going to risk 100$
   double lot=Risk/((StopLoss+Spread)*MarketInfo(Symbol(),MODE_TICKVALUE)*Q);//Make Sure to Define Your StopLoss & Q=10 in 5 digits or Q=1 in 4 Digits 
 
yousefh : , 내 DeltaPerlot의 주석을 읽으십시오. 틱 값 자체를 사용하지 마십시오.
 
yousefh :

좋지 않아 죄송합니다

WHR로더 :
  1. 계정 잔고 * 퍼센트 = 위험 = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots * DeltaPerlot (참고 OOP-OSL에는 SPREAD가 포함됨)
  2. TickValue 자체를 사용하지 마십시오 - DeltaPerlot
  3. 중단 을 피하기 위해 FreeMargin도 확인해야 합니다.

좋아, 당신의 요점을 알았습니다. 그래서 여기 내 논리와 계산이 있습니다. 위험 %를 계산하는 방법


MQL4 코드에서는 다음과 같습니다.

 extern double MYSTOPLOSS = 50;  // CUSTOM SL SIZE IN PIPS AFTER THE STOPLEVEL
extern double RISK =2; // 2% ACCOUNT RISK

double LOT =( AccountEquity ()*RISK)/( 100 *( MarketInfo ( Symbol (), MODE_STOPLEVEL )+MYSTOPLOSS)* Point * 100000 );


간단한 1 라이너, 복잡하지 않습니다. 이제 말씀하신 DELTA 항목을 삽입할 수 있도록 도와주세요. 공식이 완전하지 않다는 것을 알고 있으므로 도와주세요. 제 계정은 유로화로 되어 있으므로 대부분의 경우 기본 화폐.

 
빨리 도와주세요. X-mas 전에 이 프로젝트 를 끝내고 싶습니다. :)
 
Proximus : 빨리 도와주세요, X-mas 전에 이 프로젝트를 끝내고 싶어요 :)
  1. 계획 부족
  2. 이제 DELTA 항목을 삽입하도록 도와주세요.
    제공된 링크를 클릭하기 귀찮으셨나요?
 
WHRoeder :

  1. 이제 DELTA 항목을 삽입하도록 도와주세요.
    제공된 링크를 클릭하기 귀찮으셨나요?

예, 하지만 당신이 그것을 내 방정식에 맞추는 방법을 이해하지 못합니다. 당신은 이것이 필요하다고 말했습니다:

   MarketInfo (pair, MODE_TICKVALUE )
           / MarketInfo (pair, MODE_TICKSIZE ) 
그러나 이 두 숫자를 나누면 눈금 크기 대신 큰 숫자가 제공되기 때문에 이것이 내 방정식에 어떻게 도움이 되는지 이해가 되지 않습니다...
 
Proximus :

예, 하지만 당신이 그것을 내 방정식에 맞추는 방법을 이해하지 못합니다. 당신은 이것이 필요하다고 말했습니다:

그러나 이 두 숫자를 나누면 눈금 크기 대신 큰 숫자가 제공되기 때문에 이것이 내 방정식에 어떻게 도움이 되는지 이해가 되지 않습니다...

이 링크를 시도하십시오: https://www.mql5.com/en/forum/148224 .

아마도 다른 각도에서 보면 도움이 될 것입니다.

 
ubzen :

이 링크를 시도하십시오: https://www.mql5.com/en/forum/148224 .

아마도 다른 각도에서 보면 도움이 될 것입니다.


WTF 여러분, TICKVALUE /TICKSIZE 대신 TICKVALUE * TICKSIZE 여야 합니까? 나는 거기에 큰 실수가 있다고 생각한다.





별도의 값을 표시하는 빠른 표시기를 만들었습니다. TICKVALUE * TICKSIZE가 적절한 것 같습니다...


그리고 데모 계정은 기본 통화인 EUR로 되어 있지만 USD 계정으로 동일한 테스트를 수행했으며 POINT는 견적 통화 값을 측정하기 때문에 TICKVALUE * TICKSIZE와 같습니다.

파일:
 

내가 질문을 올바르게 이해했다면 이것이 당신을 위해 일할 것입니다.

 for ( i= 0 ; i<=ot; i++ ) for ( z= 0 ; z<= 10 ; z++ )
      {
         if ( long_orders_array_ATF[i][z] > 0 )
         for (zz= 0 ; zz<= 10 ; zz++)
         { 
             OrderSelect (zz, SELECT_BY_POS , MODE_TRADES );
             if ( OrderTicket ()==long_orders_array_ATF[i][z]) zz=ot+ 2 ; 
             if (ot+ 2 <=zz)  
            long_potencial_loss = ( OrderLots () * ( OrderOpenPrice () - OrderStopLoss ()))* 100000 ;
            long_sum_potencial_loss = long_sum_potencial_loss + long_potencial_loss;
         }
      }
...

lot_size = ((((free-long_sum_potencial_loss) * percent_depo)/ 100.0 )/pips)/ 100000 ; }