//+------------------------------------------------------------------+//| Test.mq5 |//| Copyright 2022, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2022, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"//ВХОДНОЙ ПАРАМЕТРinputushort Constanta=50; //Константа//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
//+------------------------------------------------------------------+//| Tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---double open_0=iOpen(_Symbol,PERIOD_CURRENT,0);
if(open_0-SymbolInfoDouble(_Symbol,SYMBOL_BID)>Constanta*_Point)
Print("Цена прошла вниз расстояние больше чем Константа, поэтому нужно открыть позицию SELL!");
if(SymbolInfoDouble(_Symbol,SYMBOL_BID)-open_0>Constanta*_Point)
Print("Цена прошла вверх расстояние больше чем Константа, поэтому нужно открыть позицию BUY!");
Sleep(20000);
}
//+------------------------------------------------------------------+
MqlTick mqlTick[], symbTick; // объявили переменные
SymbolInfoTick(_Symbol, symbTick); // это последний тик
CopyTicksRange(_Symbol, mqlTick, COPY_TICKS_ALL, symbTick.time_msc, symbTick.time_msc-20000); // Получили все тики за последние 20 секунд
double delta = NormalizeDouble(mqlTick[ArraySize(mqlTick)-1].bid-mqlTick[0].bid, _Digits); // получили разницу крайних значений массива
算法必须精确,并了解其应用条件。否则就无法编写代码。代码是一种行动算法的实现,不可能不准确。
在这里,最好先自己编写,也许错误会得到纠正。
你知道等号的符号,多就是少。
你好,瓦列里!我完全同意您的观点。要写出正确的代码,您需要一个准确的开仓条件。这套代码也行得通:
但问题是,它是否应该按照维塔利的意图运行?老实说,我不太明白为什么每 20 秒(甚至每 10 秒、5 秒或 1 秒)就要检查一次价格差异。这对确定价格进一步变动的方向有什么帮助?
弗拉基米尔
你好,瓦列里!我完全同意您的观点。要写出正确的代码,您需要一个准确的开仓条件。这段代码也很有效:
但问题是,它是否应该按照维塔利的意图运行?老实说,我不太明白为什么每 20 秒(甚至每 10 秒、5 秒或 1 秒)就要检查一次价格差异。这对确定价格进一步波动的方向有什么作用?
弗拉基米尔
你好,瓦列里!我完全同意您的观点。要写出正确的代码,您需要一个准确的开仓条件。这套代码也行得通:
但问题是,它是否应该按照维塔利的意图运行?老实说,我不太明白为什么每 20 秒(甚至每 10 秒、5 秒或 1 秒)就要检查一次价格差异。这对确定价格进一步波动的方向有什么作用?
弗拉基米尔
您对任务的描述有误!不是 "每 20 秒一次",而是每秒钟都用一段时间前的指标进行检查。至于 "为什么"--这不是讨论的问题。(20 秒只是一个例子)。
这就像移动平均线,第一根蜡烛与第二根蜡烛进行比较。只是我必须计算当前(零)分钟蜡烛图内的所有内容。毕竟,20 秒可以流向第一根蜡烛)。
你对任务的描述不正确!不是 "每 20 秒一次",而是每秒钟都要检查一段时间前的值。至于 "为什么"--这不是讨论的问题。(20 秒只是一个例子)。
是的,我错了,我没有完全理解您想做什么/检查什么。
再见,弗拉基米尔。
但是,如果与你的常数相等的距离不是在任何偶数秒内走完的,而是比如在 10.964 秒或 11.283 秒内走完的,那么会发生什么呢?是否满足条件?
弗拉基米尔
但是,如果与你的常数相等的距离不是在任何偶数秒内走完的,而是在例如 10.964 秒或 11.283 秒内走完的,那么会发生什么呢?是否满足条件?
弗拉基米尔
在 "与常数比较 "一词中,我指的不是相等,而是 "多""少"。
现在一切都清楚了。
再见,弗拉基米尔。
现在一切都说得通了。
敬上,弗拉基米尔
我真不想再看这些废话了......毕竟,代码只有四行,而讨论却有三页之长。
20,000 毫秒就是 20 秒。
接下来,在 delta 变量的大小上设置一个条件:更多/更小、向左/向右或向北/向玉....
现在一切都说得通了。
敬上,弗拉基米尔
现在一切都说得通了。
敬礼,弗拉基米尔
我已经更新了那里的信息。请重新阅读。
在 "与常数比较 "一词中,我指的不是相等,而是 "多""少"。如果差额是正数,我们就用一个带 "+"号的常数来比较;如果差额是负数,我们就用一个带"-"号的常数来比较。在第一种情况下,如果超出常数,我们就购买。在第二种情况下,如果差值较小,则出售。
现在一切都清楚了。
弗拉基米尔
附注: 我唯一能建议的是,为了感兴趣,您可以看看我在这里的 留言,然后再看看留言之后的价格走势。它回滚到了 0.98000,或者更准确地说是 0.9806,然后再次上涨,如价格图表截图上的红色箭头所示。本建议仅供您参考。