//попытка сделать функцию: отключение всех индикаторов и разрешение только Бай или Селл в зависимости от того, //что закуплено, когда баланс снижается на заданный процент//второй вариант:bool fOffInd(){int i, b, s;if( UT_AutoOf==1){//если баланс снизился на LossIndikator процентовif( gProfit<=((-1.0)* LossIndikator*AccountBalance())/100.0){Print("Включен автореверс UT_!");
UT_ON=0;//выключатель индикатора, 0-контроль отключен
VRF_ON=0;//выключатель индикатора, 0-контроль отключен//выбираем открытые ордера Бай for( i=1; i<=OrdersTotal(); i++){if(OrderSelect( i-1, SELECT_BY_POS)==true){if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()){ b= b+1;}}}//выбираем открытые ордера Селл for( i=1; i<=OrdersTotal(); i++){if(OrderSelect( i-1, SELECT_BY_POS)==true){if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()){ s= s+1;}}}//если открытых Бай больше чем Селл, то включаем запрет торговли Бай if( s>= b){ CloseAllBuyNow =true;
MaxCount = b;Print("Автореверс. Работаем только Селл!");}else{//если открытых Селл больше чем Селл, то включаем запрет торговли Селл if( b>= s){ CloseAllSellNow =true;
MaxCount = s;Print("Автореверс. Работаем только Бай!");}}return(false);}}else{//все индикаторы должны быть включены и запрет на Бай и Селл снят
UT_ON=1;
VRF_ON=1;
CloseAllBuyNow =false;
CloseAllSellNow =false;}return(0);}
用另一种方式检查,更容易、更快捷。
速度更快。逻辑上复杂的表达式比简单的表达式需要更长的时间来执行。乘法的速度比逻辑的速度快谢谢Vinin,那交易的数量呢,能不能写成只有1.2...N,越过MA后。
Пересечение проще и быстрее проверять по другому
Скорость работы выше. Логические сложные выражение выполняются дольше простых. Умножение быстрее логического另一个选项,但我认为提问者还不会理解它
谢谢Vinin,那么交易的数量呢,是否可以只写1.2...N,在MA交叉之后。
显然,我们需要考虑额外的入境条件。
并计算空缺职位的数量。
但它将与跨界的关系不大。
因为也许在一个案例中只有一个信号,在第二个案例中有10个信号。
但我们应该先确定额外进入的条件。
显然,还有其他的入境条件需要考虑。
并计算空缺职位的数量。
但它与跨界的关系不大。
因为也许在一种情况下只有一个信号,在第二种情况下--10个。
但首先我们应该定义附加条目的条件
好的,我将尝试深入研究,非常感谢 Vilin和sanyooooook的帮助。
double Lots;
double m = 0.1;
for (m = 0.1; AccountFreeMarginCheck(Symbol(),OP_SELL,m)>150; m = m + 0.1)
{
Lots = m;
}
为什么我的Lots总是变成了零?
double Lots;
double m = 0.1;
for (m = 0.1; AccountFreeMarginCheck(Symbol(),OP_SELL,m)>150; m = m + 0.1)
{
Lots = m;
}
Почему у меня Lots всегда оказывается равен нулю?
循环是否被执行,或者是否立即被条件退出?
https://docs.mql4.com/ru/basis/operators/for
表达式1描述了循环的初始化。表达式2是对循环终止条件的检查。如果为真,则执行循环体for。一切都在重复进行,直到表达式2为假。如果它是假的,循环就会终止,控制权就会交给下一个操作者。表达式3在每次迭代后被计算。
for(expression1; expression2; expression3)
经营者。
晚上好。我的终端机有问题,我无法用任何方式解决它。
我加载MT4,加载一个模板,绘制趋势线,当我切换TF时,线条消失了,包括它们也不显示在原始时间框架上。同时,图表的其他部分(水平线、垂直线、通道、所有的Fibos,等等)工作正常。在一个干净的("无模板")图表上,布局被完全保留了下来,以前在同一个指标上一切都很正常。专家顾问和专家顾问已被禁用。我主要在图表上工作,请帮助我!!。
你好。
如何让我的EA在3分钟前不关闭交易?
谁能告诉我们该开什么药,在哪里开?
你必须从逻辑开始。你想得到什么,你想如何得到它。
嗯,逻辑在评论中...
我拿出回报,情况是这样的。
它似乎可以工作,但我不知道代码是否正确...如果有什么不对,有人能纠正吗?