新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1939

 
Valeriy Yastremskiy #:
如果iTime !=OldTime,则出现新的条形图,并且OldTime =iTime在零移/条形图上。

OldTime 中应该写什么值?O_o

箭头本身是在零条打开的那一刻画出来的。

我提出了这个条件。

 if(iTime(NULL,0,0)!=iTime(NULL,0,1))
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
      }

它不能正常工作--即使在测试器中,日志中也有很多警报。

if(iTime(NULL,0,1)!=iTime(NULL,0,0))
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
      }

我还收到一堆警报--我不知道怎么写这个东西((()

 
DanilaMactep #:

OldTime 中应该写什么值?O_o

箭头本身是在零条打开的那一刻画出来的。

我提出了这个条件。

它不能正常工作--即使在测试器中,日志中也有很多警报。

我还收到一堆警报--我不明白怎么写这个东西((()

 
static datetime OldTime=0;
if(iTime(NULL,0,0)!=OldTime)
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol()); OldTime=iTime(NULL,0,0);
      }

因此,当你启动时,你也会得到一个警报。当一个新的条形图出现时,iTime(NULL,0,0)将被改变,一旦没有相等,就会出现相等,if将为假

你也可以这样做。

static bool FlagNewBar=false;
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }

或者我们可以在任何时间框架上得到一个新的条形图。

bool FlagNewBarF(int prd, datetime &ArgBarTime,bool &FlagNbar)
  {
   FlagNbar=false;
   if(ArgBarTime!=iTime(NULL,prd,0))
     {
      ArgBarTime=iTime(NULL,prd,0);
      FlagNbar=true;
     }

   return(FlagNbar);
  }

调用情况如下

 if(FlagNewBarF(1, BarTime1,FlagNewBar1))
     {
      Alert("FlagNbar1 ",FlagNewBar1,"BarTime1 ",TimeToStr(BarTime1,TIME_DATE|TIME_SECONDS));
      
     }

   if(FlagNewBarF(5, BarTime5,FlagNewBar5))
     {
      Alert("FlagNbar5 ",FlagNewBar5,"BarTime5 ",TimeToStr(BarTime5,TIME_DATE|TIME_SECONDS));
     
     }
 
Valeriy Yastremskiy #:

这样,在加载时也会有一个提醒。当一个新的条形图出现时,iTime(NULL,0,0)将被改变,一旦没有相等,就会出现相等,if将为假

非常感谢你的帮助--我把它拧上了--它在编译时发出了一个警报--让我们看看接下来会发生什么:--)
 

"新条 "是邪恶的,在这个事件中,你可以从 "最后一条 "指标即newbar-1获得数据。

如果你在一台服务器上运行3个终端,并且根据交易频率,信号在一些终端中跳过,即在发送订单 集打印(例如买入信号)之前,指标打印值将显示前一个条形的值。

当然,你可以进行一些检查...

 
Valeriy Yastremskiy #:
一般的metaquotes文件夹是终端文件夹,它包含一般的终端文件夹,有终端日志、数据和测试器文件夹,它有自己的日志和文件文件夹。mcl文件夹包含EA、脚本、指标、窗口、子窗口的日志。
一切。卫星昨天我清洗了它。我今天会再次检查。清理了30GB。从大约10个终端和历史主要是在工具和日志上...
 
Artyom Trishkin:

在这个主题中,我想开始帮助那些真正想了解和学习新的MQL4的编程,并想轻松切换到MQL5的人--这些语言非常相似。

这个博客将是一个讨论问题的好地方,他们的解决方案的算法和任何其他有关MT编程的问题,以这种或那种方式。

我希望我们论坛的其他有经验的成员能加入讨论,支部会让大家感兴趣。

你好,没有人能帮助我解决关闭订单的功能,我正在尝试以下方法。

for (int i=1; i<=OrdersTotal(); i++)

{

如果(OrderSelect(i-1,SELECT_BY_POS)==true)

{

如果( Ask<= OrderOpenPrice())CloseBay()。

}

}

当Ask高于订单湾时,一切正常,只要Bid变成高于订单湾,订单就会被删除,当Ask低于开盘价时,应该被删除。请帮助我理解这一点,我将非常感谢你。真诚的亚历山大。

 
Alexandr Spravchikov #:

你好,没有人可以帮助我解决平仓功能,我是这样尝试的。

你试过这种方式吗?

void CloseBuy()
{
   for(int i= OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if((OrderSymbol()==_Symbol) && (OrderMagicNumber()==Magic) && (OrderType()==OP_BUY))
         {
            if( Ask<= OrderOpenPrice())
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Green))
            {
               Print("Error closing a buy order!"+  IntegerToString(_Period,0) +" Error code = " + IntegerToString(GetLastError(),0));
            }
         }
      }
   }
   return;
}
 

问候。你能告诉我如何对 "BTCUSDT "进行交易api查询,以显示不是以BTC而是以USDT的手数?

 

大家好!请给我一个忠告。


这个想法很简单。编写一个EA,当突破一个全局通道边界时,将打开一个头寸并关闭相反的头寸。该通道是由指标建立的。

我利用互联网指南做了一个变体。这个机器人在策略测试器中开仓/平仓,但如果你看一下图表,它根本不符合我的条件。我已经尝试了缓冲区内的所有变量,并检查了错误。我没有得到任何结果。


如果有人可以,请告诉我哪里出了问题,该往哪个方向挖。:3


我附上了一个文件,里面有缓冲区的变量,指标的演示,其初始变量,我的专家顾问的变体。

附加的文件:
9.png  14 kb
f2.png  26 kb
second.mq4  15 kb
 
E1Macho1 #:

大家好!请给我一个提示,好吗?

该走哪条路。:3

向使用调试器的方向挖掘