//-------------------------------------------------------------------------------// Функция модификации позиции,безуыток, трейлинг-стоп //-------------------------------------------------------------------------------+ 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);
}
Parar para o Breakeven se o preço atual tiver ultrapassado o preço aberto em
Deta
pips. Estou recebendo um erro 4051. Toda a construção do tanque está no arquivo (se você precisar). O indicador WMA é usado. Não é meu, espero que não esteja quebrado.
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
Parar para o Breakeven se o preço atual tiver ultrapassado o preço aberto em
pips. Estou recebendo um erro 4051. Toda a construção do tanque está no arquivo (se você precisar). O indicador WMA é usado. Não é meu, espero que não esteja quebrado.
Parâmetro de função inválida. Suponho que você não tenha um cheque para ordens de parada mínimas. Acrescente-o, é um controle obrigatório para o mercado.
......
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); // Возврат значения
}
Parâmetro de função inválida. Num relance, você não tem um cheque para ordens de parada mínimas. Acrescente-o, é um controle obrigatório para o mercado.
como em um indicador trabalhando em M1 para obter dados de D1, se o indicador é baseado em fórmulas e não há chamada de indicadores padrão como =iMA(Symbol(),Period(),....
Bom dia a todos. Enfrentei esta situação em minha conta Demo (não em minha conta real)). Várias posições foram fechadas pelo consultor especializado quando este atingiu um certo nível de lucro acumulado, supostamente positivo, enquanto todas as posições estavam com uma boa perda, o evento ocorreu a 2-50 no servidor (não parece ser uma transferência de posições). O Expert Advisor (feito por mim) calcula o lucro total de todas as posições abertas e o compara com um valor pré-definido, ou seja, a imagem das barras na janela é como se não estivesse envolvida, embora mostre um leve movimento na direção que proporciona lucro. O Expert Advisor trabalha em um temporizador que foi ajustado para 100ms. Não excluo a idéia de corretor como o mesmo Expert Advisor de outro corretor com as mesmas configurações, mas trabalhar com carrapatos do preço perdeu facilmente o lucro. Eu tinha uma reserva em minha conta, o consultor especializado relatou o fechamento do bloco de obtenção de lucro.Talvez alguém tenha algumas idéias que poderiam ter dado errado.
Evgeny Vlasov: Bom dia a todos. Encontrei tal situação em uma conta de demonstração (não na real)). Várias posições foram fechadas pelo consultor especializado quando este atingiu um certo nível de lucro acumulado, supostamente positivo, enquanto todas as posições estavam com uma boa perda, o evento ocorreu a 2-50 no servidor (não parece ser uma transferência de posições). O Expert Advisor (feito por mim) calcula o lucro total de todas as posições abertas e o compara com um valor pré-definido, ou seja, a imagem das barras na janela é como se não estivesse envolvida, embora mostre um leve movimento na direção que proporciona lucro. O Expert Advisor trabalha em um temporizador que foi ajustado para 100ms. Não excluo a idéia de corretor como o mesmo Expert Advisor de outro corretor com as mesmas configurações, mas trabalhar com carrapatos do preço perdeu facilmente o lucro. Eu tinha uma reserva em minha conta, o consultor especializado relatou o fechamento do bloco de obtenção de lucro.Talvez alguém tenha algumas idéias que poderiam ter dado errado.
Isso é para você no ramo do telepata)))) Estava aqui em algum lugar).
E sobre o assunto... NÃO CONHECO. Sem código, sem mercado, sem nada... Definitivamente telepatas))))
Você pode me dizer como remover meu próprio tópico do fórum?
Nada. Qual é o tema?
Nada. Qual é o tema?
https://www.mql5.com/ru/forum/348294
Obrigado ))))
Olá, estou tentando fazer a função
Parar para o Breakeven se o preço atual tiver ultrapassado o preço aberto em
pips. Estou recebendo um erro 4051. Toda a construção do tanque está no arquivo (se você precisar). O indicador WMA é usado. Não é meu, espero que não esteja quebrado.
Olá, estou tentando fazer a função
Parar para o Breakeven se o preço atual tiver ultrapassado o preço aberto em
pips. Estou recebendo um erro 4051. Toda a construção do tanque está no arquivo (se você precisar). O indicador WMA é usado. Não é meu, espero que não esteja quebrado.
Parâmetro de função inválida. Suponho que você não tenha um cheque para ordens de parada mínimas. Acrescente-o, é um controle obrigatório para o mercado.
Parâmetro de função inválida. Num relance, você não tem um cheque para ordens de parada mínimas. Acrescente-o, é um controle obrigatório para o mercado.
Obrigado! Vou dar uma olhada.
como em um indicador trabalhando em M1 para obter dados de D1, se o indicador é baseado em fórmulas e não há chamada de indicadores padrão como =iMA(Symbol(),Period(),....
como faço para calcular?
Bom dia a todos. Encontrei tal situação em uma conta de demonstração (não na real)). Várias posições foram fechadas pelo consultor especializado quando este atingiu um certo nível de lucro acumulado, supostamente positivo, enquanto todas as posições estavam com uma boa perda, o evento ocorreu a 2-50 no servidor (não parece ser uma transferência de posições). O Expert Advisor (feito por mim) calcula o lucro total de todas as posições abertas e o compara com um valor pré-definido, ou seja, a imagem das barras na janela é como se não estivesse envolvida, embora mostre um leve movimento na direção que proporciona lucro. O Expert Advisor trabalha em um temporizador que foi ajustado para 100ms. Não excluo a idéia de corretor como o mesmo Expert Advisor de outro corretor com as mesmas configurações, mas trabalhar com carrapatos do preço perdeu facilmente o lucro. Eu tinha uma reserva em minha conta, o consultor especializado relatou o fechamento do bloco de obtenção de lucro.Talvez alguém tenha algumas idéias que poderiam ter dado errado.
Isso é para você no ramo do telepata)))) Estava aqui em algum lugar).
E sobre o assunto... NÃO CONHECO. Sem código, sem mercado, sem nada... Definitivamente telepatas))))