Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 605

 
Alexander Antoshkin :

merhaba Vladimir

Görünüşe göre soruyu yanlış formüle ettim, anlamadın ..

Bir alt pencereye ihtiyacım yok, standart bir tik yerleştirildiği için göstergeyi fiyat tablosuna koymam gerekiyor

Bunu örnek alıyorum ve anlamaya çalışıyorum.

Ve sonuç olarak, çizelgede kurulu olan göstergenin kendi numarasına sahip olmasını istiyorum, böylece gerekli kopya sayısını çevirmek için çizelgede oluşturulan "Ekle" düğmesini kullanabilirsiniz .... ve ayrıca tarafından seçileni silebilirsiniz. çapraz düğme ........ o kadar çok başka fanteziler var ki henüz onlar hakkında yazmak istemiyorum))

Göstergenin ana grafik penceresine eklenmesi gerektiğinde :

alt_pencere

[içinde] Grafik alt pencere numarası. 0, ana grafik penceresi anlamına gelir . Yeni bir pencereye bir gösterge eklemek için parametre, mevcut son pencerenin indeksinden bir fazla, yani CHART_WINDOWS_TOTAL değerine eşit olmalıdır. Parametrenin değeri CHART_WINDOWS_TOTAL değerini aşarsa yeni bir pencere oluşturulmaz, gösterge eklenmez.

Bu aşamada Expert Advisor henüz oluşturulmadığı için OnInit()'e bir gösterge eklemek mümkün değildir. Ancak - OnTick() - işlevi, Uzman Danışmanın tam teşekküllü çalışmasının bir işaretidir.

 //+------------------------------------------------------------------+
//|                                                         0000.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

input int MA_Period= 21 ;
input int MA_Shift= 0 ;
input ENUM_MA_METHOD MA_Method= MODE_SMA ;
//--- variables
int MA_handle= INVALID_HANDLE ;
bool first_start= false ;
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit ()
  {
   Print ( __FUNCTION__ , ", first_start = " ,first_start);
   MA_handle= iCustom ( NULL , 0 , "Examples\\Custom Moving Average" ,MA_Period,MA_Shift,MA_Method, PRICE_CLOSE );
   if (MA_handle== INVALID_HANDLE )
       return ( INIT_FAILED );
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (!first_start)
     {
       if (AddIndicator()) //попробуем добавить индикатор на график 
         first_start= true ;
     }
  }
//+------------------------------------------------------------------+ 
//| Функция проверки и добавления индикатора на график               | 
//+------------------------------------------------------------------+ 
bool AddIndicator()
  {
//--- сбросим код ошибки 
   ResetLastError ();
//--- накладываем индикатор на график   
   int subwindow= 0 ;
   PrintFormat ( "Добавляем индикатор на окно %d графика" ,subwindow);
   if (! ChartIndicatorAdd ( 0 ,subwindow,MA_handle))
     {
       PrintFormat ( "Не удалось добавить индикатор  на окно %d графика. Код ошибки  %d" ,
                  subwindow, GetLastError ());
     }
   return ( true );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
AddIndicator() işlevini, başarısız bir gösterge ekleme girişiminde false döndürecek şekilde yeniden yazın.
 
Alexander Antoshkin :

merhaba Vladimir

Görünüşe göre soruyu yanlış formüle ettim, anlamadın ..

Bir alt pencereye ihtiyacım yok, standart bir tik yerleştirildiği için göstergeyi fiyat tablosuna koymam gerekiyor

Bunu örnek alıyorum ve anlamaya çalışıyorum.

Ve sonuç olarak, çizelgede kurulu olan göstergenin kendi numarasına sahip olmasını istiyorum, böylece gerekli kopya sayısını çevirmek için çizelgede oluşturulan "Ekle" düğmesini kullanabilirsiniz .... ve ayrıca tarafından seçileni silebilirsiniz. çapraz düğme ........ o kadar çok başka fanteziler var ki henüz onlar hakkında yazmak istemiyorum))

Göstergenin bir adı olabilir, sayıları seviyorsanız, sayı olmasına izin verin. Ancak, sayı bir sayı değil, metin olacaktır. Bir veya daha fazla sayıda herhangi bir gösterge numarası eklemenize izin verecek özel bir kontrol paneline mi ihtiyacınız var?
 
Söyle bana, lütfen, günün sıra numarasına ve aydaki haftaya göre nasıl filtre yapılacağını? Gün boyunca şunu yaptım:


bool TimeStart=false;

int hour=12;


//--Фильтр по ремени открытия бара внутри дня

if (TimeStart==true)

{      

      datetime  Open_timePos=iTime(_Symbol,0,0);

      MqlDateTime str1; 

      TimeToStruct(Open_timePos,str1);

      str1.hour=hour;

      str1.min=0;

      str1.sec=0;


      datetime start_time=StructToTime(str1);

      if (start_time>iTime(_Symbol,0,0))

      {

            BuyPrIMA=false;

            SellPrIMA=false;      

      

      } 

 

 

 
-Aleks- :
Söyle bana, lütfen, günün sıra numarasına ve aydaki haftaya göre nasıl filtre yapılacağını? Gün boyunca şunu yaptım:

int НомерДНЯвМесяце= TimeDay ( iTime ( _Symbol , 0 , 0 ));

int НомерДняНедели= TimeDayOfWeek ( iTime ( _Symbol , 0 , 0 )); int НомерНеделиВмесяце= NormalizeDouble (НомерДНЯвМесяце/ 7 , 0 );

 
new-rena :
Ayın haftasını soruyor
 
pako :
Ayın haftasını soruyor

Üç seçeneği de yaptım. Temel almak istediği plizi belirtiniz?

Bu?

 int НомерНеделиВмесяце= NormalizeDouble (НомерДНЯвМесяце/ 7 , 0 );
 
new-rena :
Üç seçeneği de yaptım. pliz'i belirtin

Bir ayda beş ila altı hafta var, bugün ayın dördüncü haftası

str.day ayın günü

str.day_of_week haftanın günü

 
new-rena :
Teşekkür ederim.
 
pako :
Bir ayda dört beş hafta var, bugün ayın dördüncü haftası
Anladım. yani, önceki ayın 29'unda (örneğin Pazartesi) ve içinde bulunulan ayın 31'inde (örneğin, ayrıca Pazartesi) bu nitelikteki haftaları hesaba katmak istiyor. Bir ayı aşkın süredir devam ediyor. Bu tür haftaları saymak mantıklı değil. Değilse, o zaman hafta bütün olmayacak. Hayır, mantıklı değil....
 
new-rena :

Üç seçeneği de yaptım. Temel almak istediği plizi belirtiniz?

Bu?

Bu işe yaramayacak
Neden: