MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1465

 
Dzmitry Zaitsau :
Tünaydın! Lütfen bana parantez içinde ChartGetInteger'ın önünde neden (int) olduğunu söyleyin

int çubuklar=(int)ChartGetInteger(0, CHART_VISIBLE_BARS );

 ChartGetInteger возвращает значение формата long или bool . Через (int) происходит перевод ChartGetInteger в значение int. 
если int bars, значит и значение должно быть int при присваивании.

1 . Непосредственно возвращает значение свойства.
long    ChartGetInteger ( 
   long   chart_id,           // идентификатор графика 
   int    prop_id,           // идентификатор свойства 
   int    sub_window= 0        // номер подокна, если требуется 
   );
 
2 . Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром
bool    ChartGetInteger ( 
   long     chart_id,         // идентификатор графика 
   int      prop_id,         // идентификатор свойства 
   int      sub_window,       // номер подокна 
   long &   long_var         // сюда примем значение свойства 
   );
 
 

Merhaba. Tavsiye lütfen.

Daha küçük bir zaman diliminin her çubuğuna günün Yüksek ve Düşük çizgilerini çizmesi gereken bir gösterge vardır.

Grafiğe astığımda, sadece günün maksimum ve minimumunun mevcut değerlerine göre çizgiler çiziyor (şekilde olması gerektiği gibi).

 #property indicator_chart_window 
#property indicator_buffers 2        
#property indicator_color1 Blue     
#property indicator_color2 Red      

//datetime time=D'2021.03.30 00:00';

string strTime = "0:00" ;
 
double Buf_0[],Buf_1[];                   
double Sum_H= 0 ;                    
double Sum_L= 0 ;
//--------------------------------------------------------------------
int init()                         
  {
   SetIndexBuffer ( 0 ,Buf_0);        
   SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 1 );
   SetIndexBuffer ( 1 ,Buf_1);        
   SetIndexStyle ( 1 , DRAW_LINE , STYLE_SOLID , 1 );
   return ( 0 );                        
  }
//--------------------------------------------------------------------
int start()                        
  {
   int i, Counted_bars;                    
//--------------------------------------------------------------------
   Counted_bars=IndicatorCounted(); 
   datetime time= StringToTime (strTime);
   int bar_index= iBarShift ( Symbol (), PERIOD_CURRENT ,time, false ); 
   i= Bars -Counted_bars;          
   if (i>bar_index) i=bar_index- 1 ;  
   while (i>= 0 )                      
     {
      Sum_H= iHigh ( Symbol (), PERIOD_D1 , 0 );
      Sum_L= iLow ( Symbol (), PERIOD_D1 , 0 );
      Buf_0[i]=Sum_H;
      Buf_1[i]=Sum_L;
      i--;                          
     }
//--------------------------------------------------------------------
   return ( 0 );                        
  }
//--------------------------------------------------------------------
Dosyalar:
2.png  31 kb
 
ifitstrue :

Merhaba. Tavsiye lütfen.

Daha küçük bir zaman diliminin her çubuğuna günün Yüksek ve Düşük çizgilerini çizmesi gereken bir gösterge vardır.

Grafiğe astığımda, sadece günün maksimum ve minimumunun mevcut değerlerine göre çizgiler çiziyor (şekilde olması gerektiği gibi).

İşte cevap

 
MakarFX :

İşte cevap

Teşekkür ederim.
 
Merhaba, lütfen bana grafiğin kimliğini söyle, nasıl?

bool TrendCreate(const long chart_ID=0, // grafik kimliği

Örneğin, eur/usd'ye bir komut dosyası eklediğimizde grafiğin kimliği nedir? Nereye damlayacak, ne anlayacaktı.




 
Dzmitry Zaitsau :
Merhaba, lütfen bana grafiğin kimliğini söyle, nasıl?

bool TrendCreate(const long chart_ID=0, // grafik kimliği

Örneğin, eur/usd'ye bir komut dosyası eklediğimizde grafiğin kimliği nedir? Nereye damlayacak, ne anlayacaktı.

Genellikle yardım kazıyorlar.

Документация по MQL5: Операции с графиками
Документация по MQL5: Операции с графиками
  • www.mql5.com
Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Lütfen bana MT4 ve MT5 uzmanının kodunu söyleyin, ne koyardı?   kaybı durdurmak   Mumun yüksek/düşük seviyesinin 2-3 pip üzerinde az önce kapandı.

Veya bu konuyla ilgili eğitimleri nerede görebilirim. Şimdiden teşekkürler :-)

Dosyalar:
izilo2.jpeg  270 kb
 
WindUP :

Lütfen bana MT4 ve MT5 uzmanının kodunu söyleyin, ne koyardı?   kaybı durdurmak   Mumun yüksek/düşük seviyesinin 2-3 pip üzerinde az önce kapandı.

Veya bu konuyla ilgili eğitimleri nerede görebilirim. Şimdiden teşekkürler :-)

