Çaydanlıktan gelen sorular - sayfa 200

 

Bu nedenle, bir barın açılış zamanını belirlemek için bir fonksiyon vardır (barın gelecekte olup olmadığı dahil)

 //+---------------------------------------------------------------------------+
//| Получение точного времени открытия                                        |
//|Input:                                                                     |
//|1) Время, которое необходимо округлить до ближайшего времени открытия бара |
//|2) Переменная для вывода результата                                        |
//|3) Период ТФ                                                               |
//|4) Отклонение влево-вправо                                                 |
//|Возврат: количество элементов(1), 0 если не скопировано, (-1) если ошибка  |
//+---------------------------------------------------------------------------+
int GetSingleBarOpenTime( datetime Time, datetime &Output, ENUM_TIMEFRAMES nPeriod, int Shift= 0 ) export
  {
   datetime OpenTime[ 1 ];
   int Count= 0 ;
// если бар существует то используем стандартную процедуру поиска времени открытия
   if (Time<= TimeCurrent () && Shift== 0 )
     {
      Count= CopyTime ( Symbol (),nPeriod,Time, 1 ,OpenTime);
       if (Count== 0 )
        {
         Print ( "GetCorrectOpenTime CopyTime elements=0" );
         return ( 0 );
        }
       else if (Count< 0 )
        {
         Print ( "GetCorrectOpenTime error " +( string ) GetLastError ());
         return (Count);
        }
       else
        {
         Output=OpenTime[ 0 ];
         return (Count);
        }
     }
//если бар находится в будущем то используем следующую процедуру
   else
     {
       MqlDateTime sTime;
       // NumOfUnits - количество стандартных единиц
       int NumOfUnits= 0 ; 
       int ToRnd;
       TimeToStruct (Time,sTime);
       //Единица измерения(1-минута, 2 - час, 3 - день, 4 - неделя(но используются дни), 5 - месяц)
       short Unit= 0 ;
       //в зависимости от ТФ инициализируются параметры
       switch (nPeriod)
        {
         case PERIOD_M1 :   {Unit= 1 ;NumOfUnits= 1 ; break ;}
         case PERIOD_M2 :   {Unit= 1 ;NumOfUnits= 2 ; break ;}
         case PERIOD_M3 :   {Unit= 1 ;NumOfUnits= 3 ; break ;}
         case PERIOD_M4 :   {Unit= 1 ;NumOfUnits= 4 ; break ;}
         case PERIOD_M5 :   {Unit= 1 ;NumOfUnits= 5 ; break ;}
         case PERIOD_M6 :   {Unit= 1 ;NumOfUnits= 6 ; break ;}
         case PERIOD_M10 :  {Unit= 1 ;NumOfUnits= 10 ; break ;}
         case PERIOD_M12 :  {Unit= 1 ;NumOfUnits= 12 ; break ;}
         case PERIOD_M15 :  {Unit= 1 ;NumOfUnits= 15 ; break ;}
         case PERIOD_M20 :  {Unit= 1 ;NumOfUnits= 20 ; break ;}
         case PERIOD_M30 :  {Unit= 1 ;NumOfUnits= 30 ; break ;}
         case PERIOD_H1 :   {Unit= 2 ;NumOfUnits= 1 ; break ;}
         case PERIOD_H2 :   {Unit= 2 ;NumOfUnits= 2 ; break ;}
         case PERIOD_H3 :   {Unit= 2 ;NumOfUnits= 3 ; break ;}
         case PERIOD_H4 :   {Unit= 2 ;NumOfUnits= 4 ; break ;}
         case PERIOD_H6 :   {Unit= 2 ;NumOfUnits= 6 ; break ;}
         case PERIOD_H8 :   {Unit= 2 ;NumOfUnits= 8 ; break ;}
         case PERIOD_H12 :  {Unit= 2 ;NumOfUnits= 12 ; break ;}
         case PERIOD_D1 :   {Unit= 3 ;NumOfUnits= 1 ; break ;}
         case PERIOD_W1 :   {Unit= 4 ;NumOfUnits= 7 ; break ;}
         case PERIOD_MN1 :  {Unit= 5 ;NumOfUnits= 1 ; break ;}
         default :         {Print( "Period is unknown" ); break ;}
        }
       // Если ТФ - минуты, то
       if (Unit== 1 )
        {
         sTime.sec= 0 ;
         //Остаток от деления
         ToRnd=( int ) fmod (sTime.min,NumOfUnits);
         Time= StructToTime (sTime);
         // Округление до ближайшего времени открытия(пример: если сейчас 14:25, и тф 2min, то ближайщее время открытия бара - 14:24)
         Time-=(ToRnd* 60 );
         Time+=(NumOfUnits*Shift* 60 );

        }
       else if (Unit== 2 )
        {
         sTime.sec= 0 ;
         sTime.min= 0 ;
         ToRnd=( int ) fmod (sTime.hour,NumOfUnits);
         Time= StructToTime (sTime);
         Time-=(ToRnd* 60 * 60 );
         Time+=(NumOfUnits*Shift* 60 * 60 );
        }
       else if (Unit== 3 )
        {
         sTime.hour= 0 ;
         sTime.min= 0 ;
         sTime.sec= 0 ;
         ToRnd=( int ) fmod (sTime.day,NumOfUnits);
         Time= StructToTime (sTime);
         int hds;
         hds=sTime.day_of_week;
         if (hds== 0 ) hds= 7 ;
         hds= floor ((hds+Shift)/ 7 )* 2 ;
         int ti=Shift+hds;
         while (hds> 7 )
         {
            hds=( floor (hds/ 7 ))* 2 ;
            ti+=hds;
         }
         Print (ti);
         Time-=(ToRnd* 60 * 60 * 24 );
         Time+=(NumOfUnits*Shift* 60 * 60 * 24 );
        }
       else if (Unit== 4 )
        {
         sTime.hour= 0 ;
         sTime.min= 0 ;
         sTime.sec= 0 ;
         ToRnd=( int ) fmod (sTime.day,NumOfUnits);
         Time= StructToTime (sTime);
         Time-=(ToRnd* 60 * 60 * 24 );
         Time+=(NumOfUnits*Shift* 60 * 60 * 24 );
        }
       else if (Unit== 5 )
        {
         sTime.sec= 0 ;
         sTime.min= 0 ;
         sTime.hour= 0 ;
         sTime.day= 1 ;
         sTime.mon=sTime.mon-( int ) fmod (sTime.mon,NumOfUnits)+(NumOfUnits*Shift);
         while (sTime.mon< 1 )
           {
            sTime.year--;
            sTime.mon= 12 +sTime.mon;
           }
         while (sTime.mon> 12 )
           {
            sTime.year++;
            sTime.mon=sTime.mon- 12 ;
           }
         if (sTime.sec< 0 )
             Print ( " GetSingleBarOpenTime seconds error" );
         if (sTime.min< 0 )
             Print ( " GetSingleBarOpenTime minutes error" );
         if (sTime.hour< 0 )
             Print ( " GetSingleBarOpenTime hours error" );
         if (sTime.day< 1 )
             Print ( "GetSingleBarOpenTime days error" );
         if (sTime.mon< 0 )
             Print ( " GetSingleBarOpenTime months error" );
         if (sTime.year< 1970 )
             Print ( "Year < 1970" );
         Time= StructToTime (sTime);
        }
      Output=Time;
       return ( 1 );
     }
  }

