//+------------------------------------------------------------------+//| 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 |//+------------------------------------------------------------------+voidOnTick()
{
//---if(isNewBar())
{
PrintFormat("Новый бар: %s",TimeToString(TimeCurrent(),TIME_SECONDS));
}
}
//+------------------------------------------------------------------+//| Возвращает true, если появился новый бар для пары символ/период |//+------------------------------------------------------------------+bool isNewBar()
{
//--- в статической переменной будем помнить время открытия последнего бараstaticdatetime 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);
}
//--- дошли до этого места - значит бар не новый, вернем falsereturn(false);
}
//+------------------------------------------------------------------+
Можно ли торговать этим инструментом в понедельник? Хватит ли денег на открытие позиции? Какой размер убытка мы получим, если сработает Stop Loss? Как ограничить количество отложенных ордеров? Была ли выполнена торговая операция на этом баре или это было на предыдущем? Если торговый робот не может сделать подобные проверки, то любая прибыльная торговая система может превратиться в проигрышную. В этой статье показаны примеры проверок, которые пригодятся в любом эксперте.
intiMA(
string symbol, // имя символаENUM_TIMEFRAMES period, // периодint ma_period, // период усредненияint ma_shift, // смещение индикатора по горизонталиENUM_MA_METHOD ma_method, // тип сглаживанияENUM_APPLIED_PRICE applied_price // тип цены или handle
);
Alexさん、m_rates[1].lowとm_rates[0].closeを比較する方法を教えて下さい。
m_rates[1].low=m_rates[0].close は正しいでしょうか、また一般的に m_rates[0].close はまだ閉じていないバーの最終価格なのでしょうか?
また、一般的に、インジケータを使用せずに最後のバーを処理する正しい方法は何でしょうか?(CopyRates、CopyHigh)。
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などを使うべきと正しく書かれていますね。
ヘルプやコードベースに例が掲載されています。
コンパイル時に「行の 型変換によりデータが失われる可能 性がある」というメッセージが表示される
で、Expert Advisorで関数を使用すると、テスターで動作しなくなります。理由を教えてください。コードは記事から引用しています。https://www.mql5.com/ru/articles/22
コンパイル時に「行の 型変換によりデータが失われる可能 性がある」というメッセージが表示される
で、Expert Advisorで関数を使用すると、テスターで動作しなくなります。理由を教えてください。コードは記事から引用しています。https://www.mql5.com/ru/articles/22
面白いですね、でも私も似たようなの持ってます。double配列に double データを充填して います。 この行でも同じ警告が出ます。
面白いですね、でも私も似たようなことがあります、double 配列にdouble データを入れるのですが、この行で同じ警告が出ます。
変換はすでに試しましたが、マスクハンドルを(int)で変換すると、明示的な変換が行われますが、もちろん私には合いません :-)。
間違っている 情報が 必要だ
ありがとうございます。