来自一个 "傻瓜 "的问题 - 页 44

 

Alex,我如何将m_rates[1].low与m_rates[0].close进行比较?

m_rates[1].low=m_rates[0].close是否正确,一般来说,m_rates[0].close是尚未关闭的条形图的最后价格?

一般来说,在不使用指标的情况下,处理最后一栏的正确方法是什么?(CopyRates, CopyHigh)

 
Makser:

Alex,我如何将m_rates[1].low与m_rates[0].close进行比较?

m_rates[1].low=m_rates[0].close会不会是正确的,一般来说,m_rates[0].close是尚未关闭的条形图的最后价格?

一般来说,在不使用指标的情况下,处理最后一栏的正确方法是什么?(CopyRates, CopyHigh)

你正确地写道,你应该使用CopyRates 或CopyHigh/Low/Close,等等来处理指标以外的价格数据。

你可以在帮助中或代码库中找到例子。

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyRates - Документация по MQL5
 

在编译代码时,出现了一条信息: 由于 行上的 类型转换,可能会丢失数据

datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

当在专家顾问中使用该功能时,它在测试器中停止工作,请告诉我原因,代码取自文章https://www.mql5.com/ru/articles/22

//+------------------------------------------------------------------+
//|                                                 CheckLastBar.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(isNewBar())
     {
      PrintFormat("Новый бар: %s",TimeToString(TimeCurrent(),TIME_SECONDS));
     }
  }
//+------------------------------------------------------------------+
//| Возвращает true, если появился новый бар для пары символ/период  |
//+------------------------------------------------------------------+
bool isNewBar()
  {
//--- в статической переменной будем помнить время открытия последнего бара
   static datetime last_time=0;
//--- текущее время
   datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

//--- если это первый вызов функции
   if(last_time==0)
     {
      //--- установим время и выйдем 
      last_time=lastbar_time;
      return(false);
     }

//--- если время отличается
   if(last_time!=lastbar_time)
     {
      //--- запомним время и вернем true
      last_time=lastbar_time;
      return(true);
     }
//--- дошли до этого места - значит бар не новый, вернем false
   return(false);
  }
//+------------------------------------------------------------------+
Ограничения и проверки в экспертах
Ограничения и проверки в экспертах
  • 2010.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
Можно ли торговать этим инструментом в понедельник? Хватит ли денег на открытие позиции? Какой размер убытка мы получим, если сработает Stop Loss? Как ограничить количество отложенных ордеров? Была ли выполнена торговая операция на этом баре или это было на предыдущем? Если торговый робот не может сделать подобные проверки, то любая прибыльная торговая система может превратиться в проигрышную. В этой статье показаны примеры проверок, которые пригодятся в любом эксперте.
 
Europa:

在编译代码时,出现了一条信息: 由于 行上的 类型转换,可能会丢失数据

当在专家顾问中使用该功能时,它在测试器中停止工作,请告诉我原因,代码取自文章https://www.mql5.com/ru/articles/22

我不确定测试器的情况。关于"...类型转换"。
   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
 

有趣的是,但我也有一个类似的。用双倍 数据填充一个 双倍数组。 在这一行它给出了同样的警告。

CopyBuffer(ma_handle,0,0,13,ma);
 
Karlson:

有趣的是,我也有一个类似的问题。用双倍 数据填充一个双倍 数组。它在这一行给出了同样的警告。

也许是对常数(0,0,13)的含糊解释。CopyBuffer 有三种不同的调用方式。尽量用所需类型的变量代替参数,或对常量使用明确的类型转换。
 
谢谢,我会试试的。 我已经试过转换了,显式转换通过了,如果我用(int)翻译一个掩码句柄,但这当然不适合我:-)
 
Karlson:
谢谢,我会试一试的。 我已经试过了转换,显式转换通过了,如果我通过(int)翻译一个掩码句柄,但这当然不适合我:-)
等一下。你的手柄的类型是什么?
 

弄错了,需要 一个int。

int  iMA(
   string               symbol,            // имя символа
   ENUM_TIMEFRAMES      period,            // период
   int                  ma_period,         // период усреднения
   int                  ma_shift,          // смещение индикатора по горизонтали
   ENUM_MA_METHOD       ma_method,         // тип сглаживания
   ENUM_APPLIED_PRICE   applied_price      // тип цены или handle
   );

谢谢你。

 
我也有几个问题。移动平均线交叉信号模块在哪里?鳄鱼 的信号在哪里?还有一件事。每个指标都有几种类型的信号。如何使MACD只接受零交叉信号?