double a1,a2,a11,a22;// значения первого и второго пика bool fl1 = false; // флаги наличия 1-го и 2-го пика для их сравнения для входа в рынок по 3-ему варианту АОbool fl2 = false; //bool signal_buy = false;
bool signal_sell = false;
double AO1 = iAO(Symbol(), signal_period, 1);
double AO2 = iAO(Symbol(), signal_period, 2);
double AO3 = iAO(Symbol(), signal_period, 3);
if (AO3 < 0 && AO3 > AO2 && AO2<0 && AO2 < AO1 && AO1 < 0 && fl1==false && fl2==false) {a1 = AO22; fl1=true; Print ("образование первого пика",DoubleToStr(a1,6) );}
// определение наличия 1-го пика, флаг установлен
Print ("первый пик = ", DoubleToStr(a1, 6) );
// в след строке ошибка - получается, что после идентификации 1-го пика - эти же условия выполняются и для 2-го, а этого быть не должно... if (AO3<0 && AO3>AO2 && AO2<0 && AO2<AO1 && AO1<0 && fl1==true && fl2==false) // определение наличия 2-го пика, флаги установлены
{
a11 = AO2; fl1=true; fl2=true; Print ("образование второго пика", DoubleToStr (a11,6));
if (a1<a11 && High [0] > High [1])
{ signal_buy = true; a1=a11; fl1=true;fl2=false;} // активируем бай и запоминаем параметры как первого пика else { a1=a11; fl1=true;fl2=false;} // просто запоминаем новый минимум - первый пик
}
if (AO2>0 || High [0] < High [1]) {fl1=false; fl2=false;} // если какой - либо столбец гистограммы пересекает 0-ю линию между сигналами 2-а пика// то сигнал считается недействительным. Cбрасываем флагиif (Mas_Tip[0]!=0 && signal_buy == true ) return(10); // при доливке и сигнале к покупке открываемся с рынка
signal_buy = false; // сбрасываем сигнал к покупке
在这些名称下保存,新的图表以同样的方式打开,以旧的方式。在模板文件夹里有一个文件strategtester.htm,我不知道该怎么处理这个文件。
这意味着有什么地方做错了,也许MT没有被重新启动。经过测试,应该可以使用。
你好,你能帮我解决这个问题吗? 我在论坛上没有找到。 事情是这样的,我在Excel中打开一个文件后,数据被表示为日期,如果我改变日期格式,就会得到错误的数据。 我试过不同类型的日期,但都是一样的。 我试着在加载时指定数据类型(Excel会问),但数字似乎被表示为一个带点的数字(例如1.5624),而Excel不想对它们做任何处理。
这个问题与论坛的主题无关,因为你需要去参加一个计算机知识课程,学习使用Word和Excel,或者找一本关于这些程序的书来学习。
在你的具体问题上,选择必要的单元格,将光标移到这些单元格上,点击鼠标右键,然后 "格式化单元格......",选择所需的数据显示格式。
伙计们,告诉我一个提示...
你必须比较直方图的第一个峰和第二个峰,如果第二个峰的abs值较小,那么在它们都低于零的情况下打开购买,然后将第二个峰的值分配给第一个峰,如果在第一个峰形成后,直方图列从负区域变成正区域,那么取消第一个峰的存在,正如我所做的--即根据条件我们重置两个标志。
事实证明,当我确定第一个峰的参数时,第二个峰也满足同样的条件(同样的参数)。 而这是一个错误... 我想以某种方式 "分离 "这些事实(有其独特的参数)形成的数字1和2,我给我的代码和数字的海湾...
任何可以帮助创建一个交易机器人的家伙,只是有一个想法,并需要帮助它的实现,我自己在编程不强,你甚至可以得到的钱,但合理的!这是不可能的。
任何可以帮助创建一个交易机器人的家伙,只是有一个想法,并需要帮助它的实现,我自己在编程不强,你甚至可以得到的钱,但合理的!这是不可能的。
我无法理解。
用俄语书写,但看不懂手册部分https://docs.mql4.com/ru/basis/variables/formal
引用。
通过引用的参数 只能在单个模块内 传递,....... (我们说的是哪个模块?)
数组也可以通过引用来传递, 所有的变化都会反映在原来的数组中 。 (改变数组中的元素?)
我开了一个挂单-
Ticket = OrderSend(...,OP_SELLSTOP,...,TP,SL)。
如果(Ticket>0)
{一切正常,等待挂单被执行,如果它被执行,则一切正常}。
否则
{等待下一个柱状体关闭,如果订单没有打开,就用OrderDelite()强行关闭;}。
代码帮助
"等待未决订单的执行"
"等待下一个条形图关闭,如果订单没有打开,用OrderDelite()强制关闭它;"
如何正确地用iLowest函数 来代替它?
minimum=Low[iLowest (NULL, 0, MODE_LOW,KPeriod, 0)] - 对吗?
问题???
{等待下一个柱状体关闭,如果订单没有打开,就用OrderDelite()强制关闭它;}。
代码帮助
"等待未决订单的执行"
"等待下一个条形图close,如果订单没有打开,用OrderDelite()强行关闭;"
你应该了解一点逻辑和订单工作的本质。
为了执行一个待定的处理或等待一些事件,你必须记住系统的当前状态,并将其与预期状态进行比较。
在你的案例中,你有一个事件--一个新栏 已被打开,但订单没有触发。
要做到这一点,你可以这样走。
- 记住票据参数,以及你打开的酒吧的时间。如果有一个新的酒吧,那么你可以立即抓住以前保存的票据,并检查它是否是市场票据或初始待定票据。如果它是待定的,就删除它。
这个变体不打算用于真正的交易;它只用于测试。
----------
因此,你需要Time[]、OrderSelect()、OrderType()、OrderCloseTime()。