Bonjour, j'essaie de faire en sorte que la fonction
//-------------------------------------------------------------------------------// Функция модификации позиции,безуыток, трейлинг-стоп //-------------------------------------------------------------------------------+ bool Modi_Traili(int select,int pool=MODE_TRADES,ulong magic=-1)
{
// double Profit_On =OrderProfit(); // Профит открытой позиции double Price_Open =0; // Цена открытой позицииstring sym =Symbol(),er;
int i,cnt=0, k=OrdersTotal(),op=-1,mn=-1;
double Market_Pi=0, oop=0, point=0, pp=0;
bool loop = false;
//----------------------------------if (sym=="") sym=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_TICKET, MODE_TRADES)) {
if ((OrderSymbol()==sym || sym=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY && (mn<0 || OrderMagicNumber()==mn)){
int Ticket=OrderTicket();
Price_Open = OrderOpenPrice();
Market_Pi=MarketInfo(OrderSymbol(), MODE_ASK);
point=MarketInfo(OrderSymbol(), MODE_POINT);
if (point==0) if (StringFind(sym, "JPY")<0) point=0.0001; else point=0.01;
if (point==0) if (StringFind(sym, "XAU")<0) point=0.0001; else point=0.001;
double Sorri=MathRound(MathAbs(Market_Pi-Price_Open)/point);
Print("Ticket==",Ticket,"Sorri = ",Sorri,"Price_Open = ",Price_Open,"mi = ",Market_Pi);
if(Sorri >Deta && OrderProfit()>0)
{
// Print("Ticket==",Ticket,"Sorri = ",Sorri,"Price_Open = ",Price_Open,"mi = ",Market_Pi);//--------------------------------------------------------------------------------------------------while (!loop) // Цикл модификации
{
double TP = NormalizeDouble(Ask+TProfit*Point,Digits);
double SL=NormalizeDouble(Ask+(2+MarketInfo(OrderSymbol(), MODE_SPREAD)/point),Digits);
Alert ("М- - -я ",Ticket,". Ждём ответ..");
bool Ans=OrderModify(Ticket,Price_Open,SL,TP,0); //Модифи его!//--------------------------------------------------------------------------------if (Ans==true) // Получилось :)
{
Alert ("Ордер ",Ticket,TP," модифицирован:)");
break; // Из цикла модифи.
}
//--------------------------------------------------- 7 --------------------int Error=GetLastError(); // Не получилось :(switch(Error) // Преодолимые ошибки
{
case0 : loop = true; break;
case4 : er=("Торговый сервер занят");
case135: er=("Цена изменилась");
case137: er=("Брокер занят");
case138: er=("Новые цены");
case146: er=("Подсистема торговли занята. Пробуем ещё..");
Message(er);
Sleep(2); // Простое решение
RefreshRates(); // Обновим данныеcontinue;
case136: er=("Нет цен");
Message(er);
while(RefreshRates()==false) // До нового тикаSleep(5); // Задержка в цикле
cnt++;
continue;
default:er=StringFormat("Ошибка: %d",Error); // Другие варианты
Message(er);
loop = true; // Выход из whilebreak; // Выход из switch
}
//--------------------------------------------------------------------------------
} // Окончание while
}
} // Окончание ifif (OrderType()==OP_SELL &&(mn<0 || OrderMagicNumber()==mn))
{
int Ticket=OrderTicket();
Price_Open = OrderOpenPrice();
Market_Pi=MarketInfo(OrderSymbol(), MODE_BID);
point=MarketInfo(OrderSymbol(), MODE_POINT);
if (point==0) if (StringFind(sym, "JPY")<0) point=0.0001; else point=0.01;
if (point==0) if (StringFind(sym, "XAU")<0) point=0.0001; else point=0.001;
double Sorri=MathRound(MathAbs(Price_Open-Market_Pi)/point); //+MarketInfo(OrderSymbol(), MODE_SPREAD);if(Sorri >Deta && OrderProfit()>0)
{
Print("So = ",Sorri,"Price_Open = ",Price_Open,"Mi = ",Market_Pi);
Comment(Ticket);
while (!loop) // Цикл модификации
{
double TP = NormalizeDouble(Ask+TProfit*Point,Digits);
double SL=NormalizeDouble(Bid-(2+MarketInfo(OrderSymbol(), MODE_SPREAD)/point),Digits);
Alert ("Мод------я ",Ticket,". Ждём ответ..");
bool Ans=OrderModify(Ticket,Price_Open,SL,TP,0); //Модифи его!//--------------------------------------------------------------------------------if (Ans==true) // Получилось :)
{
Alert ("Ордер ",Ticket,TP," модифицирован:)");
break; // Из цикла модифи.
}
//--------------------------------------------------- 7 --------------------int Error=GetLastError(); // Не получилось :(switch(Error) // Преодолимые ошибки
{
case0 : loop = true; break;
case4 : er=("Торговый сервер занят");
case135: er=("Цена изменилась");
case137: er=("Брокер занят");
case138: er=("Новые цены");
case146: er=("Подсистема торговли занята. Пробуем ещё..");
Message(er);
Sleep(2); // Простое решение
RefreshRates(); // Обновим данныеcontinue;
case136: er=("Нет цен");
Message(er);
while(RefreshRates()==false) // До нового тикаSleep(5); // Задержка в цикле
cnt++;
continue;
default:er=StringFormat("Ошибка: %d",Error); // Другие варианты
Message(er);
loop = true; // Выход из whilebreak; // Выход из switc}
}
}
}//
}
}
}
} //--------------------------Выход из цикла forreturn(true);
}
Déplacer le stop vers Breakeven si le prix actuel a dépassé le prix d'ouverture de
Deta
pips. Je reçois une erreur 4051. Tout le tankbuilding est dans le fichier (si vous en avez besoin).l'indicateur WMA est utilisé. Pas le mien, espérons qu'il ne soit pas cassé.
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
Bonjour, j'essaie de faire en sorte que la fonction
Déplacer le stop vers Breakeven si le prix actuel a dépassé le prix d'ouverture de
pips. Je reçois une erreur 4051. Tout le tankbuilding est dans le fichier (si vous en avez besoin).l'indicateur WMA est utilisé. Pas le mien, espérons qu'il ne soit pas cassé.
Paramètre de fonction non valide. A priori, vous n'avez pas de contrôle pour les ordres d'arrêt minimum. Ajoutez-le, c'est un contrôle obligatoire pour le marché.
......
double TP = NormalizeDouble(Ask+TProfit*Point,Digits);
double SL=NormalizeDouble(Bid-(2+MarketInfo(OrderSymbol(), MODE_SPREAD)/point),Digits);
TP=New_Stop(TP);
SL=New_Stop(SL);
......
double New_Stop(double Parametr) // Проверка стоп-прик.
{
double Min_Dist=MarketInfo(Symbol(),MODE_STOPLEVEL);// Миним. дистанцияif(Parametr<Min_Dist) // Если меньше допуст.
{
Parametr=Min_Dist; // Установим допуст.Alert("Увеличена дистанция стоп-приказа или цены открытия отложенных ордеров.");
}
return(Parametr); // Возврат значения
}
Paramètre de fonction non valide. À première vue, vous n'avez pas de contrôle pour les ordres stop minimums. Ajoutez-le, c'est un contrôle obligatoire pour le marché.
comment, dans un indicateur fonctionnant en M1, obtenir les données de D1, si l'indicateur est basé sur des formules et qu'il n'y a pas d'appel d'indicateurs standards tels que =iMA(Symbol(),Period(),....
Bonne journée à tous. J'ai été confronté à cette situation sur mon compte de démonstration (pas sur mon compte réel)). Plusieurs positions ont été fermées par le conseiller expert lorsqu'il a atteint un certain niveau de profit cumulé, supposé positif, alors que toutes les positions étaient en bonne perte, l'événement s'est produit à 2-50 sur le serveur (cela ne ressemble pas à un transfert de positions). L'Expert Advisor (fait par moi) calcule le profit total de toutes les positions ouvertes et le compare à une valeur prédéfinie, c'est-à-dire que l'image des barres dans la fenêtre est comme non impliquée, bien qu'elle montre un léger mouvement dans la direction qui fournit le profit. Le conseiller expert fonctionne sur une minuterie qui a été réglée à 100 ms. Je n'exclus pas l'idée du courtier car le même Expert Advisor d'un autre courtier avec les mêmes paramètres mais travaillant avec des ticks du prix a facilement perdu du profit. J'avais une réserve sur mon compte, le conseiller expert a signalé la fermeture du bloc d'atteinte des bénéfices.Peut-être que quelqu'un a une idée de ce qui a pu se passer.
Evgeny Vlasov: Bonne journée à tous. J'ai rencontré une telle situation sur un compte de démonstration (pas sur le compte réel)). Plusieurs positions ont été fermées par le conseiller expert lorsqu'il a atteint un certain montant de profit cumulé, supposé positif, alors que toutes les positions étaient en bonne perte, l'événement s'est produit à 2-50 sur le serveur (cela ne ressemble pas à un transfert de positions). L'Expert Advisor (fait par moi) calcule le profit total de toutes les positions ouvertes et le compare à une valeur prédéfinie, c'est-à-dire que l'image des barres dans la fenêtre est comme non impliquée, bien qu'elle montre un léger mouvement dans la direction qui fournit le profit. Le conseiller expert fonctionne sur une minuterie qui a été réglée à 100 ms. Je n'exclus pas l'idée du courtier car le même Expert Advisor d'un autre courtier avec les mêmes paramètres mais travaillant avec des ticks du prix a facilement perdu du profit. J'avais une réserve sur mon compte, le conseiller expert a signalé la fermeture du bloc d'atteinte des bénéfices.Peut-être que quelqu'un a une idée de ce qui a pu se passer.
C'est pour vous dans la branche des télépathes)))). C'était ici quelque part.)
Et sur le sujet... JE NE SAIS PAS. Pas de code, pas de marché, rien... Définitivement des télépathes))))
Pouvez-vous me dire comment supprimer mon propre fil de discussion du forum ?
Rien. Quel est le sujet ?
Rien. Quel est le sujet ?
https://www.mql5.com/ru/forum/348294
Merci ))))
Bonjour, j'essaie de faire en sorte que la fonction
Déplacer le stop vers Breakeven si le prix actuel a dépassé le prix d'ouverture de
pips. Je reçois une erreur 4051. Tout le tankbuilding est dans le fichier (si vous en avez besoin).l'indicateur WMA est utilisé. Pas le mien, espérons qu'il ne soit pas cassé.
Bonjour, j'essaie de faire en sorte que la fonction
Déplacer le stop vers Breakeven si le prix actuel a dépassé le prix d'ouverture de
pips. Je reçois une erreur 4051. Tout le tankbuilding est dans le fichier (si vous en avez besoin).l'indicateur WMA est utilisé. Pas le mien, espérons qu'il ne soit pas cassé.
Paramètre de fonction non valide. A priori, vous n'avez pas de contrôle pour les ordres d'arrêt minimum. Ajoutez-le, c'est un contrôle obligatoire pour le marché.
Paramètre de fonction non valide. À première vue, vous n'avez pas de contrôle pour les ordres stop minimums. Ajoutez-le, c'est un contrôle obligatoire pour le marché.
Merci ! Je vais regarder.
comment, dans un indicateur fonctionnant en M1, obtenir les données de D1, si l'indicateur est basé sur des formules et qu'il n'y a pas d'appel d'indicateurs standards tels que =iMA(Symbol(),Period(),....
comment calculer ?
Bonne journée à tous. J'ai rencontré une telle situation sur un compte de démonstration (pas sur le compte réel)). Plusieurs positions ont été fermées par le conseiller expert lorsqu'il a atteint un certain montant de profit cumulé, supposé positif, alors que toutes les positions étaient en bonne perte, l'événement s'est produit à 2-50 sur le serveur (cela ne ressemble pas à un transfert de positions). L'Expert Advisor (fait par moi) calcule le profit total de toutes les positions ouvertes et le compare à une valeur prédéfinie, c'est-à-dire que l'image des barres dans la fenêtre est comme non impliquée, bien qu'elle montre un léger mouvement dans la direction qui fournit le profit. Le conseiller expert fonctionne sur une minuterie qui a été réglée à 100 ms. Je n'exclus pas l'idée du courtier car le même Expert Advisor d'un autre courtier avec les mêmes paramètres mais travaillant avec des ticks du prix a facilement perdu du profit. J'avais une réserve sur mon compte, le conseiller expert a signalé la fermeture du bloc d'atteinte des bénéfices.Peut-être que quelqu'un a une idée de ce qui a pu se passer.
C'est pour vous dans la branche des télépathes)))). C'était ici quelque part.)
Et sur le sujet... JE NE SAIS PAS. Pas de code, pas de marché, rien... Définitivement des télépathes))))