MqlRates türünde bir dizi bildirirsiniz. OHLC ve diğer kapalı mum parametrelerini kopyalayın

 int    CopyRates (
   string            symbol_name,       // имя символа
   ENUM_TIMEFRAMES   timeframe,         // период
   int               start_pos,         // откуда начнем (начнём с 1)
   int               count,             // сколько копируем (надо всего 1)
   MqlRates          rates_array[]       // массив, куда будут скопированы данные
   );

ve sonra 2-3 puan saptığınız Yüksek veya Düşük değerleri alır ve orada durursunuz.

Ayrıca kullanabilirsin

 double    iHigh (
   string            symbol,           // символ
   int               timeframe,       // период
   int               shift             // сдвиг
   );

ve

 double    iLow (
   string            symbol,           // символ
   int               timeframe,       // период
   int               shift             // сдвиг
   );
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL4
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov :

MqlRates türünde bir dizi bildirirsiniz. OHLC ve diğer kapalı mum parametrelerini kopyalayın

ve sonra 2-3 puan saptığınız Yüksek veya Düşük değerleri alır ve orada durursunuz.

Ayrıca kullanabilirsin

ve

Teşekkürler, ancak en az bir nesnel örnek verebilirsiniz. Üstten görünüm tabiri caizse. Ve sonra tamamen acemiyim ve konuda olduğu gibi 2 gün :-)
 
WindUP :
Teşekkürler, ancak en az bir nesnel örnek verebilirsiniz. Üstten görünüm tabiri caizse. Ve sonra tamamen acemiyim ve konuda olduğu gibi 2 gün :-)

Burada da öğrenmeye çalışıyorum - bir şeyler yolunda gidiyor gibi görünüyor

 //+------------------------------------------------------------------+
//|                                                    CopyRates.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property script_show_inputs
//---
sinput int     Inpcopiedrates = 2 ;     // какой бар
sinput double Inphigh        = 100 ;   // отступить от high
//---
datetime m_right_time = 0 ,m_left_Ctime = 0 ;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 ,Inpcopiedrates,rates);
   if (copied> 0 )
     {
       Print ( "Скопировано баров: " +copied);
       string format= "open = %G, high = %G, low = %G, close = %G, volume = %d" ;
       string out;
       int size= fmin (copied, 10 );
       for ( int i= 0 ; i<size; i++)
        {
         out=i+ ":" + TimeToString (rates[i].time);
         out=out+ " " + StringFormat (format,
                                  rates[i].open,
                                  rates[i].high,
                                  rates[i].low,
                                  rates[i].close,
                                  rates[i].tick_volume);
         Print (out);
         ObjectDelete ( 0 , "CopyRateshigh" );
         m_left_Ctime=rates[i].time;
         m_right_time= TimeCurrent ();
         TrendCreate( 0 , "CopyRateshigh" , clrBlue , STYLE_DASHDOTDOT , 1 );
         TrendPointChange( 0 , "CopyRateshigh" , 0 ,m_left_Ctime,rates[i].high+Inphigh/ 100 );
         TrendPointChange( 0 , "CopyRateshigh" , 1 ,m_right_time,rates[i].high+Inphigh/ 100 );
        }
     }
   else
       Print ( "Не удалось получить исторические данные по символу " , Symbol ());
  }
