[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 292 1...285286287288289290291292293294295296297298299...432 新评论 ed3sss 2013.04.17 04:07 #2911 你好。请帮助我找出我做错了什么。有条件地:Ask = 1.3000PriceAsk = 1.3055 (包括Step=50和Srpead=3的情况)boolBuyOrder=1 。 如果(Ask-PriceAsk+Step-Spread<=0 && BuyOrder==0)为什么这个条件是真的? GaryKa 2013.04.17 04:47 #2912 ed3sss:在if 语句之前,立即打印出条件中所有变量的值Print("Ask:",Ask," PriceAsk:",PriceAsk," Step:",Step," Srpead:",Srpead," BuyOrder:",BuyOrder); 很可能有些变量值会与你想象的不同。 gayr 2013.04.17 04:53 #2913 你好,在我的终端mt4中,当我点击一个直接在终端下的货币对,例如(eurusd)打开一个终端窗口,只有这个货币对我需要打开一个小窗口,然后将其扩展到右上角,这在以前从未发生过,请告诉我为什么会发生这种情况,如何解决? ed3sss 2013.04.17 05:08 #2914 GaryKa:在if 语句之前,立即记录条件中所有变量的值Print("Ask:",Ask," PriceAsk:",PriceAsk," Step:",Step," Srpead:",Srpead," BuyOrder:",BuyOrder); 很可能有些变量值会与你想象的不同。 看看吧,谢谢) GaryKa 2013.04.17 05:16 #2915 tohoz : 首先是一点儿理论。 现在的结论是hoz://IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ //| Функция, определения минимальной разрядности лота | //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ int LotDecimal() {return (MathCeil (MathAbs (MathLog (bd_LOTSTEP) / MathLog (10))));} 我想了解它是如何工作的。这就是为什么我问。下划线的 表达式返回bd_LOTSTEP的十进制对数(以10为底的对数),即10的幂,得到bd_LOTSTEP。 ed3sss 2013.04.17 06:10 #2916 GaryKa: 在if 语句之前,立即记录条件中所有变量的值Print("Ask:",Ask," PriceAsk:",PriceAsk," Step:",Step," Srpead:",Srpead," BuyOrder:",BuyOrder); 当然,有些变量值不会是你想象的那样。ed3sss: 看看吧,谢谢) 谢谢,发现了程序中的一个逻辑错误,现在一切正常了。 ed3sss 2013.04.17 06:15 #2917 你好。我怎样才能在图表上显示当前工具的铭文 未结订单的利润/损失。在专家顾问中 很难检查 是否已经开仓(终端开/关),也很难在关闭终端前捡起最后一手的交易量。谢谢你。 gyfto 2013.04.17 06:29 #2918 hoz:我刚刚在这里遇到了一个功能。//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ //| Функция, определения минимальной разрядности лота | //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ int LotDecimal() {return (MathCeil (MathAbs (MathLog (bd_LOTSTEP) / MathLog (10))));} 我想了解它是如何工作的。这就是为什么我问。 如果我错了,我道歉。MathLog(x)是ln(x)(自然对数)。转换公式是log_a(b)=ln(b)/ln(a),在这种情况下,我们得到ln(x)/ln(10)=lg(x)(十进制对数)。十进制对数的整数部分lg(1...9)为0,lg(10...99)为1,lg(100...999)为2,lg(1000...9999)为3,以此类推,即大于1的数字的对数等于该数字的位数( 小数点之前,不要计算之后)减1。如果x是0到1,那么lg(0.1...0.9)的整数部分等于-1,lg(0.01...0.09)等于-2,lg(0.001...0.009)等于-3,以此类推,也就是说,如果你不看减数,0到1的数字的小数对数等于第一个有效数字之前的零的总数目。我不知道MathCeil是如何工作的,但如果它返回一个数字的整数部分,如果数字大于1,这个函数应该返回小数点前 的数字数减去1,如果数字是0到1,则返回第一个有效数字前的零数。这个函数的最小值是在x等于1...9的范围内。从这里开始,对于10...99和0.1...0.9,这个函数等于1,对于100...999和0.01...0.09,等于2,以此类推。这个想法是... kirkiri 2013.04.17 06:47 #2919 下午好,程序中出现了一个错误,我已经绞尽脑汁了,请指点一下哪里出了问题。只是想知道为什么修改条件不工作。即使条件不真实,它仍然被满足,因此,当修改错误或1,或130时。谢谢大家。 //--------------- 修改TP下的命令------------------- for (i = OrdersTotal() - 1; i >= 0; i--){ OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。 如果(OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)继续。 如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { 如果(OrderType() == OP_BUY){ 如果(OrderTakeProfit() == 0 || OrderTakeProfit() > OprTPB(TP)){ RefreshRates()。 OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPB(TP),0,CLR_NONE) 。} } 如果((OrderType() == OP_SELL)){ 如果(OrderTakeProfit() == 0 || OrderTakeProfit() < OprTPS(TP)){ RefreshRates()。 OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPS(TP),0,CLR_NONE) 。 } } } } return(0);} double LastOpPrBuy(double va=0){ for (i = OrdersTotal() - 1; i>= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。 如果(va == 0) va = OrderOpenPrice()。 如果(OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)继续。 如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 如果(OrderType() == OP_BUY && OrderOpenPrice() <va) va = OrderOpenPrice()} 返回(va)。}//---------------------------------------------------------------------------------- double LastOpPrSell(double va=0){ for (i = OrdersTotal() - 1; i>= 0; i--){ OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。 如果(va == 0) va = OrderOpenPrice()。 如果(OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)继续。 如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 如果(OrderType() == OP_SELL && OrderOpenPrice()>va) va = OrderOpenPrice()} 返回(va)。}//---------------------------------------------------------------------------------- double OprTPB(int TP){ int j=0。 双重TPB=0。 for (i = OrdersTotal() - 1; i>= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。 如果(OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)继续。 如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 如果(OrderType() == OP_BUY){ TPB+=OrderOpenPrice()。 j++;}} 如果(j==0){ j++; TPB=问。} TPB=(TPB/j)+TP*Point。 返回(TPB)。}//---------------------------------------------------------------------------------- double OprTPS(int TP){ int j=0。 双倍TPS=0。 for (i = OrdersTotal() - 1; i>= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。 如果(OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)继续。 如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 如果(OrderType() == OP_SELL){ TPS+=OrderOpenPrice()。 j++;}} 如果(j==0){ j++; TPS=投标。} TPS=(TPS/j)-TP*Point。 返回(TPS)。}//---------------------------- 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 [ARCHIVE]Any rookie question, so gyfto 2013.04.17 06:49 #2920 borilunad: 我们在这里都是新手!不要看我们不知道简单的事情!我们还能在哪里找到答案呢!?至少我们想知道,而不是像有些人认为的那样,只要求输入代码就能马上抽钱!"。)))从一个交易员的幽默中。- 我在哪里可以得到一个有利可图的专家顾问?- 看看上面的某处主题,他们发布了一个名为@MOZG@v4.12 的机器人。 1...285286287288289290291292293294295296297298299...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好。
请帮助我找出我做错了什么。
有条件地:Ask = 1.3000
PriceAsk = 1.3055 (包括Step=50和Srpead=3的情况)
boolBuyOrder=1 。
如果(Ask-PriceAsk+Step-Spread<=0 && BuyOrder==0)为什么这个条件是真的?在if 语句之前,立即打印出条件中所有变量的值
在if 语句之前,立即记录条件中所有变量的值
看看吧,谢谢)
现在的结论是
我想了解它是如何工作的。这就是为什么我问。
GaryKa:
在if 语句之前,立即记录条件中所有变量的值
ed3sss:
看看吧,谢谢)
谢谢,发现了程序中的一个逻辑错误,现在一切正常了。
你好。
我怎样才能在图表上显示当前工具的铭文 未结订单的利润/损失。
在专家顾问中 很难检查 是否已经开仓(终端开/关),也很难在关闭终端前捡起最后一手的交易量。
谢谢你。
我刚刚在这里遇到了一个功能。
我想了解它是如何工作的。这就是为什么我问。如果我错了,我道歉。MathLog(x)是ln(x)(自然对数)。转换公式是log_a(b)=ln(b)/ln(a),在这种情况下,我们得到ln(x)/ln(10)=lg(x)(十进制对数)。十进制对数的整数部分lg(1...9)为0,lg(10...99)为1,lg(100...999)为2,lg(1000...9999)为3,以此类推,即大于1的数字的对数等于该数字的位数( 小数点之前,不要计算之后)减1。如果x是0到1,那么lg(0.1...0.9)的整数部分等于-1,lg(0.01...0.09)等于-2,lg(0.001...0.009)等于-3,以此类推,也就是说,如果你不看减数,0到1的数字的小数对数等于第一个有效数字之前的零的总数目。我不知道MathCeil是如何工作的,但如果它返回一个数字的整数部分,如果数字大于1,这个函数应该返回小数点前 的数字数减去1,如果数字是0到1,则返回第一个有效数字前的零数。这个函数的最小值是在x等于1...9的范围内。从这里开始,对于10...99和0.1...0.9,这个函数等于1,对于100...999和0.01...0.09,等于2,以此类推。这个想法是...
下午好,程序中出现了一个错误,我已经绞尽脑汁了,请指点一下哪里出了问题。只是想知道为什么修改条件不工作。即使条件不真实,它仍然被满足,因此,当修改错误或1,或130时。谢谢大家。
//--------------- 修改TP下的命令-------------------
for (i = OrdersTotal() - 1; i >= 0; i--){
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。
如果(OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)继续。
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
如果(OrderType() == OP_BUY){
如果(OrderTakeProfit() == 0 || OrderTakeProfit() > OprTPB(TP)){
RefreshRates()。
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPB(TP),0,CLR_NONE) 。
}
}
如果((OrderType() == OP_SELL)){
如果(OrderTakeProfit() == 0 || OrderTakeProfit() < OprTPS(TP)){
RefreshRates()。
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPS(TP),0,CLR_NONE) 。
}
}
}
}
return(0);
}
double LastOpPrBuy(double va=0)
{
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。
如果(va == 0) va = OrderOpenPrice()。
如果(OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)继续。
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
如果(OrderType() == OP_BUY && OrderOpenPrice() <va) va = OrderOpenPrice()
}
返回(va)。
}
//----------------------------------------------------------------------------------
double LastOpPrSell(double va=0)
{
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。
如果(va == 0) va = OrderOpenPrice()。
如果(OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)继续。
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
如果(OrderType() == OP_SELL && OrderOpenPrice()>va) va = OrderOpenPrice()
}
返回(va)。
}
//----------------------------------------------------------------------------------
double OprTPB(int TP)
{
int j=0。
双重TPB=0。
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。
如果(OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)继续。
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
如果(OrderType() == OP_BUY)
{
TPB+=OrderOpenPrice()。
j++;
}
}
如果(j==0){
j++;
TPB=问。
}
TPB=(TPB/j)+TP*Point。
返回(TPB)。
}
//----------------------------------------------------------------------------------
double OprTPS(int TP)
{
int j=0。
双倍TPS=0。
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。
如果(OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)继续。
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
如果(OrderType() == OP_SELL)
{
TPS+=OrderOpenPrice()。
j++;
}
}
如果(j==0){
j++;
TPS=投标。
}
TPS=(TPS/j)-TP*Point。
返回(TPS)。
}
//----------------------------
我们在这里都是新手!不要看我们不知道简单的事情!我们还能在哪里找到答案呢!?至少我们想知道,而不是像有些人认为的那样,只要求输入代码就能马上抽钱!"。
)))从一个交易员的幽默中。
- 我在哪里可以得到一个有利可图的专家顾问?
- 看看上面的某处主题,他们发布了一个名为@MOZG@v4.12 的机器人。