任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1100 1...109310941095109610971098109911001101110211031104110511061107...1178 新评论 Aleksandr Afanasenko 2016.09.23 12:43 #10991 尊敬的程序员们,请你们帮我设置一个禁令,禁止一次开出多个系列的交易(系列是指如果订单在亏损或零的情况下被关闭,然后在同一个工具上开出下一个交易,但手数更大),也就是说,如果你开出一个系列的交易,第二个和随后的交易就被放在其他工具上的禁令下(机器人同时在不同工具上工作)。我认为这应该通过终端的全局变量 来完成,但我没有足够的知识和经验,我刚刚开始学习MQL。这是一个二元期权顾问。以下是代码外置双数Lots = 1; // Lotsextern int Exp = 1; // 过期时间外部int Wait = 1; // 一个方向的烛台数量extern int Timeout = 1; // 时间间隔外置双倍数Multiplier = 3; // 倍增器外部int Slippage = 5; // Slippage外来int Magic = 2090; // Magicint票,类型。双倍价格,地段。//+------------------------------------------------------------------+//|专家初始化功能|//+------------------------------------------------------------------+int OnInit(){return(INIT_SUCCEEDED)。}//+------------------------------------------------------------------+//|专家去初始化函数|//+------------------------------------------------------------------+空白的OnDeinit(const int reason)。{}//+------------------------------------------------------------------+//|专家勾选功能|//+------------------------------------------------------------------+空白的OnTick(){// --------------- 公开交易 ---------------if (OrdersTotal() == 0) // 订单数量必须等于零{如果((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) < PriceOpenLastHistOrder(OP_BUY) )|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL))// 如果最后一笔交易是亏损的,则开出相同的交易,但手数更大。{类型=TypeLastHistOrder()。如果(Type == OP_BUY) Price = Ask;如果(类型== OP_SELL)价格=Bid。Lot = NormalizeDouble(LotsLastHistOrder()*Multiplier, 2);ticket = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);}如果(PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0)。// 如果上一次交易的利润等于零,则将开出相同的交易。{类型=TypeLastHistOrder()。如果(Type == OP_BUY) Price = Ask;如果(类型== OP_SELL)价格=Bid。Lot = NormalizeDouble(LotsLastHistOrder(), 2);ticket = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);}如果((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > PriceOpenLastHistOrder(OP_BUY))|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL) )|| CountHistTrades() == 0)//如果最后一笔交易是盈利的,订单就会被打开。{如果(SignalBuy() && OrdersTotal() == 0){ticket = OrderSend(Symbol(, OP_BUY, Lots, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic)。}如果(SignalSell() && OrdersTotal() == 0){ticket = OrderSend(Symbol(, OP_SELL, Lots, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic)。评论("PriceCloseLastHistOrder(OP_BUY)=", PriceCloseLastHistOrder(OP_BUY), "PriceCloseLastHistOrder(OP_SELL)=",PriceCloseLastHistOrder(OP_SELL))。}}}}//+------------------------------------------------------------------+int CountTrades(int type = -1) // 确定交易的数量{int cnt = 0。for (int i=OrdersTotal()-1; i>=0; i--) // 这个循环绝对会经过所有未结订单,i是订单号。{if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) // 该函数检查订单号为i的订单是否在市场中。// 如果有,将检查以下条件...{如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1)) // 如果符号//订单开启的符号等于当前符号,订单类型等于当前EA设置中的魔术,并且//订单类型等于类型(或类型==-1(在订单计数需要哪种类型并不重要的情况下))。cnt++; // 1被添加到cnt变量中,在循环结束时cnt将等于交易的数量。//由当前的EA为当前的货币对打开,并具有一定的类型。}}return(cnt); // 返回cnt变量的值。}//+------------------------------------------------------------------+int CountHistTrades(int type = -1){int cnt = 0。for (int i=OrdersHistoryTotal()-1; i>=0; i--){如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))cnt++。}}return(cnt)。}//+------------------------------------------------------------------+bool SignalBuy(){for (int i=1; i<=Wait; i++){如果(Close[i]>Open[i])返回(false)。}如果((iBarShift(Symbol(), 0, TimeLastHistOrder()+Timeout) >= Wait || (Wait == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout) )&& CountHistTrades() > 0) return(true)。如果(CountHistTrades() ==0)返回(true)。return(false)。}//+------------------------------------------------------------------+bool SignalSell(){for (int i=1; i<=Wait; i++){如果(Close[i]<Open[i])返回(false)。}如果((iBarShift(Symbol(), 0, TimeLastHistOrder()+Timeout) >= Wait || (Wait == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout) )&& CountHistTrades() > 0) return(true)。如果(CountHistTrades() ==0)返回(true)。return(false)。}//+------------------------------------------------------------------+datetime TimeLastHistOrder(int type = -1){datetime lasttime = 0;datetime opentime = 0;for (int i=OrdersHistoryTotal()-1; i>=0; i--){如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1)){如果(OrderCloseTime() > lasttime){lasttime = OrderCloseTime();opentime = OrderOpenTime()。}}}}return(opentime)。}//+------------------------------------------------------------------+int TypeLastHistOrder(){datetime time = 0;int type = -1;for (int i=OrdersHistoryTotal()-1; i>=0; i--){如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic){如果(OrderCloseTime() > time){time = OrderCloseTime()。type = OrderType()。}}}}return(type)。}//+------------------------------------------------------------------+double LotsLastHistOrder(int type = -1){datetime time = 0;double lots = 0;for (int i=OrdersHistoryTotal()-1; i>=0; i--){如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1)){如果(OrderOpenTime() > time){time = OrderOpenTime()。时间 = OrderLots()。}}}}return(lot)。}//+------------------------------------------------------------------+double PriceCloseLastHistOrder(int type = -1){datetime time = 0;双倍价格=0。for (int i=OrdersHistoryTotal()-1; i>=0; i--){如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1)){如果(OrderCloseTime() > time){time = OrderCloseTime()。price = OrderClosePrice()。}}}}}}//+------------------------------------------------------------------+double PriceOpenLastHistOrder(int type = -1){datetime time = 0;双倍价格=0。for (int i=OrdersHistoryTotal()-1; i>=0; i--){如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1)){如果(OrderCloseTime() > time){time = OrderCloseTime()。price = OrderOpenPrice()。}}}}}}//+------------------------------------------------------------------+ 问吧! Any rookie question, so 如何编码? Denis Masalsky 2016.09.23 13:52 #10992 你好,同事们!,我在编程时有个问题:有没有办法在EA中把服务器时间 精确到毫秒? 例如,得到。23.09.2016 14h.:53分钟。: 54000毫秒?这正好是54秒,000毫秒。 Vladimir 2016.09.23 22:57 #10993 e-partner: 同事们好! 我在编程时有个问题:是否有可能在专家顾问中以某种方式获得精确到毫秒 的 服务器时间? 例如,得到。23.09.2016 14h.:53分钟。: 54000毫秒?这正好是54秒,000毫秒。有趣的问题。你的意思是,指定 最后已知的服务器时间,最后引用TimeCurrent()的时间或服务器上的当前时间? 如果是TimeCurrent(),那么,如果我们考虑到一个带有新报价的数据包从服务器到终端要经过10-500毫秒的互联网,而且这个时间在不同的数据包之间是不同的,那么,它将有什么用呢?此外,不清楚的是,如果最后的报价从几个来源、流动性提供者来到服务器,然后被处理,然后服务器发送一个新的勾选,那么最后的报价是什么到达。另外,不知道服务器的系统计时器是如何与天文时间同步的。在2014年1月9日04:15至06:15 MSK(星期四,交易日),我在发现这一点,因为偏差不是来自天文数字,而是来自31家公司的平均数。25个时间点的图显示了这些偏差(单位是秒,而不是毫秒)。而从服务器的数据中以毫秒为单位计算出任何东西的意义何在?第二个选项更清晰。如果你的电脑与天文时间同步,而且精度是你知道的,那么服务器运行所在城市的天文时间也是同样的精度。但为什么你需要它... [删除] 2016.09.24 06:46 #10994 我搞不清楚策略测试器 的优化去了哪里。检查都是站着的,我什么都不明白。MT4 build 1010。Windows 8.1。请告知如何启用优化。我将附上屏幕截图。我无法看到优化按钮。 附加的文件: desktop.zip 129 kb Edgar Akhmadeev 2016.09.25 06:26 #10995 为什么我的MT4 b1010不允许对历史数据进行调试(按钮和菜单项没有激活)?在MT5中,一切都很好。 Alexey Viktorov 2016.09.25 07:48 #10996 因为开发商已经禁止了。 Sergei Noga 2016.09.27 15:58 #10997 int Magik;int Slippage = 5,stopL1 = 50,takeP1 = 20;int trend,TicketS,TicketB。双重rsi,TP,SL。//+------------------------------------------------------------------+//|专家初始化功能|//+------------------------------------------------------------------+int OnInit(){if(Digits == 3 || Digits == 5){滑移*=10。stopL1 *= 10。{ takeP1 *= 10;}return(INIT_SUCCEEDED)。}//+------------------------------------------------------------------+//|专家去初始化函数|//+------------------------------------------------------------------+空白的OnDeinit(const int reason)。{}//+------------------------------------------------------------------+//|专家勾选功能|//+------------------------------------------------------------------+空白的OnTick(){double priseBuy = FindLastOrderPrise(OP_BUY)。double priseSel = FindLastOrderPrise(OP_SELL)。double frezeelevl = MarketInfo(OrderSymbol(),MODE_FREEZELEVEL);rsi = iRSI(Symbol(),PERIOD_D1,7,PRICE_CLOSE,0);trend = WhatTrend()。如果(CountTrades() ==0){如果(趋势==1 &&rsi <=30){如果(OrderSend(Symbol(),OP_BUYLIMIT,0.10,Ask,Slippage,0,0, "首次买入订单设置",Magik,0)== true){TicketB = FindLastTicket(OP_BUY)。如果(TicketB >0){SL = priseBuy + NormalizeDouble(takeP1 * Point,Digits)。TP = priseBuy - NormalizeDouble(stopL1 * Point,Digits)。如果(OrderModify(TicketB,priseBuy,SL,TP,0)== true)评论("hooraaaahhhh")。}}}// 如果(trend == 1 && rsi <= 30)否则如果(趋势==2 &&rsi >= 70){如果(OrderSend(Symbol(),OP_SELLLIMIT,0.10,Bid,Slippage,0,0, "first order set",Magik,0)== true){for(int i = OrdersTotal()-1;i >0;i--){OrderSelect(i,SELECT_BY_TICKET,MODE_TRADES)。如果(OrderType()== OP_SELL && OrderMagicNumber() == Magik){double sl = OrderOpenPrice() + NormalizeDouble(stopL1 * Point,Digits);double tp = OrderOpenPrice() - NormalizeDouble(takeP1 * Point, Digits);如果(OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0)==true)休息。否则继续。}}}}}// (CountTrades() == 0)}我想请有能力的程序员解释一下我的错误是什么? 为什么顺序没有被修改!!!而且编译器在这样做的时候没有给出错误。 Any rookie question, so 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 我将写一个免费的mql4顾问 Sergei Noga 2016.09.28 05:38 #10998 我已经学习了教程,我已经阅读并做了笔记......你能具体指出错误吗......因为编译器没有给出错误,测试器中也没有错误,但顺序没有修改。 Mikhail Kozhemyako 2016.09.28 06:55 #10999 burbur87: 我研究了教程.我读了并做了笔记.你能具体指出错误吗......因为编译器没有给出任何错误,测试器中也没有错误.但顺序没有修改.就像程序中根本看不到顺序一样仔细阅读OrderSend()返回的内容 if(OrderSend (Symbol(),OP_SELLLIMIT,0.10,Bid,Slippage,0,0,"первый ордер сел установлен",Magik,0) > 0)实际上,我会做以下工作。 int ticket=OrderSend (Symbol(),OP_SELLLIMIT,0.10,Bid,Slippage,0,0,"первый ордер сел установлен",Magik,0); if(ticket>=0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) { if (OrderStopLoss()==0 || OrderTakeProfit()==0) { double sl = OrderOpenPrice() + NormalizeDouble(stopL1 * Point,Digits); double tp = OrderOpenPrice() - NormalizeDouble(takeP1 * Point,Digits); if(!OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0)) Print("Error ",GetLastError()," modify order ",ticket); } } } Alexey Viktorov 2016.09.28 07:42 #11000 Sepulca:仔细阅读OrderSend()返回的内容if(ticket>=0)事实上,我会这样做的。 一张票可以是零吗? 1...109310941095109610971098109911001101110211031104110511061107...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
尊敬的程序员们,请你们帮我设置一个禁令,禁止一次开出多个系列的交易(系列是指如果订单在亏损或零的情况下被关闭,然后在同一个工具上开出下一个交易,但手数更大),也就是说,如果你开出一个系列的交易,第二个和随后的交易就被放在其他工具上的禁令下(机器人同时在不同工具上工作)。我认为这应该通过终端的全局变量 来完成,但我没有足够的知识和经验,我刚刚开始学习MQL。这是一个二元期权顾问。以下是代码
外置双数Lots = 1; // Lots
extern int Exp = 1; // 过期时间
外部int Wait = 1; // 一个方向的烛台数量
extern int Timeout = 1; // 时间间隔
外置双倍数Multiplier = 3; // 倍增器
外部int Slippage = 5; // Slippage
外来int Magic = 2090; // Magic
int票,类型。
双倍价格,地段。
//+------------------------------------------------------------------+
//|专家初始化功能|
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED)。
}
//+------------------------------------------------------------------+
//|专家去初始化函数|
//+------------------------------------------------------------------+
空白的OnDeinit(const int reason)。
{
}
//+------------------------------------------------------------------+
//|专家勾选功能|
//+------------------------------------------------------------------+
空白的OnTick()
{
// --------------- 公开交易 ---------------
if (OrdersTotal() == 0) // 订单数量必须等于零
{
如果((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) < PriceOpenLastHistOrder(OP_BUY) )
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL))
// 如果最后一笔交易是亏损的,则开出相同的交易,但手数更大。
{
类型=TypeLastHistOrder()。
如果(Type == OP_BUY) Price = Ask;
如果(类型== OP_SELL)价格=Bid。
Lot = NormalizeDouble(LotsLastHistOrder()*Multiplier, 2);
ticket = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
如果(PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0)。
// 如果上一次交易的利润等于零,则将开出相同的交易。
{
类型=TypeLastHistOrder()。
如果(Type == OP_BUY) Price = Ask;
如果(类型== OP_SELL)价格=Bid。
Lot = NormalizeDouble(LotsLastHistOrder(), 2);
ticket = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
如果((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > PriceOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL) )
|| CountHistTrades() == 0)//如果最后一笔交易是盈利的,订单就会被打开。
{
如果(SignalBuy() && OrdersTotal() == 0)
{
ticket = OrderSend(Symbol(, OP_BUY, Lots, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic)。
}
如果(SignalSell() && OrdersTotal() == 0)
{
ticket = OrderSend(Symbol(, OP_SELL, Lots, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic)。
评论("PriceCloseLastHistOrder(OP_BUY)=", PriceCloseLastHistOrder(OP_BUY), "PriceCloseLastHistOrder(OP_SELL)=",
PriceCloseLastHistOrder(OP_SELL))。
}
}
}
}
//+------------------------------------------------------------------+
int CountTrades(int type = -1) // 确定交易的数量
{
int cnt = 0。
for (int i=OrdersTotal()-1; i>=0; i--) // 这个循环绝对会经过所有未结订单,i是订单号。
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) // 该函数检查订单号为i的订单是否在市场中。
// 如果有,将检查以下条件...
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1)) // 如果符号
//订单开启的符号等于当前符号,订单类型等于当前EA设置中的魔术,并且
//订单类型等于类型(或类型==-1(在订单计数需要哪种类型并不重要的情况下))。
cnt++; // 1被添加到cnt变量中,在循环结束时cnt将等于交易的数量。
//由当前的EA为当前的货币对打开,并具有一定的类型。
}
}
return(cnt); // 返回cnt变量的值。
}
//+------------------------------------------------------------------+
int CountHistTrades(int type = -1)
{
int cnt = 0。
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
cnt++。
}
}
return(cnt)。
}
//+------------------------------------------------------------------+
bool SignalBuy()
{
for (int i=1; i<=Wait; i++)
{
如果(Close[i]>Open[i])返回(false)。
}
如果((iBarShift(Symbol(), 0, TimeLastHistOrder()+Timeout) >= Wait || (Wait == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout) )
&& CountHistTrades() > 0) return(true)。
如果(CountHistTrades() ==0)返回(true)。
return(false)。
}
//+------------------------------------------------------------------+
bool SignalSell()
{
for (int i=1; i<=Wait; i++)
{
如果(Close[i]<Open[i])返回(false)。
}
如果((iBarShift(Symbol(), 0, TimeLastHistOrder()+Timeout) >= Wait || (Wait == 0 && TimeCurrent() >= TimeLastHistOrder()+Timeout) )
&& CountHistTrades() > 0) return(true)。
如果(CountHistTrades() ==0)返回(true)。
return(false)。
}
//+------------------------------------------------------------------+
datetime TimeLastHistOrder(int type = -1)
{
datetime lasttime = 0;
datetime opentime = 0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
如果(OrderCloseTime() > lasttime)
{
lasttime = OrderCloseTime();
opentime = OrderOpenTime()。
}
}
}
}
return(opentime)。
}
//+------------------------------------------------------------------+
int TypeLastHistOrder()
{
datetime time = 0;
int type = -1;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
如果(OrderCloseTime() > time)
{
time = OrderCloseTime()。
type = OrderType()。
}
}
}
}
return(type)。
}
//+------------------------------------------------------------------+
double LotsLastHistOrder(int type = -1)
{
datetime time = 0;
double lots = 0;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
如果(OrderOpenTime() > time)
{
time = OrderOpenTime()。
时间 = OrderLots()。
}
}
}
}
return(lot)。
}
//+------------------------------------------------------------------+
double PriceCloseLastHistOrder(int type = -1)
{
datetime time = 0;
双倍价格=0。
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
如果(OrderCloseTime() > time)
{
time = OrderCloseTime()。
price = OrderClosePrice()。
}
}
}
}
}
}
//+------------------------------------------------------------------+
double PriceOpenLastHistOrder(int type = -1)
{
datetime time = 0;
双倍价格=0。
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == type || type == -1))
{
如果(OrderCloseTime() > time)
{
time = OrderCloseTime()。
price = OrderOpenPrice()。
}
}
}
}
}
}
//+------------------------------------------------------------------+
,我在编程时有个问题:有没有办法在EA中把服务器时间 精确到毫秒?
例如,得到。23.09.2016 14h.:53分钟。: 54000毫秒?这正好是54秒,000毫秒。
同事们好!
我在编程时有个问题:是否有可能在专家顾问中以某种方式获得精确到毫秒 的 服务器时间?
例如,得到。23.09.2016 14h.:53分钟。: 54000毫秒?这正好是54秒,000毫秒。
有趣的问题。你的意思是,指定 最后已知的服务器时间,最后引用TimeCurrent()的时间或服务器上的当前时间?
如果是TimeCurrent(),那么,如果我们考虑到一个带有新报价的数据包从服务器到终端要经过10-500毫秒的互联网,而且这个时间在不同的数据包之间是不同的,那么,它将有什么用呢?此外,不清楚的是,如果最后的报价从几个来源、流动性提供者来到服务器,然后被处理,然后服务器发送一个新的勾选,那么最后的报价是什么到达。另外,不知道服务器的系统计时器是如何与天文时间同步的。在2014年1月9日04:15至06:15 MSK(星期四,交易日),我在发现这一点,因为偏差不是来自天文数字,而是来自31家公司的平均数。25个时间点的图显示了这些偏差(单位是秒,而不是毫秒)。
而从服务器的数据中以毫秒为单位计算出任何东西的意义何在?
第二个选项更清晰。如果你的电脑与天文时间同步,而且精度是你知道的,那么服务器运行所在城市的天文时间也是同样的精度。但为什么你需要它...
我搞不清楚策略测试器 的优化去了哪里。检查都是站着的,我什么都不明白。MT4 build 1010。Windows 8.1。
请告知如何启用优化。
我将附上屏幕截图。我无法看到优化按钮。
}
我想请有能力的程序员解释一下我的错误是什么? 为什么顺序没有被修改!!!而且编译器在这样做的时候没有给出错误。
我研究了教程.我读了并做了笔记.你能具体指出错误吗......因为编译器没有给出任何错误,测试器中也没有错误.但顺序没有修改.就像程序中根本看不到顺序一样
仔细阅读OrderSend()返回的内容
实际上,我会做以下工作。
仔细阅读OrderSend()返回的内容
事实上,我会这样做的。