MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 138
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Programlı olarak dünün tarihini ve saatini nasıl alabilirim?
Sonuçta, ihtiyacınız olan her şey var, sadece okuyun. örneğin bu
Programlı olarak dünün tarihini ve saatini nasıl alabilirim?
dünkü takvim:
datetime tim=TimeCurrent()-24*60*60;
MqlDateTime ts;
TimeToStruct(tim,ts);
ts.hour=0;ts.min=0;ts.sec=0;
tim=StructToTime(ts);
şimdi tim'de - dünün takvim gününün başlangıcı (!! önceki D1 çubuğunun açılış saati değil)
Öngörülen çubuk açılış zamanı D1 - iTime(0,PERIOD_D1,1); küçük bir düzeltme ile - Cumartesi olduğu ortaya çıkarsa, Pazar ise 24 saat ekleyin. sonra 48 saat.
Sonuçta, ihtiyacınız olan her şey var, sadece okuyun. örneğin bu
Dünden beri bunu nasıl yapacağımı bulmaya çalışıyorum ama işe yaramıyor, bu işte yeni olduğum için yardım istiyorum.
Lütfen dünün bar indeksini, diyelim ki 15:00 ve bugünün bar indeksini, diyelim ki 7:00'de bulmama yardım edin, örnekte gösterildiği gibi sadece tarihi açıkça belirtmeden
dünkü takvim:
datetime tim=TimeCurrent()-24*60*60;
MqlDateTime ts;
TimeToStruct(tim,ts);
ts.hour=0;ts.min=0;ts.sec=0;
tim=StructToTime(ts);
şimdi tim'de - dünün takvim gününün başlangıcı (!! önceki D1 çubuğunun açılış saati değil)
Öngörülen çubuk açılış zamanı D1 - iTime(0,PERIOD_D1,1); küçük bir düzeltme ile - Cumartesi olduğu ortaya çıkarsa, Pazar ise 24 saat ekleyin. sonra 48 saat.
stband'ı başabaşa aktarma işlevi, sipariş bileti ve aktarım yapılacak pip cinsinden mesafe işleve iletilir
{
double sl= 0.0 ;
if ( OrderSelect (ticket, SELECT_BY_TICKET ))
{
if ( OrderType ()== OP_BUY )
{
if ( Bid >= OrderOpenPrice () && Bid - OrderOpenPrice ()>=distance* _Point ) sl= OrderOpenPrice ();
if ( OrderStopLoss ()!= 0 && OrderStopLoss ()>= OrderOpenPrice ()) return ;
}
if ( OrderType ()== OP_SELL )
{
if ( Ask <= OrderOpenPrice () && OrderOpenPrice ()- Ask >=distance* _Point ) sl= OrderOpenPrice ();
if ( OrderStopLoss ()!= 0 && OrderStopLoss ()<= OrderOpenPrice ()) return ;
}
ResetLastError ();
if (sl<= 0 ) return ;
if (! OrderModify ( OrderTicket (), OrderOpenPrice (),sl, OrderTakeProfit (), 0 ))
{
int error= GetLastError ();
rezult= StringConcatenate ( OrderSymbol (), ": error modifying StopLoss order " , OrderTicket (), " " ,TypeToStr( OrderType ()), " №- " ,error);
Print (rezult);
}
}
}
...teşekkür ederim Sergey!!!!!
Harika, danışmandaki işlevleri çıkarmaya çalışacağım. sonucu sonra yazarım.
Teşekkürler!!!
İkinci bir arama yöntemi eklendi.
//| iFreeNumFractals.mq4 |
//| Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "3.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots 2
//--- plot UpperFractal
#property indicator_label1 "Upper Fractal"
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- plot LowerFractal
#property indicator_label2 "Lower Fractal"
#property indicator_type2 DRAW_ARROW
#property indicator_color2 clrSteelBlue
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
//---
enum ENUM_TYPE_FRACTAL
{
TYPE_FRACTAL_ACCURATE = 0 , // Accurate fractal
TYPE_FRACTAL_INACCURATE = 1 , // Inaccurate fractal
};
//--- input parameters
input ENUM_TYPE_FRACTAL TypeFractals = TYPE_FRACTAL_ACCURATE; // Type of fractal
input int LeftNumUp = 2 ; // The number of bars on the left for upper fractals
int leftNumUp; // Количество баров слева для верхнего фрактала
input int RightNumUp = 2 ; // The number of bars on the right for upper fractals
int rightNumUp; // Количество баров справа для верхнего фрактала
input int LeftNumDn = 2 ; // The number of bars on the left for lower fractals
int leftNumDn; // Количество баров слева для нижнего фрактала
input int RightNumDn = 2 ; // The number of bars on the right for lower fractals
int rightNumDn; // Количество баров справа для нижнего фрактала
//--- indicator buffers
double BufferUpperFractal[];
double BufferLowerFractal[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//--- indicator buffers mapping
SetIndexBuffer ( 0 ,BufferUpperFractal);
SetIndexBuffer ( 1 ,BufferLowerFractal);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
PlotIndexSetInteger ( 0 , PLOT_ARROW , 217 );
PlotIndexSetInteger ( 1 , PLOT_ARROW , 218 );
SetIndexArrow ( 0 , 217 );
SetIndexArrow ( 1 , 218 );
SetIndexEmptyValue ( 0 , EMPTY_VALUE );
SetIndexEmptyValue ( 1 , EMPTY_VALUE );
//---
leftNumUp=(LeftNumUp< 1 ? 1 :LeftNumUp);
rightNumUp=(RightNumUp< 1 ? 1 :RightNumUp);
leftNumDn=(LeftNumDn< 1 ? 1 :LeftNumDn);
rightNumDn=(RightNumDn< 1 ? 1 :RightNumDn);
string short_name= MQLInfoString ( MQL_PROGRAM_NAME )+ "(" +( string )leftNumUp+ "," +( string )rightNumUp+ ")(" +( string )leftNumDn+ "," +( string )rightNumDn+ ")" ;
IndicatorSetString ( INDICATOR_SHORTNAME ,short_name);
IndicatorSetInteger ( INDICATOR_DIGITS , Digits ());
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
if (rates_total< fmax (leftNumUp+rightNumUp,leftNumDn+rightNumDn)) return ( 0 );
int limit=rates_total-prev_calculated;
if (limit> 0 ) {
ArrayInitialize (BufferUpperFractal, 0.0 );
ArrayInitialize (BufferUpperFractal, 0.0 );
limit=rates_total- fmax (leftNumUp,leftNumDn)- 1 ;
}
//---
for ( int i=limit; i> fmin (rightNumUp,rightNumDn); i--) {
if (GetFreeUpperFractal( Symbol (), PERIOD_CURRENT ,i,leftNumUp,rightNumUp)> 0 ) BufferUpperFractal[i]=high[i];
if (GetFreeLowerFractal( Symbol (), PERIOD_CURRENT ,i,leftNumDn,rightNumDn)> 0 ) BufferLowerFractal[i]=low[i];
}
//--- return value of prev_calculated for next call
return (rates_total);
}
//+----------------------------------------------------------------------------+
double GetFreeLowerFractal( const string symbol_name, ENUM_TIMEFRAMES timeframe, int shift, int left_dimension= 2 , int right_dimension= 2 ) {
int bars= Bars (symbol_name,timeframe);
if (left_dimension< 1 ) left_dimension= 1 ;
if (right_dimension< 1 ) right_dimension= 1 ;
if (shift-right_dimension< 1 || shift+left_dimension>bars- 1 ) return (- 1 );
if (TypeFractals==TYPE_FRACTAL_ACCURATE) {
for ( int i=shift- 1 ; i>=shift-right_dimension; i--) if (GetPriceLow(symbol_name,timeframe,i)<GetPriceLow(symbol_name,timeframe,i+ 1 )) return (- 1 );
for ( int i=shift+ 1 ; i<=shift+left_dimension; i++) if (GetPriceLow(symbol_name,timeframe,i)<GetPriceLow(symbol_name,timeframe,i- 1 )) return (- 1 );
}
else {
for ( int i=shift- 1 ; i>=shift-right_dimension; i--) if (GetPriceLow(symbol_name,timeframe,i)<GetPriceLow(symbol_name,timeframe,shift)) return (- 1 );
for ( int i=shift+ 1 ; i<=shift+left_dimension; i++) if (GetPriceLow(symbol_name,timeframe,i)<GetPriceLow(symbol_name,timeframe,shift)) return (- 1 );
}
return (GetPriceLow(symbol_name,timeframe,shift));
}
//+----------------------------------------------------------------------------+
double GetFreeUpperFractal( const string symbol_name, ENUM_TIMEFRAMES timeframe, int shift, int left_dimension= 2 , int right_dimension= 2 ) {
int bars= Bars (symbol_name,timeframe);
if (left_dimension< 1 ) left_dimension= 1 ;
if (right_dimension< 1 ) right_dimension= 1 ;
if (shift-right_dimension< 1 || shift+left_dimension>bars- 1 ) return (- 1 );
if (TypeFractals==TYPE_FRACTAL_ACCURATE) {
for ( int i=shift- 1 ; i>=shift-right_dimension; i--) if (GetPriceHigh(symbol_name,timeframe,i)>GetPriceHigh(symbol_name,timeframe,i+ 1 )) return (- 1 );
for ( int i=shift+ 1 ; i<=shift+left_dimension; i++) if (GetPriceHigh(symbol_name,timeframe,i)>GetPriceHigh(symbol_name,timeframe,i- 1 )) return (- 1 );
}
else {
for ( int i=shift- 1 ; i>=shift-right_dimension; i--) if (GetPriceHigh(symbol_name,timeframe,i)>GetPriceHigh(symbol_name,timeframe,shift)) return (- 1 );
for ( int i=shift+ 1 ; i<=shift+left_dimension; i++) if (GetPriceHigh(symbol_name,timeframe,i)>GetPriceHigh(symbol_name,timeframe,shift)) return (- 1 );
}
return (GetPriceHigh(symbol_name,timeframe,shift));
}
//+----------------------------------------------------------------------------+
double GetPriceHigh( const string symbol_name, ENUM_TIMEFRAMES timeframe, int shift){
double array[ 1 ];
if ( CopyHigh (symbol_name,timeframe,shift, 1 ,array)== 1 ) return (array[ 0 ]);
return (- 1 );
}
//+----------------------------------------------------------------------------+
double GetPriceLow( const string symbol_name, ENUM_TIMEFRAMES timeframe, int shift){
double array[ 1 ];
if ( CopyLow (symbol_name,timeframe,shift, 1 ,array)== 1 ) return (array[ 0 ]);
return (- 1 );
}
//+----------------------------------------------------------------------------+
İkinci bir arama yöntemi eklendi.
Teşekkürler, bu harika.
Kod tabanına yüklemek için ayrılıyor)
Teşekkürler, bu harika.
Kod tabanına yüklemek için ayrılıyor)
Merhaba.
Linux kullanıyorum. MT4'te birkaç döviz çifti açıktır - 10'a kadar. MQL4 dilini kullanarak grafik sekmelerini belirli bir sırayla nasıl düzenleyebilirim?
Profillerle çalışmak, 1_MQL4.pdf'i incelemek, İnternet hiçbir şey vermedi.
Saygılarımla, Vladimir
Merhaba.
Linux kullanıyorum. MT4'te birkaç döviz çifti açıktır - 10'a kadar. MQL4 dilini kullanarak grafik sekmelerini belirli bir sırayla nasıl düzenleyebilirim?
Profillerle çalışmak, 1_MQL4.pdf'i incelemek, İnternet hiçbir şey vermedi.
Saygılarımla, Vladimir
Windows'ta bile sekmeleri mql4 kullanarak sıralayamazsınız.
Tabloları yalnızca ihtiyacınız olan sırayla açabilir ve üzerlerine istediğiniz şablonları yükleyebilirsiniz.