Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 37
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Tamam, işte aynı döngü, siparişleri neden kapatıyor?)
Çünkü olabilir. Ama yine de kötü yazılmış.
Akıllı öner! eğer bilginize aldırmazsanız.
İşte hala iyileştirme için yeri olan biraz daha doğru bir versiyon:
for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
{ //+----------------------------------------------------------------------------------------+for
if (! OrderSelect (i, SELECT_BY_POS )) continue ;
if ( OrderSymbol ()!= Symbol ()) continue ;
if ( OrderType ()> 1 ) continue ;
RefreshRates ();
if (! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 3 ))
{
error=_LastError;
Print ( "Error #" ,error);
}
if (error== 6 ){ Alert ( "Нет связи" ); return ( 0 );}
if (error== 132 ){ Alert ( "Рынок закрыт" ); return ( 0 );}
}
//| i-TotalStopCurrency.mq4 |
//| 21.12.2011 Indicator of the Total Stop in the Deposit Currency. |
//| Индикатор суммарного стопа в валюте депозита. |
//| 04.05.2012 Добавил способ расчета прибыли для Futures. |
//+----------------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 0
//------- Внешние параметры индикатора ----------------------------------------+
extern string symbol = "" ;
extern color ecText = Black; // Цвет текста
extern int eiCorner = 3 ; // Номер угла привязки:
// 0 - левый верхний
// 1 - правый верхний
// 2 - левый нижний
// 3 - правый нижний
//------- Глобальные переменные индикатора ------------------------------------+
//+----------------------------------------------------------------------------+
//| |
//| ПРЕДОПРЕДЕЛЁННЫЕ ФУНКЦИИ |
//| |
//+----------------------------------------------------------------------------+
//| Custom indicator initialization function |
//+----------------------------------------------------------------------------+
void init() {
Comment ( "" );
}
//+----------------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+----------------------------------------------------------------------------+
void deinit() {
Comment ( "" );
for ( int i= 0 ; i< 3 ; i++) ObjectDelete ( "iTotalStopCurrency" +i);
}
//+----------------------------------------------------------------------------+
//| Custom indicator iteration function |
//+----------------------------------------------------------------------------+
void start() {
double s=ProfitIFStopInCurrency(symbol);
int pn=ProfitIFStopInCurrency2(symbol);
SetLabel( "iTotalStopCurrency0" , "Уровень стопа" , ecText, 5 , 30 , eiCorner);
SetLabel( "iTotalStopCurrency1" , DoubleToStr (s, 2 )+ " " + AccountCurrency (), ecText, 5 , 5 , eiCorner);
SetLabel( "iTotalStopCurrency2" , "Спр=" + DoubleToStr ( MarketInfo ( Symbol (), MODE_SPREAD ), 0 )+ " Орд=" + OrdersTotal ()
+ " Приб=" + DoubleToStr ( AccountProfit (), 2 )+ " Сред=" + DoubleToStr ( AccountEquity (), 2 )+ " Бал=" + DoubleToStr ( AccountBalance (), 2 )+ " " +pn
+ "пипс " + DoubleToStr (s/ AccountBalance ()* 100 , 2 )+ "%" , ecText, 130 , 5 , eiCorner);
}
//+----------------------------------------------------------------------------+
//| Версия : 03.05.2012 |
//| Описание : Возвращает предполагаемую прибыль/убыток в валюте депозита |
//| в случае срабатывания стопа открытых позиций. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ( "" - любой символ, |
//| NULL - текущий символ) |
//| op - операция ( -1 - любая позиция) |
//| mn - MagicNumber ( -1 - любой магик) |
//+----------------------------------------------------------------------------+
double ProfitIFStopInCurrency( string sy= "" , int op=- 1 , int mn=- 1 ) {
/*if (sy=="0") */ sy= Symbol (); // Текущий символ
int i, k= OrdersTotal (); // Подсчёт открытых позиций
int m; // Способ расчета прибыли: 0 - Forex, 1 - CFD, 2 - Futures
double l; // Размер контракта в базовой валюте инструмента
double p; // Размер пункта в валюте котировки
double t; // Минимальный шаг изменения цены инструмента в валюте котировки
double v; // Размер минимального изменения цены инструмента в валюте депозита
double s= 0 ; // Подсчёт стопа в валюте депозита
double pn= 0 ; // Подсчёт стопа в пунктах
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if (( OrderSymbol ()==sy || sy== "" ) && (mn< 0 || OrderMagicNumber ()==mn)) {
if (( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) && (op< 0 || OrderType ()==op)) {
l= MarketInfo ( OrderSymbol (), MODE_LOTSIZE );
m= MarketInfo ( OrderSymbol (), MODE_PROFITCALCMODE );
p= MarketInfo ( OrderSymbol (), MODE_POINT );
t= MarketInfo ( OrderSymbol (), MODE_TICKSIZE );
v= MarketInfo ( OrderSymbol (), MODE_TICKVALUE );
if ( OrderType ()== OP_BUY ) {
if (m== 0 ) s-=( OrderOpenPrice ()- OrderStopLoss ())/p*v* OrderLots (); pn-=( OrderOpenPrice ()- OrderStopLoss ())* MathPow ( 10 , MarketInfo ( OrderSymbol (), MODE_DIGITS ));
if (m== 1 ) s-=( OrderOpenPrice ()- OrderStopLoss ())/p*v/t/l* OrderLots ();
if (m== 2 ) s-=( OrderOpenPrice ()- OrderStopLoss ())/p*v* OrderLots ();
s+= OrderCommission ()+ OrderSwap ();
}
if ( OrderType ()== OP_SELL ) {
if ( OrderStopLoss ()> 0 ) {
if (m== 0 ) s-=( OrderStopLoss ()- OrderOpenPrice ())/p*v* OrderLots (); pn-=( OrderStopLoss ()- OrderOpenPrice ())* MathPow ( 10 , MarketInfo ( OrderSymbol (), MODE_DIGITS ));
if (m== 1 ) s-=( OrderStopLoss ()- OrderOpenPrice ())/p*v/t/l* OrderLots ();
if (m== 2 ) s-=( OrderStopLoss ()- OrderOpenPrice ())/p*v* OrderLots ();
s+= OrderCommission ()+ OrderSwap ();
} else s=- AccountBalance ();
}
}
}
}
}
if ( AccountBalance ()+s< 0 ) s=- AccountBalance (); // Ограничение убытка балансом счёта
return (s);
}
//+----------------------------------------------------------------------------+
double ProfitIFStopInCurrency2( string sy= "" , int op=- 1 , int mn=- 1 ) {
/*if (sy=="0") */ sy= Symbol (); // Текущий символ
int i, k= OrdersTotal (); // Подсчёт открытых позиций
int m; // Способ расчета прибыли: 0 - Forex, 1 - CFD, 2 - Futures
double l; // Размер контракта в базовой валюте инструмента
double p; // Размер пункта в валюте котировки
double t; // Минимальный шаг изменения цены инструмента в валюте котировки
double v; // Размер минимального изменения цены инструмента в валюте депозита
double s= 0 ; // Подсчёт стопа в валюте депозита
double pn= 0 ; // Подсчёт стопа в пунктах
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if (( OrderSymbol ()==sy || sy== "" ) && (mn< 0 || OrderMagicNumber ()==mn)) {
if (( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) && (op< 0 || OrderType ()==op)) {
l= MarketInfo ( OrderSymbol (), MODE_LOTSIZE );
m= MarketInfo ( OrderSymbol (), MODE_PROFITCALCMODE );
p= MarketInfo ( OrderSymbol (), MODE_POINT );
t= MarketInfo ( OrderSymbol (), MODE_TICKSIZE );
v= MarketInfo ( OrderSymbol (), MODE_TICKVALUE );
if ( OrderType ()== OP_BUY ) {
if (m== 0 ) s-=( OrderOpenPrice ()- OrderStopLoss ())/p*v* OrderLots (); pn-=( OrderOpenPrice ()- OrderStopLoss ())* MathPow ( 10 , MarketInfo ( OrderSymbol (), MODE_DIGITS ));
if (m== 1 ) s-=( OrderOpenPrice ()- OrderStopLoss ())/p*v/t/l* OrderLots ();
if (m== 2 ) s-=( OrderOpenPrice ()- OrderStopLoss ())/p*v* OrderLots ();
s+= OrderCommission ()+ OrderSwap ();
}
if ( OrderType ()== OP_SELL ) {
if ( OrderStopLoss ()> 0 ) {
if (m== 0 ) s-=( OrderStopLoss ()- OrderOpenPrice ())/p*v* OrderLots (); pn-=( OrderStopLoss ()- OrderOpenPrice ())* MathPow ( 10 , MarketInfo ( OrderSymbol (), MODE_DIGITS ));
if (m== 1 ) s-=( OrderStopLoss ()- OrderOpenPrice ())/p*v/t/l* OrderLots ();
if (m== 2 ) s-=( OrderStopLoss ()- OrderOpenPrice ())/p*v* OrderLots ();
s+= OrderCommission ()+ OrderSwap ();
} else s=- AccountBalance ();
}
}
}
}
}
if ( AccountBalance ()+s< 0 ) s=- AccountBalance (); // Ограничение убытка балансом счёта
return (pn);
}
//+----------------------------------------------------------------------------+
//| Версия : 12.10.2007 |
//| Описание : Установка текстовой метки, объект OBJ_LABEL. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| nm - наименование объекта |
//| tx - текст |
//| cl - цвет метки |
//| xd - координата X в пикселах |
//| yd - координата Y в пикселах |
//| cr - номер угла привязки (0 - левый верхний ) |
//| 1 - правый верхний |
//| 2 - левый нижний |
//| 3 - правый нижний ) |
//| fs - размер шрифта (9 - по умолчанию ) |
//+----------------------------------------------------------------------------+
void SetLabel( string nm, string tx, color cl, int xd, int yd, int cr= 0 , int fs= 14 ) {
if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_LABEL , 0 , 0 , 0 );
ObjectSetText (nm, tx, fs);
ObjectSet (nm, OBJPROP_COLOR , cl);
ObjectSet (nm, OBJPROP_XDISTANCE , xd);
ObjectSet (nm, OBJPROP_YDISTANCE , yd);
ObjectSet (nm, OBJPROP_CORNER , cr);
ObjectSet (nm, OBJPROP_FONTSIZE , fs);
}
//+----------------------------------------------------------------------------+
Merhaba !
bu hindi bir çizelgeye yerleştirildiğinde iyi çalışıyor
ancak terminali yeniden başlattıktan sonra veri yok, veri yerine biraz çöp
gerçek, TF programını değiştirerek tedavi edilir
Bilgimin yeterli olduğu her şeyi denedim - işe yaramıyor
Metin etiketini ayarlarken bir sorun olduğunu anlıyorum - lütfen yardım edin, şimdiden teşekkürler!
if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_LABEL , 0 , 0 , 0 );
ObjectSetText (nm, tx, fs);
ObjectSet (nm, OBJPROP_COLOR , cl);
ObjectSet (nm, OBJPROP_XDISTANCE , xd);
ObjectSet (nm, OBJPROP_YDISTANCE , yd);
ObjectSet (nm, OBJPROP_CORNER , cr);
ObjectSet (nm, OBJPROP_FONTSIZE , fs);
}
//+----------------------------------------------------------------------------+
Merhaba !
bu hindi bir grafiğe yerleştirildiğinde iyi çalışıyor
ancak terminali yeniden başlattıktan sonra veri yok, veri yerine biraz çöp
gerçek, TF programını değiştirerek tedavi edilir
Bilgimin yeterli olduğu her şeyi denedim - işe yaramıyor
anladığım kadarıyla, metin etiketini ayarlarken bir sorun var - lütfen yardım edin, şimdiden teşekkürler!
Belki bu yüzden?
if ( ObjectFind (nm)< 0 ) {
ObjectCreate (nm, OBJ_LABEL , 0 , 0 , 0 );
ObjectSet (nm, OBJPROP_COLOR , cl);
ObjectSet (nm, OBJPROP_XDISTANCE , xd);
ObjectSet (nm, OBJPROP_YDISTANCE , yd);
ObjectSet (nm, OBJPROP_CORNER , cr);
ObjectSet (nm, OBJPROP_FONTSIZE , fs);
}
ObjectSetText (nm, tx, fs);
}
Belki bu yüzden?
if ( ObjectFind (nm)< 0 ) {
ObjectCreate (nm, OBJ_LABEL , 0 , 0 , 0 );
ObjectSet (nm, OBJPROP_COLOR , cl);
ObjectSet (nm, OBJPROP_XDISTANCE , xd);
ObjectSet (nm, OBJPROP_YDISTANCE , yd);
ObjectSet (nm, OBJPROP_CORNER , cr);
ObjectSet (nm, OBJPROP_FONTSIZE , fs);
}
ObjectSetText (nm, tx, fs);
}
İlginiz için teşekkürler ama sonuç aynı! başka bir şey yanlış!
Bu yardımcı olabilir! nedense 3. ve 2. doğru görüntülenmiyor!
TF normunu değiştirdikten sonra!
Tünaydın. MT4'ü bilgisayarıma kurdum. Özel olarak D sürücüsüne koydum. Ama sürekli olarak C sürücüsünde veriler içerenbir klasör oluşturuyor . Her zamanki gibi, orada yeterli alan yok, bu yüzden günde birkaç kez test yaparken test cihazı günlüklerini temizlemeniz gerekiyor. Ölümcül olamaz, değil mi? Lütfen çaydanlığa MT4'ü başka bir diskte bir "veri dizini" klasörü oluşturmaya nasıl zorlayacağını söyleyin? Ayarlar'da bulamıyorum.
Tabii ki profesyonel değilim, ama bir sim'e yardım etmenin bir yolu olmadığını düşünüyorum!
Sadece diski boşaltın veya Windows ile birlikte her şeyi yeniden düzenleyin ve daha fazlasını yapın!
Tünaydın. MT4'ü bilgisayarıma kurdum. Özel olarak D sürücüsüne koydum. Ama sürekli olarak C sürücüsünde veriler içerenbir klasör oluşturuyor . Her zamanki gibi, orada yeterli alan yok, bu yüzden günde birkaç kez test yaparken test cihazı günlüklerini temizlemeniz gerekiyor. Ölümcül olamaz, değil mi? Lütfen çaydanlığa MT4'ü başka bir diskte bir "veri dizini" klasörü oluşturmaya nasıl zorlayacağını söyleyin? Ayarlar'da bulamıyorum.