Çaydanlıktan gelen sorular - sayfa 44

 

Alex, söyle bana belirli bir fiyatı nasıl karşılaştırabilirim, örneğin m_rates[1].low ile m_rates[0].close

m_rates[1].low=m_rates[0].close doğru olur mu ve genel olarak m_rates[0].close henüz kapatılmamış bir çubuğun son fiyatı mı?

ve genel olarak, göstergeleri kullanmadan en son çubuklarla "kurmak" için onu kullanmanın en iyi yolu nedir? ( CopyRates , CopyHigh )

 
Makser :

Alex, söyle bana belirli bir fiyatı nasıl karşılaştırabilirim, örneğin m_rates[1].low ile m_rates[0].close

m_rates[1].low=m_rates[0].close doğru olur mu ve genel olarak m_rates[0].close henüz kapatılmamış bir çubuğun son fiyatı mı?

ve genel olarak, göstergeleri kullanmadan en son çubuklarla "kurmak" için onu kullanmanın en iyi yolu nedir? (CopyRates, CopyHigh)

Göstergelerin dışındaki fiyat verileriyle çalışmak için CopyRates veya CopyHigh/Low/Close vb. kullanmanız gerektiğini doğru yazmışsınız.

örnekler yardımda veya kod tabanında bulunabilir.

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

Kodu derlerken bir mesaj belirir: hattaki tür dönüşümü nedeniyle olası veri kaybı

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

ve EA'daki işlevi kullanırken, test cihazında çalışmayı durdurur, lütfen nedenini söyleyin, kod https://www.mql5.com/ru/articles/22 makalesinden alınmıştır.

 //+------------------------------------------------------------------+
//|                                                 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 :

Kodu derlerken bir mesaj belirir: satırdaki tür dönüşümü nedeniyle olası veri kaybı

ve uzmanda işlevi kullanırken, test cihazında çalışmayı durdurur, lütfen nedenini söyleyin, kod https://www.mql5.com/ru/articles/22 makalesinden alınmıştır.

Size Tester hakkında bir şey söyleyemem. Ve "... tür dönüştürme" hakkında:
   datetime lastbar_time=(datetime) SeriesInfoInteger ( Symbol (), Period (), SERIES_LASTBAR_DATE );
 

İlginç, bende de buna benzer bir şey var. Double bir diziyi double data ile doldurmak Bu satırda aynı uyarıyı verir.

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

İlginç ama benim de bir benzeri var.Double diziyi double data ile doldurmak.O satırda aynı uyarıyı veriyor.

Belki de mesele, sabitlerin (0,0,13) yorumlanmasının belirsizliğindedir. CopyBuffer'ın üç arama seçeneği vardır. İstenen türdeki değişkenleri parametre olarak değiştirmeyi deneyin veya sabitler için açık tür dönüştürmeyi kullanın.
 
Teşekkürler, deneyeceğim.Dönüştürmeyi zaten denedim.Fare tutamağını (int)'e çevirirsem açık dönüştürme geçer.
 
Karlson :
Teşekkürler, deneyeceğim.Dönüştürmeyi zaten denedim.Fare tutamağını (int)'e çevirirsem açık dönüştürme geçer.
Bir saniye bekle. Kolunuz ne tür?
 

Hatayı anladım. int gerekir.

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

Sayesinde.

 
Benim de birkaç sorum var. Hareketli ortalama geçiş sinyallerinin modülleri nerede? Timsah sinyalleri nerede? Ve ilerisi. Her göstergenin birkaç tür sinyali vardır. Örneğin, MACD'nin yalnızca sıfır geçiş sinyallerini kabul etmesi için nasıl yapılır?