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

 
DomGilberto :
감사합니다 :) - 지금 바로 확인하겠습니다!

또한 FXCM이 Tick Value를 보는 방식이 잘못되었다고 생각합니까? 그들은 그것이 완전히 정상이라고 단호합니까? 그들이 왜 그것을 망쳐 놓는지 당신은 모를 것입니다 그렇죠?
왜 그들이 하는 일을 하는지 모르겠습니다. . . 당신의 주장 뒤에 약간의 무게를 두고 싶다면 그들의 경쟁자들 중 몇 명을 설치하고 그들이 Tick Value를 어떻게 설정했는지 확인한 다음 그들의 경쟁자들이 무엇을 하고 있는지 그들에게 말하십시오. . . 그리고 그들이 여전히 "정상"이라고 느끼는지 물어보십시오. . .
 
오 믿으세요, 저는 약 5-6개의 다른 브로커를 확인 했습니다! 나는 이미 그들과 거래를 시작했기 때문에 너무 짜증이 난다. 모든 중개인 중에서 FXCM이 그런 자지를 만들 것이라고 생각하지 않았을 것입니다 :(

그냥 호기심에서 - 나는 당신이 첨부한 이전 링크를 읽었습니다. 이렇게 하는 것이 더 쉽지 않습니까? - 지문도 있습니다. 방금 FXCM을 사용하여 라이브 계정에 넣었습니다... 이제 GBPUSD 틱 값과 간단히 * 0.10 을 기반으로 하여 꽤 정확한 TickValue를 제공합니다.

내가 모르는 유일한 것은 스위치를 만드는 방법입니다. 당신이 말했듯이 브로커가 정확한 세부 정보를 가지고 있다면 그것을 사용하십시오 ??? (올바른 방향으로 나를 가리킬 수 있습니까?)
   double risk_amount = AccountBalance( )* 2.00 / 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);
   
   double GBPUSD = MarketInfo( "GBPUSD" , MODE_TICKVALUE);
   
       double CustomTickValue = 0.10 * GBPUSD;
         Print ( " Custom Tick Value is: " , 0.10 , " * " , GBPUSD, " = " , CustomTickValue);

2013.11 . 12 11 : 32 : 33      Tick Value test XAUUSD,H1:  Custom Tick Value is: 0.1 * 0.6296 = 0.063

            
       double loss_for_1_lot = 25.25 / ( 0.10 * GBPUSD ) * ts ;
         Print ( " loss_for_1_lot formula: " , 25.25 , " / " , ts, " * (" , CustomTickValue, ") = " , loss_for_1_lot );

2013.11 . 12 11 : 32 : 33      Tick Value test XAUUSD,H1:  loss_for_1_lot formula: 25.25 / 0.01 * ( 0.063 ) = 4.0106

      
       double LotSize_Buy = MathFloor ( risk_amount / loss_for_1_lot/ Lot_Step) * Lot_Step ;
         Print ( " LotSize_Buy: ( " , risk_amount, " / " , loss_for_1_lot, " / " , Lot_Step, " ) * " , Lot_Step, " = " , LotSize_Buy); 

2013.11 . 12 11 : 32 : 33      Tick Value test XAUUSD,H1:  LotSize_Buy: ( 76.0598 / 4.0106 / 1 ) * 1 = 18
 
