Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
OK, c'est le même cycle ici, pourquoi les commandes se ferment-elles ?)
Parce que c'est possible. Mais c'est toujours un analphabète.
Suggérez intelligemment ! si vous ne ménagez pas vos connaissances.
Voici une version légèrement plus correcte, qui peut encore être améliorée :
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);
}
//+----------------------------------------------------------------------------+
Bonjour !
L'indicateur donné fonctionne bien lorsque je le place sur un graphique.
Mais après avoir redémarré le terminal, il n'y a pas de données, juste quelque chose à la place des données
Je peux le réparer en changeant le TF
j'ai essayé tout ce que je sais - ça ne marche pas
Je pense que le réglage de l'étiquette de texte est quelque chose d'erroné - aidez-moi s'il vous plaît merci d'avance !
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);
}
//+----------------------------------------------------------------------------+
Bonjour !
L'indicateur donné fonctionne bien lorsque je le place sur un graphique.
Mais après avoir redémarré le terminal, il n'y a pas de données, juste quelque chose à la place des données.
Je peux le réparer en changeant le TF
j'ai essayé tout ce que je sais - ça ne marche pas
Je pense que le paramètre de l'étiquette de texte est quelque chose de mal - s'il vous plaît aidez-moi, merci d'avance !
Peut-être ?
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);
}
Que pensez-vous de ça ?
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);
}
Merci pour l'info mais le résultat est le même !
Peut-être que ça va aider ! Il n'y a pas de 3ème et le 2ème n'est pas bon !
Après avoir changé le TF, c'est normal !
Après-midi. J'ai installé MT4 sur mon ordinateur. Je l'ai mis exprès sur le disque D. Mais il s'entête à créer un dossier de données sur le lecteur C. L'espace n'y est pas suffisant, comme d'habitude, et je dois donc nettoyer les journaux des testeurs lors des tests plusieurs fois par jour. Eh bien, ça ne peut pas être fatal, n'est-ce pas ? Pouvez-vous s'il vous plaît conseiller un idiot sur la façon de faire en sorte que MT4 crée un dossier "répertoire de données" sur un autre lecteur ? Je ne le trouve pas dans les paramètres.
Je ne suis pas un pro mais je ne pense pas qu'il y ait quoi que ce soit que Sim puisse faire !
Il suffit de libérer le lecteur c ou de réinstaller le tout avec le windup et de faire plus !
Bon après-midi. J'ai installé MT4 sur mon ordinateur. Mettez-le sur le disque D dans un but précis. Mais il s'entête à créer un dossier de données sur le disque C. L'espace n'y est pas suffisant, comme d'habitude, et je dois donc nettoyer les journaux du testeur plusieurs fois par jour pendant les tests. Eh bien, ça ne peut pas être fatal, n'est-ce pas ? Pouvez-vous s'il vous plaît conseiller un idiot sur la façon de faire en sorte que MT4 crée un dossier "répertoire de données" sur un autre lecteur ? Je ne le trouve pas dans les paramètres.