XAUUSD在以英镑计价的账户上的手数错误? - 页 2

 
DomGilberto:
不,这不是一个差价投注账户。

@WHRoader - 你的意思是我不希望在计算中加入点数?

如果我不在公式中加入点数,我怎么能根据到止损点的距离对给定的交易适用正确的风险呢?(困惑)。

23.64 || 2,364点...这就是我想搞清楚的问题......坦率地说,我确信我应用的1金衡盎司头寸太少了,因为我有一个以英镑计价的账户......我只是需要有人告诉我,从我所展示的内容来看,我是对的/错的?


如果我错了,请纠正我......你假设头寸大小的计算是不正确的,因为当你有损失时,你没有失去你希望的风险百分比? 你是否将点差计入计算?
 

@ RaptorUK - 当我说仓位规模小于它应该有的规模时,我的意思是几乎是一半......

这样说吧,我在一个小账户中进行前瞻性测试--如果该仓位击中第一个目标,它应该在适用的情况下起飞25%,否则关闭1个最小手数||1金衡盎司。这笔交易的总体货币风险相当于大约75.00英镑的风险....。XAUUSD交易在第一个目标处获利的时间刚刚超过2/3......目前该仓位的未平仓合约约为18.00英镑....。

现在,将同样的公式应用于我迄今为止所交易的所有货币对;它们都是我需要的准确的......。只有黄金和白银不是...这些货币对的价差将没有什么实质意义,因为我不是在为5-20个点做准备。止损和目标大部分时间都在80-250点左右...。

 
GumRai:

你能不能展示一下你的代码,结果是这样打印的?

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公式。 23.64 / 0.01 * 0.01 = 23.64

也许你可以添加这样的打印

Print("账户货币=",AccountCurrency())。

来确认你确实在ST中交易英镑,因为我看不出tv会是0.01。


2013.11.11 10:13:12     2013.06.17 15:00  V1 - XAUUSD XAUUSD,H1:  Account # (deleted) -- leverage is 1:200 -- Account currency is GBP -- Minium Lots are: 1 -- Min Lot Step is: 1
我可以向你保证,它是以英镑计价的...。

你的意思是显示导致该打印的代码,你有它吗?
 
DomGilberto:

我可以向你保证,它是以英镑为单位的......

你的意思是显示导致该打印的代码,你有吗?

那是Print()的输出,而不是代码。......你能不能显示产生该输出的代码,实际的Print(......)语句,我们需要看到你从哪里得到Tick值,因为这里面有问题。 事实上,看起来你正在打印两次ts(Tick Size)......。

23.64 / 0.01 * 0.01 = 23.64是不正确的,0.01 * 0.01 = 0.0001,23.64 / 0.0001 = 236400

 
好吧,就在这里。

//+------------------------------------------------------------------+
//| 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 btp=buy_takeprofit_price;
      int PositionIndex1;    
      int TotalNumberOfOrders1;   
      TotalNumberOfOrders1 = OrdersTotal();   

      static double Stored_BuyPrice;

      if( OpenOrdersThisPair(Symbol())==0 && LotSize_Buy - minlot > - Point )
         {
         int BuyTicketOrder = OrderSend(Symbol(),OP_BUYSTOP,LotSize_Buy,buyPrice,3,BuyStopPrice,btp,NULL,MagicNumber,0,Green);
         if(BuyTicketOrder == -1)Print("First Buy Order Last Error = ",GetLastError(), " On: ", Symbol());
         if(BuyTicketOrder > 0)Print("FIRST BUY ORDER PLACED: ", Symbol(), " LotSize_Buy is: ", LotSize_Buy );
         } 


这也是在XAUUSD下的真实账户上打印的ticksize和tickvalue。

2013.11.11 06:10:51  V1 - XAUUSD XAUUSD,H1:  Account # (CENSORED) -- leverage is 1:200 -- Account currency is GBP -- Tick Size is: 0.01 -- Tick Value is: 0.01
 

TickSize和Tickvalue会不会都一样@0.01?0.01是tick,每一个tick 的移动相当于最小仓位规模下0.01美分的P&L波动...假设我有一个美元账户,这将是准确的...

这听起来不对吗?

另外。

"23.64 / 0.01 * 0.01 = 23.64是不正确的,0.01 * 0.01 = 0.0001,23.64 / 0.0001 = 236400"

是的--如果我这样隔离公式,这将是正确的。

"23.64 / ( 0.01 * 0.01 ) = 236400 "

但是因为它是一个常数公式,所以在产生23.64方面,答案是正确的......问题是这个数字是否是按照填充正确的位置尺寸的正确数字?

 
DomGilberto:
好吧,就在这里。



这也是在XAUUSD的实盘账户上打印的ticksize和tickvalue。


对不起,你我之前的计算是错误的 . .

你仍然没有展示产生这个打印的代码 . .

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

. . . 但不要紧。

Tick Value -存款货币中的tick值。


我的理解是,对于1个标准手来说,1个点的价值是多少,在我的美元账户上,XAUUSD的TickValue是1.06908。

 

什么?这对我来说没有任何意义 - 我看到的刻度值怎么会简单地返回0.01......。

代码都在上面^?

double loss_for_1_lot = pips_to_bsl/ ts * tv ;

"loss_for_1_lot "和 "loss_for_1_lot1 "是一样的,但它是在买入方......对不起,我在买入方和卖出方之间来回翻转,我只是抓住ST中打印的第一件事,无论是买入还是卖出......

你的经纪人是谁?我的刻度值是否与它是以英镑计价的事实有关?(疑惑)

 
好的--所以我向Alpari UK查询,他们返回了这个--这是一个以英镑计价的账户...
2013.11.11 13:57:37     Pip value XAUUSD,H1: Alert:  Tick Value is: 0.0626 -- Tick Size is: 0.001
 
DomGilberto:

什么?这对我来说没有任何意义--为什么我看到的刻度值只是返回0.01......。

也许你的经纪人把它搞砸了 ......这有时会发生。

DomGilberto:

代码都在上面^?

"loss_for_1_lot "和 "loss_for_1_lot1 "是一样的,但它是在买入方......对不起,从买入方到卖出方来回翻转,我只是抓住ST中打印的第一件事,无论那是买入还是卖出......

没有 . . . Print("loss_for_1_lot1公式:", . . . ) 不在那里。. .

DomGilberto:

你的经纪人是谁?我的刻度值是否与它是以英镑计价的事实有关?(疑惑)

我试着用GoMarkets,在Alpari的英镑账户上,我得到0.626 . . . . 拿这个乘以GBPUSD,你得到0.626 * 1.5974 = 0.999,所以这与我之前在美元账户上的数值1.06908一致,因为考虑到不同的经纪商和符号价格,等等。