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
Me gustaría ayudar con esta función de la que hablas pero parece que no puedo simplemente entender tu lógica. Esto realmente no tiene nada que ver con otra lógica de la estrategia .
Simplemente me gustaría saber esto.
Si tienes 1 lote de compra a 1,4110 y 2 de venta a 1,4200. ¿A qué precio crees que tienes 6 pips de ganancia?Hola Christina,
en mi gestión de posiciones nunca, el 1 lote de compra cierra con beneficio, antes de que se abran 2 lotes de venta.(vende nunca porque el 1er lote de compra cerró con beneficio, espera la siguiente señal)
volviendo a tu ejemplo:
pero hay una línea en aproximadamente 1.4175, donde 2 lotes de venta (ganancia arriba, mercado abajo) y 1 lote de compra (ganancia abajo, mercado abajo) son precio igual (breakeven 0), así que en 1.4169 6 pips de ganancia están listos - entonces yo cerraría todas las órdenes
IX
Hola Christina,
en mi gestión de posiciones nunca, el 1 lote de compra cierra con beneficio, antes de que se abran 2 lotes de venta.(vende nunca porque el 1er lote de compra cerró con beneficio, espera la siguiente señal)
volviendo a tu ejemplo:
pero hay una línea en aproximadamente 1.4175, donde 2 lotes de venta (ganancia arriba, mercado abajo) y 1 lote de compra (ganancia abajo, mercado abajo) son precio igual (breakeven 0), así que en 1.4169 6 pips de ganancia están listos - entonces yo cerraría todas las órdenes
IXPorque mi ejemplo es 1.4110 y 1.4200. Este es mi cálculo:
En primer lugar, a 1,4170 (sin tener en cuenta los spreads) estamos en equilibrio. Ahora tenemos 2 lotes de venta con ganancia de 30 pips cada uno y 1 lote de compra con pérdida de 60 pips, por lo que estamos en equilibrio en términos de dólares.
Si exactamente con mi ejemplo, usted debería tener 6 pips de ganancia en general a 1.4164.
En 1.4164 (sin considerar los spreads) tenemos 2 lotes de venta con ganancia de 36 pips cada uno y 1 lote de compra con pérdida de 54 pips, así que ganamos 72 pips con las ventas y perdemos 54 pips con las compras. En general para el grupo de operaciones, usted tiene 3 lotes con una ganancia de 18 pips. Así que es más razonable considerar que ahora tiene 6 pips de ganancia.
Sin embargo las cosas se complican de nuevo debido a los spreads. Porque si la oferta es de 1.4164, la demanda puede ser de 1.4166, así que sus ventas sólo tienen 34 pips de ganancia cada una. En total para el grupo de operaciones, usted tiene 3 lotes con una ganancia de 14 pips. Así que ahora, de hecho, usted tiene 4,7 pips de ganancia.
Si llevo este ejemplo un paso más allá, si tenemos 2 compras y 3 ventas. Entonces a 1,4164 se alcanza el punto de equilibrio.
Si no tenemos en cuenta los spreads, entonces necesitamos 30 pips de ganancia total para tener 5 pips de ganancia en cada lote. Así que los 6 pips de ganancia estarían en el precio de 1,4134, ¿es esto correcto?
Probablemente el sistema no tendrá este tipo de situación, es el principio que quiero conseguir. ¿Está de acuerdo con el cálculo anterior?
Porque mi ejemplo es 1,4110 y 1,4200. Este es mi cálculo:
En primer lugar, a 1,4170 (sin considerar los spreads) estamos en equilibrio. Ahora tenemos 2 lotes de venta con ganancia de 30 pips cada uno y 1 lote de compra con pérdida de 60 pips, así que estamos en equilibrio en términos de dólares.
Si exactamente con mi ejemplo, usted debería tener 6 pips de ganancia en general a 1.4164.
En 1.4164 (sin considerar los spreads) tenemos 2 lotes de venta con ganancia de 36 pips cada uno y 1 lote de compra con pérdida de 54 pips, así que ganamos 72 pips con las ventas y perdemos 54 pips con las compras. En general para el grupo de operaciones, usted tiene 3 lotes con una ganancia de 18 pips. Así que es más razonable considerar que ahora tiene 6 pips de ganancia.
Sin embargo las cosas se complican de nuevo debido a los spreads. Porque si la oferta es de 1.4164, la demanda puede ser de 1.4166, por lo que sus ventas sólo tienen 34 pips de ganancia cada una. En total para el grupo de operaciones, usted tiene 3 lotes con una ganancia de 14 pips. Así que ahora, de hecho, usted tiene 4,7 pips de ganancia.
Si llevo este ejemplo un paso más allá, si tenemos 2 compras y 3 ventas. Entonces a 1,4164 se llega al punto de equilibrio.
Si no tenemos en cuenta los spreads, entonces necesitamos 30 pips de ganancia total para tener 5 pips de ganancia en cada lote. Así que los 6 pips de ganancia serían al precio de 1,4134, ¿es esto correcto?
Su sistema probablemente no tendrá este tipo de situación, es el principio que quiero conseguir. ¿Está de acuerdo con el cálculo anterior?Cristina,
estoy de acuerdo, ¡tienes 100% de razón con ambos cálculos!
Hola, Michael,
Estoy muy ocupado en los últimos días, ya he hecho esto, pero necesita más tiempo para armarlo. Lo publicaré aquí una vez que encuentre algo de tiempo para hacerlo en los próximos días. Chrisitna
Hola, Michael, estoy muy ocupado en los últimos días, ya he hecho esto, pero necesita más tiempo para armarlo. Lo publicaré aquí una vez que encuentre algo de tiempo para hacerlo en los próximos días. Chrisitna
Hola Christina,
no hay problema, tómate tu tiempo, ¡siempre aprecio tus sugerencias!
Michael
necesito ayuda
¡Hola a todos !
Esta es mi idea:necesito 2 buffers indicadores en separate_window,1 es devupBuffer[];2 es devdwBuffer[]. Por ejemplo si tenemos cinco digitales 1,2,3,4,5 su promedio es3.Entonces los datos son mayores que la media de 3 4 y 5 devupBuffer={【(4-promedio)*(4-promedio)】+【(5-promedio)*(5-promedio)】}/Desviación estándar(1,2,3,4,5)*Desviación estándar(1,2,3,4,5).Los datos son menores que la media de 3 1 y 2 devdwBuffer={【(1-promedio)*(1-promedio)】+【(2-promedio)*(2-promedio)】}/Desviación estándar(1,2,3,4,5)*Desviación estándar(1,2,3,4,5).
¿Por qué este EA no puede comprar o vender?
hola, soy muy nuevo en esto de la programación con Meta... por favor ayuda...
Estoy trabajando con un sistema en Stochastics con dos niveles, 25 y 75...
Un comercio sólo ...
si el PRINCIPAL y la SEÑAL están ambos por debajo de 25 y se cruzan, COMPRAR.
si la PRINCIPAL y la SEÑAL se cruzan por encima de 25, CERRAR COMPRA.
si la MAIN y la SIGNAL están ambas por encima de 75 y se cruzan, VENDER.
si la PRINCIPAL y la SEÑAL se cruzan (no es necesario que estén por debajo de 75), CIERRE VENDER.
eso es todo...
//| StochCross.mq4 |
//| RobertEli |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "RobertEli"
#property link "http://www.metaquotes.net"
//--- input parameters
extern double TakeProfit=250.0;
extern double Lots=0.01;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Confirm (double line1, double line2, int level_buy, int level_sell)
{
static int confirmation = 0;
if ((line1 < level_buy) && (line2 < level_buy)) confirmation = 1; //confirm BUY, when two lines are below level_buy
if ((line1 > level_sell) && (line2 > level_sell)) confirmation = 2; //confirm SELL, when two lines are above level_sell
if ((line1 > level_buy) && (line2 > level_buy)) confirmation = 3; //confirm CLOSE BUY, when two lines are above level_buy
if ((line1 < level_sell) && (line2 < level_sell)) confirmation = 4; //confirm CLOSE SELL, when two lines are below level_sell
//if ((line1 > level_buy_close) && (line2 > level_buy_close)) confirmation = 3; //confirm CLOSE BUY
//if ((line1 < level_sell_close) && (line2 < level_sell_close)) confirmation = 4; //confirm CLOSE SELL
//else return (0);
return (confirmation);
}
int Crossed (double line1, double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if (line1 > line2) current_direction = 1; //UP
if (line1 < line2) current_direction = 2; //DOWN
if (current_direction != last_direction) //changed direction
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket;
double Stoch_main, Stoch_sign;
if (Bars < 100)
{
Print("BARS less than 100");
return (0);
}
if (TakeProfit < 10)
{
Print("TakeProfit less than 10");
return (0);
}
/*
Stoch_main = iStochastic (NULL,15,21,8,13,MODE_SMA,1,MODE_MAIN,0);
Stoch_sign = iStochastic (NULL,15,21,8,13,MODE_SMA,1,MODE_SIGNAL,0);
*/
Stoch_main = iStochastic (NULL,0,30,20,12,MODE_SMA,1,MODE_MAIN,0);
Stoch_sign = iStochastic (NULL,0,30,20,12,MODE_SMA,1,MODE_SIGNAL,0);
/*
Stoch_main = iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
Stoch_sign = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
*/
int isCrossed = Crossed(Stoch_main,Stoch_sign);
int isConfirmed = Confirm(Stoch_main,Stoch_sign,25,75);
int total = OrdersTotal();
if (total == 0)
{
if ((isCrossed == 1) && (isConfirmed == 1))
{
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"Buy at " + Ask,24848,0,Green);
if (ticket > 0)
{
if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY Order opened: " +Ask ,OrderOpenPrice());
else Print ("Error Opening BUY Order: ", GetLastError());
return (0);
}
}
if ((isCrossed == 2) && (isConfirmed == 2))
{
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"Sell at " + Bid,24848,0,Red);
if (ticket > 0)
{
if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL Order opened: " +Bid ,OrderOpenPrice());
else Print ("Error Opening SELL Order: ", GetLastError());
return (0);
}
}
return (0);
}
else
{
for (cnt = total; cnt < 0; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderType() <= OP_SELL && OrderSymbol() == Symbol())
{
if (OrderType() == OP_BUY) //the trade was a Buy position
{ //check for closing)
if ((isCrossed == 2) && (isConfirmed == 3))
//if (isCrossed == 2)
{ //change of direction
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //close Buy position
return (0);
}
}
else // the trade was a SELL position
{
//should it be closed?
//if ((isCrossed == 1) && (isConfirmed == 4))
if (isCrossed == 1) //Closing the SELL need not to be below the level_buy... it's very dangerous to wait for it...
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //Sell position is now closed
return (0);
}
}
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+EA no puede hacer lo que se supone que tiene que hacer, ¡AYUDA!
hola, soy realmente nuevo en esto de la programación en mq4 pero he leído los tutoriales de codersgurus (¡muchas gracias!) así que creo que puedo entender algo... Sin embargo, he hecho este EA que se basa en MOVING AVERAGES... ¡PERO TERRIBLEMENTE NO FUNCIONA COMO DEBERÍA!
las reglas aquí son muy simples...
1. MA_04_1H (significa período de media móvil 4 para el marco de tiempo de 1 hora) cruza por encima de MA_14_1H,
Confirmarlo con MA_04_4H estar por encima de MA_14_4H (la tendencia es alcista) ------> ¡Comprar!
2. MA_04_1H cruza por debajo de MA_14_1H,
confirme con MA_04_4H que está por debajo de MA_14_4H (la tendencia es a la baja)------> ¡VENDER!
3. cuando la MA_04_1H se cruce con la MA_14_1H, cierre esa orden (puede iniciar una nueva orden dadas las reglas #1 y #2)
4. una sola operación... (si es de COMPRA, cerrar esa COMPRA. después de eso, VENDER si es necesario)
He hecho 2 funciones: Cruzada, y Confirmada.
Cruzado es para el marco de tiempo de 1 hora.
Confirmado es para el marco de tiempo de 4 horas.
¿alguien puede ayudarme a depurar esto?
//| MACross1TradeOnly.mq4 |
//| RobertEli |
//| |
//+------------------------------------------------------------------+
// this will work on MA_04, and MA__14
#property copyright "RobertEli"
#property link ""
extern double Lots = 0.01;
extern int stoploss_value = 10; // $10
bool up = 0, //UP direction, when MA_04 is above MA_14
down = 0, //DOWN direction, when MA_14 is above MA_04
change = 0, //when the MA_04 and MA_14 cross
firsttime = true; //first time for direction_prev
int direction_curr = 0; // 1 if UP, 2 if down...
int direction_prev = 0; // this will hold previous value of direction_curr
int direction_trend= 0; // trend direction for confirmation
int cross = 0; // if direction_curr and direction_prev changes course
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1, double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if (line1 - line2 > 0)//(line1 > line2)
{
current_direction = 1; //UP
if (firsttime == true)
{
current_direction = 0;
last_direction = 1;
firsttime = false;
return (0);
}
}
if (line1 - line2 < 0)//(line1 < line2)
{
current_direction = 2; //DOWN
if (firsttime == true)
{
current_direction = 0;
last_direction = 2;
firsttime = false;
return (0);
}
}
if ((current_direction != last_direction) && (firsttime == false)) //changed direction
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (last_direction);
}
}
int Confirmed (double line1, double line2)
{
int trend;
if (line1 > line2) trend = 1; // trend direction is UP
if (line1 < line2) trend = 2; // trend direction is DOWN
return (trend);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt,ticket, total;
//double MA_04, MA_07 , MA_14 , MA_21 , MA_28; //MOVING AVERAGES with their corresponding period
if (Bars < 100) { Print ("Bars less than 100."); return (0); }
double MA_04_1H = iMA(NULL,60,04,0,MODE_EMA,PRICE_CLOSE,0);
double MA_14_1H = iMA(NULL,60,14,0,MODE_EMA,PRICE_CLOSE,0);
double MA_04_4H = iMA(NULL,240,04,0,MODE_EMA,PRICE_CLOSE,0);
double MA_14_4H = iMA(NULL,240,14,0,MODE_EMA,PRICE_CLOSE,0);
//double stoploss = stoploss_value / (Lots * 100000);
//new code from v_1
cross = Crossed (MA_04_1H,MA_14_1H); // =1 for UP, =2 for DOWN
direction_trend = Confirmed (MA_04_4H, MA_14_4H); // =1 for UP, =2 for DOWN
total = OrdersTotal();
if (total == 0)
{
if((cross == 1) && (direction_trend == 1))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,/*Ask-stoploss*/0,0,"Buy at: "+ Ask,12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice(),",<<<<",OrderStopLoss());
}
else Print("Error opening BUY order : ",GetLastError());
cross = 0;
return(0);
}
if((cross == 2) && (direction_trend == 2))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,/*Bid+stoploss*/0,0,"Sell at: "+ Bid,12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
cross = 0;
return(0);
}
}
if (total == 1)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
// bool no_buy_sell = ((OrderTakeProfit() 0));
if ((OrderType()==OP_BUY) && (cross == 2) )// && (no_buy_sell))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
//OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+stoploss,0,"Sell at: "+ Bid,12345,0,Red);
return (0);
}
else if ((OrderType()==OP_SELL) && (cross == 1) )// && (no_buy_sell))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
//OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-stoploss,0,"Buy at: "+ Ask,12345,0,Green);
return (0);
}
}
}
else return (0);
//----
return(0);
}
//+------------------------------------------------------------------+por favor, ignorar que el post anterior de la mía ... me desechó esa idea ... estoy trabajando en esto ahora ... así que por favor ayuda ...