DomGilberto :
오 믿으세요, 저는 약 5-6개의 다른 브로커를 확인했습니다! 나는 이미 그들과 거래를 시작했기 때문에 너무 짜증이 난다. 모든 중개인 중에서 FXCM이 그런 자지를 만들 것이라고 생각하지 않았을 것입니다 :(

그냥 호기심에서 - 나는 당신이 첨부한 이전 링크를 읽었습니다. 이렇게 하는 것이 더 쉽지 않습니까?

기호가 XXXUSD이고 계정 통화가 GBP인 경우 작동할 수 있습니다. 그러면 당신은 끝났고 이 주제에 대해 다시 걱정할 필요가 없습니다. . .

내가 모르는 유일한 것은 스위치를 만드는 방법입니다. 당신이 말했듯이 브로커가 정확한 세부 정보를 가지고 있다면 그것을 사용하십시오 ??? (올바른 방향으로 나를 가리킬 수 있습니까?)
단순히 계산을 수행하고 계산된 값을 MarketInfo() 값과 비교할 수 있으며 10% 이상 차이가 나면 20% 입니다. . . 충분히 큰 오류라고 생각하는 것이 무엇이든 계산된 값을 사용합니다. 계산에 사용하는 값이 정확한지 확인하기만 하면 됩니다. 이를 위해 기본 통화(EURGBP)가 계정 통화(GBP)와 동일한 기호에 대한 틱 값을 얻으면 1.0이 됩니다. ( 5 자리 브로커 ) 그런 다음 틱 값을 찾는 데 필요한 기호로 다시 작업하십시오.
 
좋은 소리! 알겠습니다. 제가 장난을 쳤습니다. 잠시 시간을 내어 이것을 살펴보고 어떻게 생각하시는지 확인해 주시겠습니까? 나는 이것을 매우 강력하게 만들지 않았다는 점에 감사드립니다. 임시 수정 사항(임시라는 단어는 위험한 단어라는 것을 압니다!)을 찾고 있을 뿐입니다. 이 수정 사항은 임시로 FXCM과 함께 특별히 강력하게 유지될 것입니다... 아래는 특별히 다음을 위한 것입니다. XAGUSD! ( 글을 잘못 올려서 수정해야 해서 죄송합니다! )

minLot은 항상 은의 경우 50.00 또는 금의 경우 1.00입니다.
 //+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
 

  
   double ts = MarketInfo( Symbol (), MODE_TICKSIZE);
   double tv = MarketInfo( Symbol (), MODE_TICKVALUE);
   
   double GBPUSD_BID = MarketInfo( "GBPUSD" , MODE_BID);
   double CustomTickValue;
   
   double EqualityTickValue = (( 0.10 / GBPUSD_BID * minLot ) - tv ) * 1000 ;
       Print ( " EqualityTickValue formula is: ( " , 10 , " / " , GBPUSD_BID, " * " , 50 , " ) - " , tv, ") * " , 1000 , " = " , EqualityTickValue);

2013.11 . 12 14 : 40 : 08      Tick Value test XAUUSD,H1:  EqualityTickValue formula is: ( 10 / 1.5911 * 50 ) - 0.01 ) * 1000 = 3132.401


      
   
   if ( EqualityTickValue > 20.00 ) 
     {
      CustomTickValue = ( 0.10 / GBPUSD_BID  * minLot );
       Print ( " CustomTickValue is custom: " , 10 , " / " , GBPUSD_BID, " * " , 50.00 , " = " , CustomTickValue); 

2013.11 . 12 14 : 40 : 08      Tick Value test XAUUSD,H1:  CustomTickValue is custom: 10 / 1.5911 * 50 = 3.1424

     }
   if ( EqualityTickValue < 20.00 )
     { 
      CustomTickValue = tv;
       Print ( " CustomTickValue is MarketInfo: " , tv);



     } 
     
//----
   return ( 0 );
  }
 
DomGilberto :
좋은 소리! 알겠습니다. 제가 장난을 쳤습니다. 잠시 시간을 내어 이것을 살펴보고 어떻게 생각하시는지 확인해 주시겠습니까? 나는 이것을 매우 강력하게 만들지 않았다는 점에 감사드립니다. 임시 수정 사항(임시라는 단어는 위험한 단어라는 것을 압니다!)을 찾고 있을 뿐입니다. 이 수정 사항은 임시로 FXCM과 함께 특별히 강력하게 유지될 것입니다... 아래는 특별히 다음을 위한 것입니다. XAGUSD! ( 글을 잘못 올려서 수정해야 해서 죄송합니다! )

minLot은 항상 은의 경우 50.00 또는 금의 경우 1.00입니다.


여기에 더 일반적인 것이 있습니다 ...

다른 브로커에 의해 다른 기호를 포함하도록 확장될 수 있습니다.

여기서 주목해야 할 주요 입력은 BidUSD와 AskUSD입니다. BidUSD는 마진 통화 의 달러 가격이므로 귀하의 TradeSymbol이 GBPJPY라고 가정하면 BidUSD는 GBPUSD의 가격이 됩니다. 마찬가지로 AskUSD는 USDJPY가 됩니다. 마진 또는 이익 통화 중 하나가 USD인 경우(예: 메이저) BidUSD==AskUSD==TradeSymbol의 현재 가격입니다.

이 함수에 의해 반환되는 것은 지정된 PriceDelta(입력 중 하나)를 통해 TradeSymbol의 한 로트(1.0)를 보유하기 위한 손익입니다.

 //+------------------------------------------------------------------+
