MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 46
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
Merhaba.
Lütfen yardım et.
Günün başlangıcından itibaren, kapalı pozisyonlarda kaybın %10 olduğunu nasıl öğrenebilirim?
Bu EA, sol üst köşede, belirlenen dönem için kâr veya zarar yüzdesini gösterir.
//| test02.mq4 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
enum mode_type
{
BUY= OP_BUY ,
SELL= OP_SELL ,
ALL = - 1
};
input string Symbols= NULL ;
input int Magic=- 1 ; //Identification number
input mode_type ModeType=ALL;
input ENUM_TIMEFRAMES TimeFrame= PERIOD_D1 ;
double procent= 0.0 ;
double prev_balans= 0.0 ;
double Profit= 0.0 ;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
Profit=LastProfit( iTime ( _Symbol ,TimeFrame, 0 ),Symbols,Magic,ModeType);
prev_balans=Balans( 0 , iTime ( _Symbol ,TimeFrame, 0 ));
if (prev_balans!= 0.0 )procent=Profit/prev_balans* 100.0 ;
Comment (
"\nTime = " , iTime ( _Symbol ,TimeFrame, 0 ),
"\nProfit = " , DoubleToStr (Profit, 2 ),
"\nprev_balans = " , DoubleToStr (prev_balans, 2 ),
"\nprocent = " , DoubleToStr (procent, 4 ), " %"
);
}
//+------------------------------------------------------------------+
double LastProfit(
datetime time, // Дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года.
string symbol= NULL , // символ, если NULL то любой символ
int magic=- 1 , // идентификатор, если -1 то любой идентификатор
int cmd=- 1 // торговая операция, если -1 любая торговая операция
)
{
double profit= 0 ;
int total= OrdersHistoryTotal ();
for ( int i=total- 1 ;i>= 0 ;i--)
{
if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ;
if ( OrderSymbol ()==symbol || symbol!= NULL )
{
if ( OrderMagicNumber ()==magic || magic==- 1 )
{
if ( OrderType ()==cmd || cmd==- 1 )
{
if ( OrderCloseTime ()<time) continue ;
profit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
}
}
}
}
return (profit);
}
//+------------------------------------------------------------------+
double Balans(
datetime start_time, // C какой даты. Дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года.
datetime stop_time, // По какую дату. Дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года.
)
{
double profit= 0 ;
int total= OrdersHistoryTotal ();
for ( int i= 0 ; i<total; i++)
{
if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ;
if ( OrderCloseTime ()<start_time || OrderCloseTime ()>stop_time) continue ;
profit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
}
return (profit);
}
//+------------------------------------------------------------------+
...
Bu EA, sol üst köşede, belirlenen dönem için kâr veya zarar yüzdesini gösterir.
Teşekkür ederim.
Tüm zamanlar için kârsız pozisyonların sayısını sayan bir fonksiyon var.
Neyi değiştirmek için bugün arka arkaya kapatılan kârsız pozisyonların sayısını öğrenin.
{
int PosCnt = 0 ;
int cnt = HistoryTotal ();
for ( int i = cnt- 1 ; i >= 0 ; i--) {
if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ;
if ( OrderSymbol () != Symbol ()) continue ;
if ( OrderMagicNumber () != Magic) continue ;
int type = OrderType ();
if (type != OP_BUY && type != OP_SELL ) continue ;
if ( OrderProfit ()+ OrderSwap ()+ OrderCommission () > 0 ) break ;
PosCnt++;
}
return (PosCnt);
}
Teşekkür ederim.
Tüm zamanlar için kârsız pozisyonların sayısını sayan bir fonksiyon var.
Neyi değiştirmek için bugün arka arkaya kapatılan kârsız pozisyonların sayısını öğrenin.
{
int PosCnt = 0 ;
int cnt = HistoryTotal ();
for ( int i = cnt- 1 ; i >= 0 ; i--) {
if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ;
if ( OrderSymbol () != Symbol ()) continue ;
if ( OrderMagicNumber () != Magic) continue ;
int type = OrderType ();
if (type != OP_BUY && type != OP_SELL ) continue ;
if ( OrderProfit ()+ OrderSwap ()+ OrderCommission () > 0 ) break ;
PosCnt++;
}
return (PosCnt);
}
bir koşul daha ekleyin: emrin kapanış zamanı , mevcut mum D1'in açılış zamanından daha az ise, devam edin;
Teşekkür ederim.
Teşekkür ederim.
Kesinlikle bu şekilde değil.
Bunun gibi - OrderSymbol()
veya bunun gibi:
Kesinlikle bu şekilde değil.
Bunun gibi - OrderSymbol()
Sayesinde.
Sayın. Expert Advisor'ın giriş parametreleri penceresine nasıl metin ekleyeceğimi söyleyin.
input bool MetaQuotes = true ;
input double MetaQuotes = 20.3 ;
input string MetaQuotes = "Corp" ;
input bool MetaQuotes = true ;
input double MetaQuotes = 20.3 ;
input string MetaQuotes = "Corp" ;
Şalgam + teşekkür ederim. Anladım, biraz açıklama ile harici giriş değişkenleri hakkında bir eğitim okudum. Bir örnek daha açık ve net.
Şalgam + teşekkür ederim. Anladım, biraz açıklama ile harici giriş değişkenleri hakkında bir eğitim okudum. Bir örnek daha açık ve net.
Her satıra yorum eklerseniz, daha ilginç olacaktır:
input bool MetaQuotes2 = true ; // Описание входного параметра 2
input double MetaQuotes3 = 20.3 ; // Описание входного параметра 3
input string MetaQuotes4 = "Corp" ; // Описание входного параметра 4
ve eğer başka bir numaralandırma yapar ve onu bool yerine kullanırsanız, o zaman daha da ilginç olacaktır:
{
enYes = 1 , // Да
enNo = 0 , // Нет
};
input int MetaQuotes1 = 30 ; // Описание входного параметра 1
input enumYN MetaQuotes2 = enYes; // Описание входного параметра 2
input double MetaQuotes3 = 20.3 ; // Описание входного параметра 3
input string MetaQuotes4 = "Corp" ; // Описание входного параметра 4
ve sinput , optimizasyon için değişkenler listesinden bir değişkeni çıkarmanıza izin verir. Örneğin, bu bağlamda MetaQuotes4 değişkeni optimizasyon için gerekli değildir ve hariç tutulabilir:
{
enYes = 1 , // Да
enNo = 0 , // Нет
};
input int MetaQuotes1 = 30 ; // Описание входного параметра 1
input enumYN MetaQuotes2 = enYes; // Описание входного параметра 2
input double MetaQuotes3 = 20.3 ; // Описание входного параметра 3
sinput string MetaQuotes4 = "Corp" ; // Описание входного параметра 4