GBP建ての口座でXAUUSDの間違ったロットサイジング? - ページ 5

 
DomGilberto:
ありがとうございます :)- 今すぐ確認してみます!

また、あなたの意見では、私がTick Valueを見る方法について、FXCMは間違っているのでしょうか?彼らは完全に正常であると頑強に主張しているのですか?なぜ彼らがそれを台無しにしているのか、あなたにはわからないでしょう?
私は彼らがやっていることをやっている理由を知らない ... あなたの議論の背後にあるいくつかの重量をしたい場合は、競合他社のいくつかをインストールし、彼らはティック値が設定されている方法を見て、彼らのライバルがやっていることを教えてください ... と彼らはまだ "正常 "を感じるかどうかを尋ねる... ...
 
ああ、信じてください、私は5-6つの異なるブローカーをチェック しました!私はすでに彼らと取引を開始しているので、とても腹立たしいです。ブローカーの中でも、FXCMがこんなコックアップをするとは思わなかったよ :(

ただ、好奇心で、あなたが添付したその前のリンクを読んだんだけど、このようにするのは簡単じゃないのかな?- プリントもありますね。私はそれをFXCMのライブ口座に落としたところです...。GBPUSDのTickValueをベースに、単純に* 0.10 ?

私が知らない唯一のものは、あなたが言ったように、ブローカーが正しい詳細を持っている場合、それによって、スイッチを作成する方法であり、それらを使用しますか?(正しい方向に私を指摘することができますか?)
   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の場合、XXXYYのようなシンボルとZZZの口座通貨で 機能する機能があれば、このテーマについて再び懸念する必要はないでしょうか?

私が知らない唯一のものは、スイッチを作成する方法です、それによって、あなたが言ったように、ブローカーは正しい詳細を持っている場合、それらを使用しますか?(正しい方向に私を指摘することができますか?)
単純に計算して、計算された値をMarketInfo()の値と比較して、10%以上、20%以上違ったら..............................大きな違いだと思う。10%、20%......どの程度の誤差であれ、計算された値を使用するのです。 計算で使用する値が正しいことを確認する必要があります。そのためには、基本通貨 (EURGBP) が口座通貨 (GBP) と同じシンボルの Tick Value を取得すると 1.0 (5 桁のブローカー) になり、そこから Tick Value を求めるシンボルに戻って計算を行います。
 
グッドシャウト!もし時間があれば、これをちらっと見て、どう思うか見ていただけないでしょうか? 私はこれを非常に堅牢にしていないことを感謝します - 私は単に一時的な修正(私は一時的な言葉は危険な言葉であることを知っている!)を探しています、それは暫定的に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は証拠金通貨の ドル価格です。例えば、あなたのトレードシンボルがGBPJPYだとすると、BidUSDはGBPUSDの価格となります。同様に、AskUSDはUSDJPYとなります。もしマージンまたは利益通貨のいずれかが米ドルであれば(例えばメジャー通貨)、BidUSD==AskUSD==TradeSymbolの現在価格となります。

この関数が返すのは、指定されたPriceDelta(入力の一つ)を通じてTradeSymbolを1ロット(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);
   }
 

この記事から何を読み取ることができるかはわかりませんが、明日詳しく見てみます。