//|                                                       Profit.mqh |
//|                                                              ssn |
//+------------------------------------------------------------------+
#property copyright "ssn"

//#property version   "3.31"

double Profit( string TradeSymbol, double PriceDelta, double BidUSD, double AskUSD)
   {
       double _profit= 0.0 ;
      
       if ( StringFind (TradeSymbol, "TNOTE" , 2 )>= 0 ||
         StringFind (TradeSymbol, "aTND" , 0 )>= 2 ){
         _profit+=MarketInfo(TradeSymbol,MODE_LOTSIZE)*BidUSD;
         _profit*=PriceDelta;}
      
       else if ( StringFind (TradeSymbol, "US500" , 0 )>= 0 ||
               StringFind (TradeSymbol, "a500" , 0 )>= 0 ||
               StringFind (TradeSymbol, "SPY" , 0 )>= 0 ){
         _profit+=MarketInfo(TradeSymbol,MODE_LOTSIZE)*BidUSD;
         _profit*=PriceDelta;}
      
       else if ( StringFind (TradeSymbol, "XAG" , 0 )>= 0 || StringFind (TradeSymbol, "XAU" , 0 )>= 0 ){
         _profit+=MarketInfo(TradeSymbol,MODE_LOTSIZE)*BidUSD;
         _profit*=PriceDelta; }
      
       else if ( StringFind (TradeSymbol, "EUR" , 0 )>= 0 ||
         StringFind (TradeSymbol, "GBP" , 0 )>= 0 ||
         StringFind (TradeSymbol, "AUD" , 0 )>= 0 ||
         StringFind (TradeSymbol, "NZD" , 0 )>= 0 ){
         _profit+=MarketInfo(TradeSymbol,MODE_LOTSIZE)*BidUSD;
         if ( StringFind (TradeSymbol, "USD" , 0 )>= 0 ){ 
            _profit*=PriceDelta; }
         else if ( StringFind (TradeSymbol, "USD" , 0 )< 0 ){
             if ( StringFind (TradeSymbol, "GBP" , 0 )>= 0 ||
               StringFind (TradeSymbol, "AUD" , 0 )>= 0 ||
               StringFind (TradeSymbol, "NZD" , 0 )>= 0 ){
               _profit*=PriceDelta*AskUSD; }
             else if ( StringFind (TradeSymbol, "CAD" , 0 )>= 0 ||
                   StringFind (TradeSymbol, "CHF" , 0 )>= 0 ||
                   StringFind (TradeSymbol, "JPY" , 0 )>= 0 ){
               _profit*=PriceDelta;
               if (AskUSD!= 0.0 ) { _profit/=AskUSD; }
               else if (AskUSD== 0.0 ) {
                   Print ( " Ask's USD price is zero! ensure it's provided. " );
                   return ( 0.0 ); }}}}
      
       else if ( StringFind (TradeSymbol, "USD" , 0 )>= 0 ){
         _profit = MarketInfo(TradeSymbol,MODE_LOTSIZE);
         if ( StringFind (TradeSymbol, "CAD" , 0 )>= 0 ||
             StringFind (TradeSymbol, "CHF" , 0 )>= 0 ||
             StringFind (TradeSymbol, "JPY" , 0 )>= 0 ){
            _profit*=PriceDelta;
             if (AskUSD!= 0.0 ) { _profit/=AskUSD; }
             else if (AskUSD== 0.0 ) {
               Print ( " Ask's USD price is zero! ensure it's provided. " );
               return ( 0.0 ); }}}
               
       else if ( StringFind (TradeSymbol, "CAD" , 0 )>= 0 ||
               StringFind (TradeSymbol, "CHF" , 0 )>= 0 ){
         if (BidUSD!= 0.0 ) { _profit = MarketInfo(TradeSymbol,MODE_LOTSIZE)/BidUSD; }
         else if (BidUSD== 0.0 ) {
             Print ( " Bid's USD price is zero! ensure it's provided. " );
             return ( 0.0 ); }
         _profit*=PriceDelta;
         if (AskUSD!= 0.0 ) { _profit/=AskUSD; }
         else if (AskUSD== 0.0 ) {
             Print ( " Ask's USD price is zero! ensure it's provided. " );
             return ( 0.0 );  }}
             
       return (_profit);
   }
 

포스트 메이트에게 감사드립니다 - 내가 무엇을 없애고 있는지 완전히 확신하지 못하지만 내일 자세히 살펴 보겠습니다 ...

사유: