[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 105

 
abolk:
看这里:https://docs.mql4.com/ru/basis/operations/math
我都看了,怎么解决我的问题呢?
 
Zhunko:
你也可以这样做。

b不是等于1吗?

我查过了,一个。

 
artmedia70:
创建旗帜,例如:

对于TP1 - bool TP1,对于TP2 - bool TP2,等等。

最初它们的值是假的。

在下一次关闭之前,你要做一个检查。

if (!TP1) {部分关闭第一部分的代码,关闭成功后写TP1=true}。

if (!TP2) {部分关闭第二部分的代码,成功关闭后写TP2=true}。

...以此类推,所有部件都是如此...

因此,这些标志将预示着每个部分已经被关闭过一次......


谢谢!重写了代码...TP0==false 我把它放在程序的开头。

问题仍然存在。第一部分关闭,并立即开始关闭第二部分:-(......,第二部分有错误131,可以理解--手数不同) 但另一个细微差别是,第一部分""警报("关闭",手数, "手数买入",票数);""没有写入日志,即没有达到验证Ans==true。为什么????下面是一段代码...

提前感谢!

while(true) // 关闭角斗场循环。
{
if (TP0==false &&(Cls_B0==true ||Cls_S0==true))

{
LotC=MathRound(Lot/4/Step)*Step;
Alert("Lot-",Lot, "Attempting to close-",LotC," Lot Buy ",Ticket,.等待回复...")。

RefreshRates(); // 刷新数据
Ans=OrderClose(Ticket,LotC,Bid,5); // TicketClose买入1/3手?
if (Ans=true) // 成功了 :)
{
TP0=true;
Alert ("Closed " ,Lot," Lot Buy " ,Ticket);
break; // Exit from closed loop
}
if (Fun_Error(GetLastError() ==1) // Error handling
continue; // Retry
return; // Exit from start()
}

 
Sinichka:

亲爱的程序员!

请给予帮助。该指标在看涨的潜在背离上画出数值,而不画出看跌的潜在....。它写道,错误4002 - 数组索引 - 超出范围。

我似乎已经修复了一切...我花了一整个晚上...而这是一种耻辱--代码是最简单的...但它是用箭头画牛,而不是画熊......求你了!????????????????????? 中的错误是什么?


阿莲娜。

你需要为数组vpadcci[], v[], hh[], ss[]分配内存。它们被声明为动态的,但它们的大小并没有在任何地方指定。动态数组的大小是用ArrayResize() 函数指定的。

P.S. 并请使用SRC按钮来插入代码

 
Snaf:
对MT5的问题。 我怎样才能知道策略测试器已经完成了它的工作?除了视觉上:)

当工作完成后,deinit()函数被执行。因此,如果我们到达那里,就意味着专家的工作已经完成。为了确定测试器中的工作是否在进行中,使用函数IsTesting()


对不起,我注意到这个问题是与MT5有关的。

那里也是如此,只有OnDeinit()和MQL5InfoInteger(MQL5_TESTING)

 
alsu:

阿莲娜。

你需要为数组vpadcci[], v[], hh[], ss[]分配内存。它们被声明为动态的,但它们的大小并没有在任何地方指定。动态数组的大小是用ArrayResize() 函数定义的。

P.S. 并请使用SRC按钮来插入代码


非常感谢你的答复,我会研究一下的。
 
eddy:

вопрос програмистам: как сделать число после запятой целым?:)

например в числе 1,128 нужно 128, в 1,12 - 12, в 1,2 - 2)

exnern double n=1,12
n-=MathFloor(n);          // 0.12 = 0.1200000..01 или 0.11999999..99
int n2=MathRound(n*1000); // 0.12 > 120 или 119
while(true)               // пока в конце 0 или 9
 if(n2%10<1)              // n2==хз*10+0
    n2/=10; else          // убираем 0
 if(n2%10==9)             // n2==хз*10+9
   {n2=MathRound(n2/10);} // округляем 9 (119 > 11.9 > 12)
 else if(n2%10>0) break;
我就是这样解决的。 有一点不足--如果数字以0或9结尾,就不能得到数字。 但我不需要,我只是输入计算周期(4,8,12,16,24,36,48等)。
 

请告知如何正确记录VininI LRMA指标color.mq4 https://www.mql5.com/ru/code/8200 已经改变。

如果你使用 double iCustom(stringsymbol, int timeframe, string name, ..., int mode, int shift)。我搞不清楚。我写了iCustom(NULL,0, "VininI_LRMA_color",55,0,1),不知道该怎么处理)。

 

线条的值在指标缓冲区1(绿色)和2(红色)。当在图表上画出一条绿线时,第1条上的变量up有这条线的值,而变量dn=EMPTY_VALUE,反之亦然。EMPTY_VALUE 是一个空的缓冲区值,其数值为2147483647。
然后你可以按照你的意愿使用这些值。

double up=iCustom(NULL,0,"VininI LRMA color",period,price,Shift,1,1); 
double dn=iCustom(NULL,0,"VininI LRMA color",period,price,Shift,2,1); 
 
Poseidon:
我们能否创建一个EA,当最后一个开仓订单的止盈触发时,关闭所有订单?
我只是一个初学者,不知道如何做。如果你不介意的话,你能为我做这件事吗?