初学者的问题 MQL5 MT5 MetaTrader 5 - 页 812 1...805806807808809810811812813814815816817818819...1503 新评论 [删除] 2017.12.24 19:33 #8111 这怎么可能呢? 难道数学没有问题吗?input double T_P =0.81; input double S_L =0.35; b_ep=price-atrH1200; b_sl=b_ep-(b_ep*S_L)/100; b_tp=b_ep+(b_ep*T_P)/100; 它看起来像1.05 *0.81/100 =0.008505它给你35%的止损和81%的利润,而不是0.81%和0.35%。SellLimit(LOT_FOR_TRADE,s_ep,symb,s_sl,s_tp,ORDER_TIME_DAY,0,"SellLimit"); BuyLimit(LOT_FOR_TRADE,b_ep,symb,b_sl,b_tp,ORDER_TIME_DAY,0,"BuyLimit");来自标准SellLimit&BuyLimit 库 的方法Print(s_ep,"s_ep"); Print(s_sl,"s_sl"); Print(s_tp,"s_tp");印刷品显示。2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.04236745s_ep2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.25084094s_sl2017.12.24 07:55:27.559 2017.01.03 16:54:17 0.521183725s_tp Vladimir Karputov 2017.12.24 21:01 #8112 SILVERPRINT:这怎么可能呢? 难道数学没有问题吗?它看起来像1.05 *0.81/100 =0.008505它给你35%的止损和81%的利润,而不是0.81%和0.35%。来自标准SellLimit&BuyLimit 库 的方法印刷品显示。2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.04236745s_ep2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.25084094s_sl2017.12.24 07:55:27.559 2017.01.03 16:54:17 0.521183725s_tp重写同样的代码,但要让所有的变量都被声明。我看看你申报的是什么类型的变量。然后,正确的解决方案就近在眼前。 [删除] 2017.12.24 21:11 #8113 Vladimir Karputov: 重写同样的代码,但要让所有的变量都被声明。我看看你申报的是什么类型的变量。然后你就会走上正确的解决途径。 //+------------------------------------------------------------------+ //| | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ #include <Indicators\Trend.mqh> #include <Indicators\Oscilators.mqh> #include <Indicators\TimeSeries.mqh> #include <Trade\Trade.mqh> input double T_P =0.81; input double S_L =0.35; static int hour; int h; input int TIME_FOR_ACTION=16; input int slowma=200; input int fastwma=20; input int mahours=20; input double LOT_FOR_TRADE=0.1; string symb; MqlTick infotick; MqlDateTime currentTime; CiMA ValueofMA200; CiMA ValueofMA20; CiMA ValueofMAHour; CiATR atr; CTrade T_M; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- symb=_Symbol; ValueofMA200.Create(symb,PERIOD_D1,slowma,0,MODE_SMA,PRICE_CLOSE); ValueofMA20.Create(symb,PERIOD_D1,fastwma,0,MODE_SMA,PRICE_CLOSE); ValueofMAHour.Create(symb,PERIOD_H1,mahours,0,MODE_SMA,PRICE_CLOSE); atr.Create(symb,PERIOD_H1,200); atr.BufferResize(40); ValueofMA200.BufferResize(250); ValueofMA20.BufferResize(250); ValueofMAHour.BufferResize(250); T_M.LogLevel(LOG_LEVEL_ALL); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- RefCustom(); SymbolInfoTick(symb,infotick); TimeToStruct(infotick.time,currentTime); if(1==1) { if(1==1) { double maD1200,maD120,maH120,atrH1200,price; maD1200=ValueofMA200.Main(0); maD120=ValueofMA20.Main(0); maH120=ValueofMAHour.Main(0); atrH1200=atr.Main(0); price=infotick.bid; double s_ep,s_sl,s_tp; double b_ep,b_sl,b_tp; if(1==1) { b_ep=price-atrH1200; b_sl=b_ep-(b_ep*S_L)/100; b_tp=b_ep+(b_ep*T_P)/100; T_M.BuyLimit(LOT_FOR_TRADE,b_ep,symb,b_sl,b_tp,ORDER_TIME_DAY,0,"BuyLimit"); } if(1==1) { s_ep=price+atrH1200; s_sl=s_ep+(s_ep*S_L)/100; s_tp=s_ep-(s_ep*T_P)/100; T_M.SellLimit(LOT_FOR_TRADE,s_ep,symb,s_sl,s_tp,ORDER_TIME_DAY,0,"SellLimit"); } } } } //+------------------------------------------------------------------+ //| Trade function | //+------------------------------------------------------------------+ void OnTrade() { //--- } //+------------------------------------------------------------------+ void RefCustom() { ValueofMA200.Refresh(); ValueofMA20.Refresh(); ValueofMAHour.Refresh(); atr.Refresh(); } //+------------------------------------------------------------------+ Vladimir Karputov 2017.12.24 21:14 #8114 SILVERPRINT: 错了。不编译。 [删除] 2017.12.24 21:18 #8115 Vladimir Karputov: 错了。它不会被编译。对不起,现在试试。 Vladimir Karputov 2017.12.24 21:44 #8116 SILVERPRINT: 对不起,现在试试。可能是一夜之间 - 所以我完全不明白你想做什么。一句话的建议。 宣告时,将变量INITIALIZE化。除法时,要用双数除法,不要用英数除法(例如,数字100.0->双数,数字100->英数)。这个样式是什么,如果(1==1)-?这是很畸形的,千万不要这样写。最后,最重要的是,在你的代码中只留下三行。 b_ep=price-atrH1200; b_sl=b_ep-(b_ep*S_L)/100; b_tp=b_ep+(b_ep*T_P)/100;并明确地声明和初始化变量。比如说像这样。 double price=1.05848; double atrH1200=1.05168; double T_P=0.81; double S_L=0.35; double b_ep=price-atrH1200; double b_sl=b_ep-(b_ep*S_L)/100.0; double b_tp=b_ep+(b_ep*T_P)/100.0; DebugBreak(); [删除] 2017.12.25 00:22 #8117 Vladimir Karputov: 可能是一夜之间 - 所以我不明白你想做的任何事情。一句话的建议。 在声明INITIALIZE变量时除法时,要用双数除法,不要用英数除法(例如,数字100.0->双数,数字100->英数)。这个样式是什么,如果(1==1)-?这是很畸形的,千万不要这样写。最后,最重要的是,在你的代码中只留下三行。并明确地声明和初始化变量。比如说像这样。谢谢你令人难以置信的帮助。 [删除] 2017.12.25 00:27 #8118 奇怪的是,即使有多于零的订单,该函数也能工作。if(OrdersTotal()==0)这并没有什么区别,但在功能不工作的地方,可能会打开整个存款。 Kirill Belousov 2017.12.25 03:40 #8119 SILVERPRINT: 奇怪的是,这个函数,即使有多于零的订单也能工作。这并没有什么区别,但在功能不工作的地方,它可以打开整个存款。打开MT5功能的帮助,确保你正确理解MT5中的订单是什么。 User_mt5 2017.12.26 18:15 #8120 按了又按F1,找不到... 请告诉我如何确定另一个字符的_Digits? 1...805806807808809810811812813814815816817818819...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这怎么可能呢? 难道数学没有问题吗?
它看起来像1.05 *0.81/100 =0.008505
它给你35%的止损和81%的利润,而不是0.81%和0.35%。
来自标准SellLimit&BuyLimit 库 的方法
印刷品显示。
2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.04236745s_ep
2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.25084094s_sl
2017.12.24 07:55:27.559 2017.01.03 16:54:17 0.521183725s_tp
这怎么可能呢? 难道数学没有问题吗?
它看起来像1.05 *0.81/100 =0.008505
它给你35%的止损和81%的利润,而不是0.81%和0.35%。
来自标准SellLimit&BuyLimit 库 的方法
印刷品显示。
2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.04236745s_ep
2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.25084094s_sl
2017.12.24 07:55:27.559 2017.01.03 16:54:17 0.521183725s_tp
重写同样的代码,但要让所有的变量都被声明。我看看你申报的是什么类型的变量。然后,正确的解决方案就近在眼前。
重写同样的代码,但要让所有的变量都被声明。我看看你申报的是什么类型的变量。然后你就会走上正确的解决途径。
错了。不编译。
错了。它不会被编译。
对不起,现在试试。
对不起,现在试试。
可能是一夜之间 - 所以我完全不明白你想做什么。
一句话的建议。
可能是一夜之间 - 所以我不明白你想做的任何事情。
一句话的建议。
谢谢你令人难以置信的帮助。
这并没有什么区别,但在功能不工作的地方,可能会打开整个存款。
奇怪的是,这个函数,即使有多于零的订单也能工作。
这并没有什么区别,但在功能不工作的地方,它可以打开整个存款。
打开MT5功能的帮助,确保你正确理解MT5中的订单是什么。
请告诉我如何确定另一个字符的_Digits?