//-------------------------------------------------------------------------------// Функция модификации позиции,безуыток, трейлинг-стоп //-------------------------------------------------------------------------------+ 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);
}
Mover el stop al Breakeven si el precio actual ha superado el precio de apertura en
Deta
pips. Estoy recibiendo un error 4051. Todo el tankbuilding está en el archivo (si lo necesitas).Se utiliza el indicador WMA. El mío no, espero que no esté roto.
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
Mover el stop al Breakeven si el precio actual ha superado el precio de apertura en
pips. Estoy recibiendo un error 4051. Todo el tankbuilding está en el archivo (si lo necesitas).Se utiliza el indicador WMA. El mío no, espero que no esté roto.
Parámetro de función no válido. En una suposición, no tiene un control de las órdenes mínimas de detención. Añádelo, es una comprobación obligatoria para el 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 función no válido. A simple vista, no tiene un control de las órdenes de detención mínimas. Añádelo, es una comprobación obligatoria para el mercado.
cómo en un indicador que trabaja en M1 para obtener los datos de D1, si el indicador se basa en fórmulas y no hay ninguna llamada de indicadores estándar como =iMA(Symbol(),Period(),....
Buenos días a todos. Me he enfrentado a esta situación en mi cuenta Demo (no en la cuenta real)). Varias posiciones fueron cerradas por el Asesor Experto cuando alcanzó un cierto nivel de beneficio acumulado, supuestamente positivo, mientras que todas las posiciones estaban sentadas en una buena pérdida, el evento ocurrió en 2-50 en el servidor (no parece una transferencia de posiciones). El Asesor Experto (hecho por mí) calcula el beneficio total de todas las posiciones abiertas y lo compara con un valor predefinido, es decir, el cuadro de barras en la ventana es como si no interviniera, aunque muestra un ligero movimiento en la dirección que proporciona el beneficio. El Asesor Experto funciona con un temporizador que se ajustó a 100ms. No excluyo la idea del broker ya que el mismo Expert Advisor de otro broker con la misma configuración pero trabajando con ticks del precio ha perdido fácilmente el beneficio. Tenía una reserva en mi cuenta, el Asesor Experto reportó el cierre desde el bloque de obtención de beneficios.Tal vez alguien tiene algunas ideas de lo que podría haber ido mal.
Evgeny Vlasov: Buenos días a todos. Me encontré con una situación así en una cuenta demo (no en la real)). Varias posiciones fueron cerradas por el Asesor Experto cuando alcanzó una cierta cantidad de beneficio acumulado, supuestamente positivo, mientras que todas las posiciones estaban sentadas en una buena pérdida, el evento se produjo en 2-50 en el servidor (no parece una transferencia de posiciones). El Asesor Experto (hecho por mí) calcula el beneficio total de todas las posiciones abiertas y lo compara con un valor predefinido, es decir, el cuadro de barras en la ventana es como si no interviniera, aunque muestra un ligero movimiento en la dirección que proporciona el beneficio. El Asesor Experto funciona con un temporizador que se ajustó a 100ms. No excluyo la idea del broker ya que el mismo Expert Advisor de otro broker con la misma configuración pero trabajando con ticks del precio ha perdido fácilmente el beneficio. Tenía una reserva en mi cuenta, el Asesor Experto reportó el cierre desde el bloque de obtención de beneficios.Tal vez alguien tiene algunas ideas de lo que podría haber ido mal.
Esto es para ti en la rama de telépatas)))) Estaba aquí en alguna parte).
Y sobre el tema... NO LO SÉ. Sin código, sin mercado, sin nada... Definitivamente telépatas))))
¿Pueden decirme cómo eliminar mi propio hilo del foro?
Nada. ¿Cuál es el tema?
Nada. ¿Cuál es el tema?
https://www.mql5.com/ru/forum/348294
Gracias ))))
Hola, estoy tratando de hacer la función
Mover el stop al Breakeven si el precio actual ha superado el precio de apertura en
pips. Estoy recibiendo un error 4051. Todo el tankbuilding está en el archivo (si lo necesitas).Se utiliza el indicador WMA. El mío no, espero que no esté roto.
Hola, estoy tratando de hacer la función
Mover el stop al Breakeven si el precio actual ha superado el precio de apertura en
pips. Estoy recibiendo un error 4051. Todo el tankbuilding está en el archivo (si lo necesitas).Se utiliza el indicador WMA. El mío no, espero que no esté roto.
Parámetro de función no válido. En una suposición, no tiene un control de las órdenes mínimas de detención. Añádelo, es una comprobación obligatoria para el mercado.
Parámetro de función no válido. A simple vista, no tiene un control de las órdenes de detención mínimas. Añádelo, es una comprobación obligatoria para el mercado.
Gracias. Voy a echar un vistazo.
cómo en un indicador que trabaja en M1 para obtener los datos de D1, si el indicador se basa en fórmulas y no hay ninguna llamada de indicadores estándar como =iMA(Symbol(),Period(),....
¿cómo se calcula?
Buenos días a todos. Me encontré con una situación así en una cuenta demo (no en la real)). Varias posiciones fueron cerradas por el Asesor Experto cuando alcanzó una cierta cantidad de beneficio acumulado, supuestamente positivo, mientras que todas las posiciones estaban sentadas en una buena pérdida, el evento se produjo en 2-50 en el servidor (no parece una transferencia de posiciones). El Asesor Experto (hecho por mí) calcula el beneficio total de todas las posiciones abiertas y lo compara con un valor predefinido, es decir, el cuadro de barras en la ventana es como si no interviniera, aunque muestra un ligero movimiento en la dirección que proporciona el beneficio. El Asesor Experto funciona con un temporizador que se ajustó a 100ms. No excluyo la idea del broker ya que el mismo Expert Advisor de otro broker con la misma configuración pero trabajando con ticks del precio ha perdido fácilmente el beneficio. Tenía una reserva en mi cuenta, el Asesor Experto reportó el cierre desde el bloque de obtención de beneficios.Tal vez alguien tiene algunas ideas de lo que podría haber ido mal.
Esto es para ti en la rama de telépatas)))) Estaba aquí en alguna parte).
Y sobre el tema... NO LO SÉ. Sin código, sin mercado, sin nada... Definitivamente telépatas))))