//+------------------------------------------------------------------+
//| Create a trend line by the given coordinates                     |
//+------------------------------------------------------------------+
bool TrendCreate( const long             chart_ID= 0 ,         // chart's ID
                 const string           name= "TrendLine" ,   // line name
                 const color            clr= clrRed ,         // line color
                 const ENUM_LINE_STYLE style= STYLE_SOLID , // line style
                 const int              width= 1 ,           // line width
                 const int              sub_window= 0 ,       // subwindow index
                 datetime               time1= 0 ,           // first point time
                 double                 price1= 0 ,           // first point price
                 datetime               time2= 0 ,           // second point time
                 double                 price2= 0 ,           // second point price
                 const bool             back= false ,         // in the background
                 const bool             selection= false ,   // highlight to move
                 const bool             ray_left= false ,     // line's continuation to the left
                 const bool             ray_right= true ,     // line's continuation to the right
                 const bool             hidden= true ,       // hidden in the object list
                 const long             z_order= 0 )         // priority for mouse click
  {
//--- set anchor points' coordinates if they are not set
   ChangeTrendEmptyPoints(time1,price1,time2,price2);
//--- reset the error value
   ResetLastError ();
//--- create a trend line by the given coordinates
   if (! ObjectCreate (chart_ID,name, OBJ_TREND ,sub_window,time1,price1,time2,price2))
     {
       Print ( __FUNCTION__ ,
             ": failed to create a trend line! Error code = " , GetLastError ());
       return ( false );
     }
//--- set line color
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- set line display style
   ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- set line width
   ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- display in the foreground (false) or background (true)
   ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
//--- enable (true) or disable (false) the mode of moving the line by mouse
//--- when creating a graphical object using ObjectCreate function, the object cannot be
//--- highlighted and moved by default. Inside this method, selection parameter
//--- is true by default making it possible to highlight and move the object
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- enable (true) or disable (false) the mode of continuation of the line's display to the left
   ObjectSetInteger (chart_ID,name, OBJPROP_RAY_LEFT ,ray_left);
//--- enable (true) or disable (false) the mode of continuation of the line's display to the right
   ObjectSetInteger (chart_ID,name, OBJPROP_RAY_RIGHT ,ray_right);
//--- hide (true) or display (false) graphical object name in the object list
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- set the priority for receiving the event of a mouse click in the chart
   ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
//--- set the text
   ObjectSetString (chart_ID,name, OBJPROP_TEXT ,name);
//--- successful execution
   return ( true );
  }
//+------------------------------------------------------------------+
//| Move trend line anchor point                                     |
//+------------------------------------------------------------------+
bool TrendPointChange( const long    chart_ID= 0 ,       // chart's ID
                       const string name= "TrendLine" , // line name
                       const int     point_index= 0 ,     // anchor point index
                       datetime      time= 0 ,           // anchor point time coordinate
                       double        price= 0 )           // anchor point price coordinate
  {
//--- if point position is not set, move it to the current bar having Bid price
   if (!time)
      time= TimeCurrent ();
   if (!price)
      price= SymbolInfoDouble ( Symbol (), SYMBOL_BID );
//--- reset the error value
   ResetLastError ();
//--- move trend line's anchor point
   if (! ObjectMove (chart_ID,name,point_index,time,price))
     {
       Print ( __FUNCTION__ ,
             ": failed to move the anchor point! Error code = " , GetLastError ());
       return ( false );
     }
//--- successful execution
   return ( true );
  }
//+------------------------------------------------------------------+
//| Check the values of trend line's anchor points and set default   |
//| values for empty ones                                            |
//+------------------------------------------------------------------+
void ChangeTrendEmptyPoints( datetime &time1, double &price1,
                             datetime &time2, double &price2)
  {
//--- if the first point's time is not set, it will be on the current bar
   if (!time1)
      time1= TimeCurrent ();
//--- if the first point's price is not set, it will have Bid value
   if (!price1)
      price1= SymbolInfoDouble ( Symbol (), SYMBOL_BID );
//--- if the second point's time is not set, it is located 9 bars left from the second one
   if (!time2)
     {
       //--- array for receiving the open time of the last 10 bars
       datetime temp[ 10 ];
       CopyTime ( Symbol (), Period (),time1, 10 ,temp);
       //--- set the second point 9 bars left from the first one
      time2=temp[ 0 ];
     }
//--- if the second point's price is not set, it is equal to the first point's one
   if (!price2)
      price2=price1;
  }
//+------------------------------------------------------------------+

Kopya Oranları