Shift ile ilgili sorun - şimdi kaydırma çubuk sayısına göre değil, gün sayısına göredir (D1'de geri kalanı önemli değil - çözülmesi gereken ana şey D1'dir). Genel olarak, oturuyorum, düşünüyorum, kafamda bir şey var gibi görünüyor, toplamda Gün sayısını vardiya (hafta içi gün sayısı) ve haftanın mevcut günü ile öğrenebilirsiniz, ancak ben hangi formülün kullanılacağını belirleyemez.

Not: Unit=3'te bunu yapmayı deneyin (şimdiye kadar başarısız oldu)

Bana yardım et lütfen.

 
victorva : ticaret isteği 10016 hatası veriyor ("yanlış duraklar"). Ne hakkında yanılıyorlar?

1. Kodu doğru şekilde yapıştırın (Ctrl+Alt+M).

 void OnTick ()
  {
   MqlTick last_tick={ 0 };                       // предопределенная структура для получения текущих данных рынка
   SymbolInfoTick ( "EURUSD" ,last_tick);           // инструмент: указывать обязательно
   double Bid = last_tick.bid;                         // Текущая цена Bid
   MqlTradeRequest request={ 0 };                 
   MqlTradeResult result={ 0 };                 
   request.action= TRADE_ACTION_DEAL ;           
   request.magic= 555 ;                          
   request.symbol= "EURUSD" ;
   request.volume= 1.0 ;                  
   request.deviation= 0 ;                 
   request.type= ORDER_TYPE_BUY ;                        
   request.sl=Bid- 300 * _Point ;                         // Уровень Stop Loss ордера
   request.tp=Bid+ 1000 * _Point ;                     // Уровень Take Profit ордера
   OrderSend (request,result);
   Comment ( "retcode = " ,result.retcode);
  }
2. İsteğinizin gerekli request.price alanını içermediği gerçeğiyle başlayalım (böyle bir alanın olmamasına yalnızca Piyasa Yürütme modu için izin verilir). Bu nedenle, request.price == 0 olduğu ortaya çıkıyor.
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
victorva :

ticaret isteği 10016 hatası veriyor ("yanlış duraklar"). Ne hakkında yanılıyorlar?


request.sl=Teklif-300*_Point; // Zararı Durdur emir seviyesi
request.tp=Teklif+1000*_Puan; // Sipariş Kar Al seviyesi

Normalleşmedikleri için. (kodu yapıştırmak için SRC düğmesini kullanın).

  request.sl= NormalizeDouble (Bid- 300 * _Point , _Digits );   // Уровень Stop Loss ордера
  request.tp= NormalizeDouble (Bid+ 1000 * _Point , _Digits );   // Уровень Take Profit ордера
 

Otomatik bağlantı ekleme işlevinin kontrol edilmesi

1. Вставляйте код правильно (Ctrl+Alt+M).

 
Yedelkin :

1. Kodu doğru şekilde yapıştırın (Ctrl+Alt+M).

2. İsteğinizin gerekli request.price alanını içermediği gerçeğiyle başlayalım (böyle bir alanın olmamasına yalnızca Piyasa Yürütme modu için izin verilir). Bu nedenle, request.price == 0 olduğu ortaya çıkıyor.

Teşekkür ederim. Fiyatı belirledim ve işe yaradı.

 

Lütfen bana yardım edin, bir şeyi anlayamıyorum.

|9|8|7|6|5|4|3|2|1|0| <--zaman serisi Oranları

CopyRates(Symbol(),Period(),Time,2,Result);

örneğin 3 numaralı mumun zamanını belirttim. Bu durumda 3 ve 4 numaralı mumların oranları bana iade edilecektir. Ve 3 No'lu mumun açılış saatine sahip 3 No'lu ve 2 No'lu mumların nasıl elde edileceği. negatif miktar sindirmez

Bir indeks bulma fikrim vardı, ama bunun için mevcut olandan başlayarak tüm elemanları kopyalamanız gerekiyor, ama kahretsin, 10 yıl önce M1 ve bir çubuğum varsa, o zaman dizi bile çok büyük.

Şimdiden teşekkürler

 

Tünaydın!

MetaTrader 5 Strategy Tester programının (MetaTester 5 Agents Managers build 712) "Hizmetler" sekmesinde trafiğin hangi birimlerde ölçüldüğünü söyleyebilir misiniz? Kilobayt|megabayt mı yoksa kiloBITS|megabit mi?

Teşekkür ederim.

 

Beyler, veri tabanında başka para birimlerinin grafiklerini ana grafikte bir gösterge veya nesneler şeklinde görüntülemenize izin veren bir hindi olup olmadığını söyleyin?

ps MT4 için kendim yazdım ama burada zaten hazır olabilir..

 
storm :

Beyler, veri tabanında başka para birimlerinin grafiklerini ana grafikte bir gösterge veya nesneler şeklinde görüntülemenize izin veren bir hindi olup olmadığını söyleyin?

ps MT4 için kendim yazdım ama burada zaten hazır olabilir..

Buldum, zaten yazmışlar, s ****, kendin yazmana bile gerek yok. https://www.mql5.com/ru/code/1055
MultiCurrency
MultiCurrency
  • oylar: 9
  • 2012.09.14
  • Nikolay Kositsin
  • www.mql5.com
Индикатор MultiCurrency позволяет анализировать одновременно до восьми графиков валют.
 
storm :
Buldum, zaten yazmışlar, s ****, kendin yazmana bile gerek yok. https://www.mql5.com/ru/code/1055
İçindeki tersine çevirme yazar tarafından tasarlandı, ancak uygulanmadı, onu ince ayar yapmak zorunda kaldım ve bu yüzden yazar!