GBP 표시 계정에서 XAUUSD가 잘못된 로트 크기를 조정합니까?

 

나는 이것이 과거에 간략하게 다루어진 것에 감사하지만 나는 앞으로 소규모 라이브 계정으로 내 EA를 테스트할 때 다시 언급하고 싶었습니다.

통화 쌍 을 사용한 모든 위치 크기 조정이 정확합니다. 내 계정은 GBP로 표시되기 때문에 최소 틱 크기는 USD로 표시된 거래 계정의 크기보다 큽니다(물론).

어느 쪽이든 FXCM과 거래할 때 MT4 내 최소 포지션 크기는 "1.00" 트로이 온스입니다. 이는 대략 1센트 이동당 0.0624펜스에 해당합니다. (즉, 스프레드 1,200.00 > 1,200.01 = £ 0.0624 제외).

이것은 내가 사용하는 코드입니다 ... 웬일인지 정확한 위치 크기를 계산하지 않는 것이 확실합니다 ...

 //+------------------------------------------------------------------+
//| Order Enter Function                                             |
//+------------------------------------------------------------------+
void OrderEntry( int direction)
{
   //Padding for the stop and padding for the entry too. 
   double ATR_Pad = iATR ( NULL , 60 , 14 , 1 ) / 2 ; 
   double Buy_Pad = NormalizeDouble (ATR_Pad, Digits );
   double Sell_Pad = NormalizeDouble (ATR_Pad, Digits );
   
   //Stop calculations.    
   double ATR = iATR ( NULL , 60 , 14 , 1 );
   double MA = iMA ( NULL , 60 ,MA_Period, 0 , 1 , 0 , 1 );
  
   //Lot calculation.
   double risk_amount = AccountBalance( ) * RiskPercent / 100 ;
   double Lot_Step = MarketInfo( Symbol (), MODE_LOTSTEP);
   double ts = MarketInfo( Symbol (), MODE_TICKSIZE);
   double tv = MarketInfo( Symbol (), MODE_TICKVALUE);
   double minlot = MarketInfo( Symbol (), MODE_MINLOT);
         
          
//+-------------------------------------------------------------------------------------+
//| Order Buy Function                                                                  |
//+-------------------------------------------------------------------------------------+   

//Place a pending buystop if no orders exists. Pending or otherwise.
if (direction== 0 )
{ 
      
       //Get Highest Price in our lookback range and set buy price above it.
       int iTBT = iBarShift( NULL , 60 , triggerBarTime, true ),
      iHH = iHighest( NULL , 60 , MODE_HIGH, iTBT + CandlesBeforeBiasObtained, 0 );
       double Buy_Here = High[iHH] + Buy_Pad;
       double buyPrice = NormalizeDouble ( Buy_Here,Digits);
            
       double BuyStopPriceMath = MA - ATR;
       double BuyStopPrice = NormalizeDouble ( BuyStopPriceMath, Digits );

       //get our buystop price from below the ma and our takeprofit based on our r:r ratio.
       double pips_to_bsl = buyPrice - BuyStopPrice;
       double buy_tp_price = ( pips_to_bsl * RewardRatio ) + buyPrice;
       double buy_takeprofit_price = NormalizeDouble ( buy_tp_price, Digits );
      
       double loss_for_1_lot = pips_to_bsl/ ts * tv ;
       double LotSize_Buy = MathFloor ( risk_amount / loss_for_1_lot/ Lot_Step) * Lot_Step ;


...
 

??

 double buyPrice = NormalizeDouble ( Buy_Here, Digit s );
 
XAUUSD의 포지션에 할당된 랏이 평소보다 적은 이유는 무엇입니까?
 
DomGilberto :
XAUUSD의 포지션에 할당된 랏이 평소보다 적은 이유는 무엇입니까?
그래서 컴파일 오류가 발생합니까? 아니면 오타인가요? 아니면 Digit와 s를 무언가로 선언했습니까? 그리고 Digit를 선언했다면 그 값은 무엇입니까?
 

없음 - 위의 코드에서 내가 보여준 것은 모든 FX 쌍에서 완벽하게 작동한다는 것을 말하는 것입니다... XAUUSD에서는 완벽하게 작동하지만 거래에 할당된 랏은 아마도 있어야 할 것의 절반과 같습니다. 거래당 사용하려는 내 잔액의 몇 % 위험에 따라...

그래서 평신도의 관점에서; 저는 2%의 위험을 감수하고 싶습니다. 해당 거래(XAUUSD)가 중단되면 대신 1% 손실에 더 가깝습니다.... 이상하다고요?

업데이트: 실수로 Digit에서 s 간격을 띄워 죄송합니다... 그래서 더 쉽게 읽을 수 있습니다! Digits( 함수 )여야 합니다.

내가 말하려는 것은 GBP로 표시된 내 계정이 할당되어야 하는 올바른 로트 크기에 영향을 미치고 있다는 것입니다... 마치 내가 USD 계정을 가지고 있는 것처럼 더 정확하지 않을까요? 내가 멀리 떨어져 있다면!).

 
DomGilberto :
없음 - 위의 코드에서 내가 보여준 것은 모든 FX 쌍에서 완벽하게 작동한다는 것을 말하는 것입니다... XAUUSD에서는 완벽하게 작동하지만 거래에 할당된 랏은 아마도 있어야 할 것의 절반과 같습니다. 거래당 사용하려는 내 잔액의 몇 % 위험에 따라...

그래서 평신도의 관점에서; 저는 2%의 위험을 감수하고 싶습니다. 해당 거래(XAUUSD)가 중단되면 대신 1% 손실에 더 가깝습니다.... 이상하다고요?
자, 계산에 관련된 모든 변수를 인쇄하고 XAUUSD에서 실행하고 어떤 변수가 잘못된지 확인하십시오. . . 그러면 왜 그것이 잘못된 것인지 더 잘 알게 될 것입니다.
 

double LotSize_Sell = MathFloor( risk_amount / loss_for_1_lot1/ Lot_Step) * Lot_Step ;
2013.11. 08 23 : 40 : 30      2013.06 . 19 19 : 00   V1 - XAUUSD XAUUSD,H1:  LotSize_Sell formula: ( 200 / 23.64 / 1 ) * 1 = 8
double loss_for_1_lot1 = pips_to_ssl/ ts * tv ;
2013.11 . 08 23 : 40 : 30      2013.06 . 19 19 : 00   V1 - XAUUSD XAUUSD,H1:  loss_for_1_lot1 formula: 23.64 / 0.01 * 0.01 = 23.64
 double pips_to_ssl = SellStopPrice - sellPrice;

2013.11 . 08 23 : 40 : 30      2013.06 . 19 19 : 00   V1 - XAUUSD XAUUSD,H1:  pips_to_ssl formula: 1378.45 - 1354.81 = 23.64

그것은 ST 내에 있지만... 그래서 당신이 전에 나에게 말했듯이, 그것은 계정의 액면에서 다르지 않을 것입니다....

괜찮아 보이나요? "23.64" 포인트?


(업데이트: 아시다시피, 판매 측을 위한 지문입니다! 혼동을 일으키셨다면 죄송합니다... 저는 몰랐습니다 :P)

 

내가 볼 수있는 한 제대로 작동해야합니다.

약간 이상한 것은 TV = 0.01이며, 마이크로 계정에서도 낮게 보이며 GBP 계정에서는 기대하지 않습니다.

혹시 스프레드 베팅 계정입니까?

 
DomGilberto :
 double pips_to_ssl = SellStopPrice - sellPrice;
괜찮아 보이나요? "23.64" 포인트?

그것은 포인트 수가 아니라 가격의 변경입니다(2364.) 귀하는 변경 사항을 포인트 수로 변환하지 않습니다.

당신은 당신의 포인트를 원하지 않습니다

pips_to_bsl/ ts * tv

계산. 변수 이름을 change_to_ssl로 바꿉니다.

 
아니요, 스프레드 베팅 계정이 아닙니다.

@WHRoader - 내가 그 계산에서 점수를 원하지 않는다는 것이 무슨 뜻입니까? :에스?

공식에 포인트를 포함하지 않은 경우 정류장까지의 거리를 기준으로 주어진 거래에 올바른 위험을 어떻게 적용할 수 있습니까...? (혼란스러운).

23.64 || 2,364 포인트... 그게 제가 제 머리를 돌리려고 하는 것입니다... 솔직히 말해서, 저는 GBP 표시 계정이 있기 때문에 너무 적은 1 트로이 온스 포지션을 적용하고 있다고 확신합니다... 그냥 누군가가 필요합니다 내가 보여준 것에서 내가 옳다/그르다고 말하려면?
 
DomGilberto :
아니요, 스프레드 베팅 계정이 아닙니다.

@WHRoader - 내가 그 계산에서 점수를 원하지 않는다는 것이 무슨 뜻입니까? :에스?

공식에 포인트를 포함하지 않은 경우 정류장까지의 거리를 기준으로 주어진 거래에 올바른 위험을 어떻게 적용할 수 있습니까...? (혼란스러운).

23.64 || 2,364 포인트... 그게 제가 제 머리를 돌리려고 하는 것입니다... 솔직히 말해서, 저는 GBP 표시 계정이 있기 때문에 너무 적은 1 트로이 온스 포지션을 적용하고 있다고 확신합니다... 그냥 누군가가 필요합니다 내가 보여준 것에서 내가 옳다/그르다고 말하려면?


이 인쇄 결과가 나오는 코드를 보여 주시겠습니까?

이중 loss_for_1_lot1 = pips_to_ssl/ts * tv ;

2013.11 . 08 23:40:30 _ _ _ _ 2013.06 . 19 19 : 00 V1 - XAUUSD XAUUSD,H1: loss_for_1_lot1 공식: 23.64 / 0.01 * 0.01 = 23.64

이 인쇄물을 추가할 수 있습니다.

Print(" 계정 통화 = ",AccountCurrency() );

TV가 0.01이 될 수 있는 방법을 볼 수 없기 때문에 실제로 ST에서 GBP를 거래하고 있는지 확인하기 위해