XAUUSD在以英镑计价的账户上的手数错误? - 页 5 12345 新评论 Simon Gniadkowski 2013.11.12 11:31 #41 DomGilberto: 谢谢你 :)- 我现在就去看看! 另外,在您看来,FXCM对我看到的Tick Value的看法是否有误?他们坚持说这是非常正常的?你不知道为什么他们会把它搞砸,是吗? 我不知道他们为什么要这么做 ......如果你想在你的论点后面加上一些砝码,安装一些他们的竞争对手,看看他们是如何设置Tick Value的,然后告诉他们他们的竞争对手在做什么 ......并询问他们是否仍然觉得 "正常" ...... Dominic Gilbert 2013.11.12 11:37 #42 哦,相信我,我已经检查了 大约5-6个不同的经纪商!我很恼火,因为我已经开始在他们那里交易了。我很恼火,因为我已经开始和他们交易了。在所有的经纪商中,我不会想到FXCM会做出这样的错误 :( 只是出于好奇--我看了你之前附上的链接;这样做不是更容易吗?- 印刷品也在那里。我刚刚把它放到我在FXCM的真实账户上...。它给了我一个相当准确的TickValue,基于GBPUSD的tick值和简单*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 Simon Gniadkowski 2013.11.12 11:56 #43 DomGilberto: 哦,相信我,我已经检查了大约5-6个不同的经纪商!我很恼火,因为我不知道该怎么办。我很恼火,因为我已经开始和他们交易了。在所有的经纪商中,我不会想到FXCM会做出这样的错事 :( 只是出于好奇--我看了你之前附上的链接;这样做不是更容易吗? 这可能/将会起作用(我没有看得足够详细),如果符号是XXXUSD,而你的账户货币是GBP,难道你不希望有一个功能,对一个符号如XXXXYY和账户货币 ZZZ起作用? 我唯一不知道的是如何创建一个开关,如你所说,如果经纪人有正确的细节,就使用它们。(能否给我指出正确的方向?) 你可以简单地进行计算,并将计算值与MarketInfo()的值进行比较,如果两者相差超过10%,20%......不管你认为是多大的差距。......不管你认为有多大的误差,你就使用计算值。 你只需要确定你在计算中使用的数值是正确的,为此,如果你得到一个基础货币(EURGBP)与你的账户货币(GBP)相同的符号的Tick Value,它将是1.0(5位数的经纪人),然后再从这个符号中找出你需要的Tick Value。 Dominic Gilbert 2013.11.12 14:11 #44 喊得好!好吧,我已经玩了一圈--如果你有时间,你能不能看一下这个,看看你的想法? 我知道我没有把它做得非常强大--我只是在寻找一个临时的解决方案(我知道临时这个词是一个危险的词!),在这期间,特别是在FXCM中保持强大......下面这个是专门针对XAGUSD的!(对不起,我需要更新它,因为我发布了错误的一个!) 白银的最小手数始终是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); } ssn_ 2013.11.12 17:28 #45 DomGilberto: 喊得好!好了,我已经玩了一圈--如果你有时间,你能不能看一下这个,看看你怎么想? 我知道我没有把它做得非常强大--我只是在寻找一个临时的修复方法(我知道临时这个词很危险!),在这期间,特别是在FXCM中保持强大。下面这个是专门针对XAGUSD的!(对不起,我需要更新它,因为我发布了错误的一个!) 白银的最小手数始终是50.00,黄金是1.00。 下面是一些更通用的东西... 它可以扩展到不同经纪商的其他符号。 这里需要注意的关键输入是 BidUSD 和 AskUSD。BidUSD是保证金货币 的美元价格,所以假设你的交易符号是GBPJPY,那么BidUSD将是GBPUSD的价格。同样,AskUSD将是USDJPY。如果任何一种保证金货币或盈利货币是美元,例如任何一种主要货币,那么您的BidUSD==AskUSD==贸易符号的当前价格。 这个函数返回的是持有一手(1.0)TradeSymbol的收益/损失,通过指定的PriceDelta(输入之一)。 //+------------------------------------------------------------------+ //| 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); } Dominic Gilbert 2013.11.12 23:14 #46 谢谢你的帖子,伙计--但我并不完全确定我从中得到了什么--明天会仔细看看。 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你 :)- 我现在就去看看!
另外,在您看来,FXCM对我看到的Tick Value的看法是否有误?他们坚持说这是非常正常的?你不知道为什么他们会把它搞砸,是吗?
只是出于好奇--我看了你之前附上的链接;这样做不是更容易吗?- 印刷品也在那里。我刚刚把它放到我在FXCM的真实账户上...。它给了我一个相当准确的TickValue,基于GBPUSD的tick值和简单*0.10?
我唯一不知道的是如何创建一个开关,正如你所说的,如果经纪人有正确的细节,就用他们。(能给我指出正确的方向吗?)
哦,相信我,我已经检查了大约5-6个不同的经纪商!我很恼火,因为我不知道该怎么办。我很恼火,因为我已经开始和他们交易了。在所有的经纪商中,我不会想到FXCM会做出这样的错事 :(
只是出于好奇--我看了你之前附上的链接;这样做不是更容易吗?
这可能/将会起作用(我没有看得足够详细),如果符号是XXXUSD,而你的账户货币是GBP,难道你不希望有一个功能,对一个符号如XXXXYY和账户货币 ZZZ起作用?
白银的最小手数始终是50.00,黄金是1.00。
喊得好!好了,我已经玩了一圈--如果你有时间,你能不能看一下这个,看看你怎么想? 我知道我没有把它做得非常强大--我只是在寻找一个临时的修复方法(我知道临时这个词很危险!),在这期间,特别是在FXCM中保持强大。下面这个是专门针对XAGUSD的!(对不起,我需要更新它,因为我发布了错误的一个!)
白银的最小手数始终是50.00,黄金是1.00。
下面是一些更通用的东西...
它可以扩展到不同经纪商的其他符号。
这里需要注意的关键输入是 BidUSD 和 AskUSD。BidUSD是保证金货币 的美元价格,所以假设你的交易符号是GBPJPY,那么BidUSD将是GBPUSD的价格。同样,AskUSD将是USDJPY。如果任何一种保证金货币或盈利货币是美元,例如任何一种主要货币,那么您的BidUSD==AskUSD==贸易符号的当前价格。
这个函数返回的是持有一手(1.0)TradeSymbol的收益/损失,通过指定的PriceDelta(输入之一)。
谢谢你的帖子,伙计--但我并不完全确定我从中得到了什么--明天会仔细看看。