Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Código Atr decresing ???
Atr decresing - ¿cuál es el código mql4?
--------------------------------------------------------------------------------
Atr decresing
¿cuál es el código mql4?
Me gustaría que mi ea no abriera posiciones si
el ATR d1 es > ATR d1 (-1)
Cómo codificar 3 niveles de Trailing Stops
TrailingStop = 50;
TrailingStop_Over100 =30;
TrailingStop_Over150 = 20;
Nivel 1: 0-100 pip de beneficio - TS es de 50 pips
Nivel 2: 101-150 pip de beneficio - el TS cambia a 30 pips
Nivel 3: 151+ pip de beneficio - TS cambia a 20 pips
¿Cómo codifico esto( movimiento dedirección positiva ) para que el TS cambie una vez que la ganancia de pips aumente?
Dave
<<<
Realmente apreciaría la experiencia de un codificador.
después de la primera cruz establecer varias barras de distancia
Hola a todos los gurús de la programación aquí soy un novato en la programación de mql4 y me quedé atascado en un problema,
por lo que es la siguiente :
Tengo 2 EMA 5 y 20 PERIOD_15 y respectivamente 5 y 20 EMA en PERIOD_H1.
Así que cuando entro en una posición con el primer cruce PERIOD_M15, el asesor cierra la posición inmediatamente en la misma barra si el precio se mueve en sentido contrario y hace un cruce inverso. Esto es programáticamente correcto, pero mi problema real es esperar a las siguientes 1-2 o más barras y luego cerrar la posición si se encuentra el cruce.
Si hay algún tema relacionado con el mismo problema aquí, puede enviarme un enlace.
y los moderadores pueden eliminar el post .
¡Gracias de antemano!
-- si ya tiene una posición abierta
-- si se producen demasiados cruces
--espera un poco antes de salir de esta posición
--esto debería resolver los cruces repetidos en una barra
if(firstCross == 1)
{
---------------------------//Close, comprueba si se imprimen las siguientes barras después de OpenOrderPrise()-----------------------------------
if(openbar <= closebar)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); // cerrar posición
return(0); // salir
}si no
return(0);
}
bueno he encontrado una solución espeluznante que ya he adjuntado
Si usted tiene algunas ideas de optimización para el cambio de tiempo o ideas de optimización en el código en absoluto, voy a apreciar cualquier sugerencia thx de antemano
Necesito su ayuda
Hola traders,
Realmente apreciaré si alguien puede ayudarme a desarrollar una alerta para este indicador ( MT4-LevelStop-Reverse-vB0-3).
Quiero que la alerta suene inmediatamente cuando la flecha aparezca.
Gracias de antemano.
Hola,
uso su lucky v2, y quiero saber el código de añadir texto en el gráfico que no está usando el objeto--label-->ver la imagen ~~
y el usuario no puede del texto~ ~
el texto está siendo así-- "Your lucky es gratis y aún está en desarrollo..."
¿como codificarlo?
graciasUtilice el comando Comment()
Comentario - Documentación MQL4
como codificar un texto ineliminable en un gráfico
hola
uso su lucky v2, y quiero saber el código de añadir texto en el gráfico que no está usando el objeto--label-->ver la imagen ~~
y el usuario no puede borrar el texto~ ~
el texto es asi-- "Your lucky v2 EA es gratis y aun esta en desarrollo..."
¿como se puede codificar?
gracias
Orden múltiple y trailing múltiple
En mi Ea uso múltiples órdenes, una a mercado y otra con límite de compra/venta
Cuando obtengo las 3 entradas como en el ejemplo, quiero que el trailing comience y funcione conjuntamente.
Un ejemplo
1 entrada a 1.50
2entrada a 1.4950
3 entradas a 1.4930
el trailing es de 50 puntos, pero quiero que empiece cuando llegue a 1.5050 no antes, si utilizo el trailing normal cuando el precio llegue a 1.5001 la segunda entrada (si se llena) empieza a seguir pero no quiero eso... quiero que el trailing empiece con 50 pip y todo al mismo precio así que a 1.5050
entonces es mejor guardar la entrada para entender que orden utilizo?
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-Point*StopLoss,Ask+TakeProfit*Point,0,0,Green);
LastClosedBar = Time[0];
RefreshRates();
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
entratalong= OrderOpenPrice( );
ticket2=OrderSend(Symbol(),OP_BUYLIMIT,Lots_2ingresso,entratalong-Point*Secentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,1,0,Magenta); // NULL, c'e il null in + //
ticket3=OrderSend(Symbol(),OP_BUYLIMIT,Lots_3ingresso,entratalong-Point*Terzentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,2,0,Magenta); // buono dei test //
[/CODE]
Here the trailign stop, it don't work the trail 1 e trail 2 with at the same time i control the ticket!!!
[CODE]
int TrailStop ()
{
int cnt,result,total=OrdersTotal();
double gain2=Lots_2ingresso;
double gain3=Lots_2ingresso;
int ticket,ticket2,ticket3;
for(cnt = total-1; cnt >= 0; cnt--)
{
RefreshRates();
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if ((OrderSymbol() == Symbol()) && (OrderProfit() > 0.00))
{
if (OrderType()==OP_BUY && OrderTicket()==ticket )
{
if(Bid - OrderOpenPrice() > Point * TrailingStop )
{
if(OrderStopLoss() < Bid - Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
for(cnt = total-1; cnt >= 0; cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderType()!=OP_SELL && OrderType()!=OP_BUY) //&& trail==1 && OrdersTotal() > 1 )
result =OrderDelete(OrderTicket());
}
Alert("sta facendo trail");
}
}
}
// trailing 2 parte X pip dopo
if (OrderType()==OP_BUY && OrderTicket()==ticket2)
{
if(Bid - OrderOpenPrice() > Point * Trailing2)
{
if(OrderStopLoss() < Bid - Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
}
}
}
// trailing 3 parte X pip dopo
if (OrderType()==OP_BUY )
{
if(Bid - OrderOpenPrice() > Point * Trailing3)
{
if(OrderStopLoss() < Bid - Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
}
}
}// fine trailing
Por favor, cambie este código EMA
Este es un excelente código de: Coders Guru. ¿Puede alguien por favor cambiar para mí. Necesito que sólo cerrar las operaciones abiertas. He creado un sistema que me dice cuando abrir las operaciones y no quieren sentarse en el equipo todo el día
con el fin de cerrar las operaciones. Gracias equipo.
Cambia el código por favor
Este es un excelente código de: Coders Guru. Puede alguien por favor cambiarlo para mí. Necesito que solo cierre las operaciones abiertas. He creado un sistema que me dice cuando abrir operaciones y no quiero sentarme en la computadora todo el día con el fin de cerrar las operaciones. Gracias equipo.
//+------------------------------------------------------------------+
//| EMA_6_12.mq4 |||
//| Gurú de los codificadores ||||||||||||||||||||||
//+------------------------------------------------------------------+
#property copyright "Coders Guru"
#property link "https://www.forex-tsd.com"
//---- Incluye
#include
//---- Límites de las operaciones
extern double TrailingStop = 40;
extern double TakeProfit = 1000; //cualquier número grande
extern double Lotes = 1;
extern int Slippage = 5;
//--- Opciones externas
extern int CurrentBar = 1;
extern bool UseClose = true;
//--- Configuración de los indicadores
extern int MaMode = 1; /* MODE_SMA 0 MODE_EMA 1 MODE_SMMA 2 MODE_LWMA 3 */
extern int ShortEma = 4
extern int LongEma = 8;
//--- Variables globales
int NúmeroMágico = 123430;
string ComentarioExperto = "EMA_4_8";
bool LimitPairs = false
bool LimitFrame = false
int TimeFrame = 60;
string LP[] = {"EURUSD", "USDJPY", "AUDUSD", "GBPUSD", "EURGBP", "USDCHF"}; // añadir/eliminar los paris que desea limitar.
bool Optimizar = false;
int NumberOfTries = 5;
//+------------------------------------------------------------------
int init()
{
return(0);
}
int deinit()
{
return(0);
}
//+------------------------------------------------------------------
bool isNewSymbol(string current_symbol)
{
//recorrer todos los pedidos abiertos y comparar los símbolos
int total = OrdersTotal();
for(int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
string símbolo_seleccionado = OrderSymbol();
if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)
return (False);
}
return (True);
}
//+------------------------------------------------------------------
int Cruzado()
{
double EmaLongPrevious = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);
double EmaLongCurrent = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar);
double EmaShortPrevious = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);
double EmaShortCurrent = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar);
if (EmaShortPreviousEmaLongCurrent ) return (1); //tendencia alcista
if (EmaShortPrevious>EmaLongPrevious && EmaShortCurrent<EmaLongCurrent ) return (2); //tendencia a la baja
return (0); //en caso contrario
}
//+------------------------------------------------------------------+
int inicio()
{
int cnt, ticket, total,n
double trend ;
if(Bars<100) {Print("barras menores de 100"); return(0);}
if(LimitFrame)
{
if(Period()!=TimeFrame) {Print("¡Este AE no funciona con este TimeFrame!"); return(0);}
}
if(LimitPairs)
{
if(AllowedPair(Symbol()) == false) {Print("¡Este AE no funciona con esta Divisa!"); return(0);}
}
//--- Condiciones de negociación
bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;
if (Crossed() == 1 )
BuyCondition = false
si (Crossed()== 2 )
SellCondition = false;
si (Cruzado ()== 1)
CloseBuyCondition = true;
si (Cruzado ()== 1)
CloseSellCondition = true;
total = OrdersTotal();
if(total < 1 || isNewSymbol(Symbol()))
{
if(BuyCondition) //<-- Condición de COMPRA
{
ticket = OpenOrder(OP_BUY); //<-- Abrir orden de COMPRA
CheckError(ticket, "BUY");
return(0);
}
if(SellCondition) //<-- Condición de VENTA
{
ticket = OpenOrder(OP_SELL); //<-- Abrir orden de VENTA
CheckError(ticket, "SELL");
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) //<-- Se abre una posición larga
{
if(UseClose)
{
if(CloseBuyCondition) //<-- ¡Cierre la orden y salga!
{
CloseOrder(OrderType()); return(0);
}
}
TrailOrder(OrderType()); return(0); //<-- Trailling the order
}
if(OrderType()==OP_SELL) //<-- Pasar a posición corta
{
if(UseClose)
{
if(CloseSellCondition) //<-- ¡Cierre la orden y salga!
{
CloseOrder(OP_SELL); return(0);
}
}
TrailOrder(OrderType()); return(0); //<-- Trailling the order
}
}
}
return(0);
}
//+------------------------------------------------------------------+
int AbrirOrden(int tipo)
{
int ticket=0;
int err=0;
int c = 0;
if(type==OP_BUY)
{
for(c = 0 ; c < NumberOfTries ; c++)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,Ask+TakeProfit*Point,ExpertComment,MagicNumber,0,Green);
err=GetLastError();
if(err==0)
{
romper;
}
else
{
if(err==4 || err==137 ||err==146 || err==136) //Error de ocupación
{
Sleep(5000);
continuar;
}
else //error normal
{
romper;
}
}
}
}
if(type==OP_SELL)
{
for(c = 0 ; c < NumberOfTries ; c++)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,Bid-TakeProfit*Point,ExpertComment,MagicNumber,0,Red);
err=GetLastError();
if(err==0)
{
romper;
}
else
{
if(err==4 || err==137 ||err==146 || err==136) //Error de ocupación
{
Sleep(5000);
continuar;
}
else //error normal
{
romper;
}
}
}
}
return(ticket);
}
bool CerrarOrden(int tipo)
{
if(OrderMagicNumber() == MagicNumber)
{
if(type==OP_BUY)
return (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet));
si(type==OP_SELL)
return (OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet));
}
}
void OrdenDeTrabajo(int type)
{
if(TrailingStop>0){
if(OrderMagicNumber() == MagicNumber)
{
if(type==OP_BUY)
{
if(Bid-OrderOpenPrice()>Punto*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
}
}
}
if(type==OP_SELL)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
}
}
}
}
}
}
void CheckError(int ticket, string Type)
{
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(Type + " orden abierta : ",OrderOpenPrice());
}
else Print("Error al abrir " + Type + " la orden : ", ErrorDescription(GetLastError());
}
bool AllowedPair(string pair)
{
bool result=false;
for (int n = 0 ; n < ArraySize(LP); n++)
{
if(Symbol() == LP[n])
{
result = true;
}
}
return (resultado);
}