Domande da un "manichino" - pagina 44

 

Alex, come posso confrontare m_rates[1].low con m_rates[0].close?

m_rates[1].low=m_rates[0].close sarà corretto e in generale m_rates[0].close è l'ultimo prezzo della barra che non è ancora chiusa?

e in generale, qual è il modo corretto di trattare l'ultima barra senza usare indicatori?(CopyRates, CopyHigh)

 
Makser:

Alex, come posso confrontare m_rates[1].low con m_rates[0].close?

m_rates[1].low=m_rates[0].close sarà corretto e in generale m_rates[0].close è l'ultimo prezzo della barra che non è ancora chiusa?

e in generale, qual è il modo corretto di trattare l'ultima barra senza usare indicatori? (CopyRates, CopyHigh)

hai scritto correttamente che dovresti usare CopyRates o CopyHigh/Low/Close, ecc. per lavorare con i dati di prezzo al di fuori degli indicatori.

Potete trovare degli esempi nell'aiuto o nel codice base.

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

Durante la compilazione del codice, appare un messaggio: possibile perdita di dati a causa della conversione di tipo sulla linea

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

e quando si usa la funzione nell'Expert Advisor, smette di funzionare nel tester, per favore ditemi la ragione, il codice è preso dall'articolo 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:

Durante la compilazione del codice, appare un messaggio: possibile perdita di dati a causa della conversione di tipo sulla linea

e quando si usa la funzione nell'Expert Advisor, smette di funzionare nel tester, per favore ditemi la ragione, il codice è preso dall'articolohttps://www.mql5.com/ru/articles/22

Non sono sicuro del tester. A proposito di "... tipo conversione":
   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
 

Interessante, ma anch'io ne ho uno simile.Riempire una matrice doppia con dati doppi. Dà lo stesso avviso su questa linea.

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

Interessante, ma anch'io ne ho uno simile: riempire una matrice doppia con dati doppi, dà lo stesso avviso su questa linea.

Forse è l'interpretazione ambigua delle costanti (0,0,13). Il CopyBuffer ha tre varianti di chiamata. Provate a sostituire le variabili del tipo necessario come parametri o usate la conversione esplicita del tipo per le costanti.
 
Grazie, lo proverò. Ho già provato la conversione, la conversione esplicita passa, se traduco un handle di maschera con (int), ma questo non mi soddisfa ovviamente :-)
 
Karlson:
Grazie, farò un tentativo. Ho già provato la conversione, la conversione esplicita passa, se traduco un handle di maschera tramite (int), ma questo non mi soddisfa ovviamente :-)
Aspetta un attimo. Qual è il tipo di maniglia?
 

Ho sbagliato, ho bisogno di un 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
   );

Grazie.

 
Anch'io ho qualche domanda. Dove sono i moduli del segnale di crossover della media mobile? Dove sono i segnali di alligatora? Un'altra cosa. Ogni indicatore ha diversi tipi di segnali. Come fare in modo che il MACD accetti solo i segnali di attraversamento dello zero?