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
Lo he probado durante 20 días y parece que he perdido dinero
Voy a backtest para un año, vamos a ver
pero en primer lugar necesito si puedo modificar los tiempos con sólo cambiar el valor en extern string begin y extern string end?
También lo que noté es que EA hace operaciones múltiples veces al día. Así que debemos decirle a EA que haga sólo una operación para la primera ruptura de este rango Min-Max -/+ 5 pips. También debemos incorporar trailing stop en lugar de sólo stop loss.
También pregunta sobre los números. ¿No es 300 igual a 300 pips? necesitamos que el stop sea de 30 pips y el take profit de 50 pips. Tambien que significa magis = 123?
la misma pregunta para este if(Bid<=(low-0.005)) 0.005 aquí no es 50 pips?
no es extern double stopLoss = 300.0;
extern doubletakeProfit= 500.0;
extern string Begin="02:00";
extern string End="10:00";
extern double distancia = 80;
bool isECN = true
bool cond = false
bool cond2 = false
double low;
double high;
extern double lotes = 0.1;
int magic = 123
int deslizamiento = 1;
string comment = "";
int billete;
También lo que he notado es que EA hace operaciones múltiples veces al día. Así que debemos decirle al EA que haga sólo una operación para la primera ruptura de este rango Min-Max -/+ 5 pips. También debemos incorporar trailing stop en lugar de sólo stop loss.
También pregunta sobre los números. ¿No es 300 igual a 300 pips? necesitamos que el stop sea de 30 pips y el take profit de 50 pips. También ¿qué significa magis = 123?
la misma pregunta para este if(Bid<=(low-0.005)) 0.005 aquí no es 50 pips?
no es extern double stopLoss = 300.0;
extern doubletakeProfit= 500.0;
extern string Begin="02:00";
extern string End="10:00";
extern double distancia = 80;
bool isECN = true
bool cond = false
bool cond2 = false
double low;
double high;
extern double lotes = 0.1;
int magic = 123
int deslizamiento = 1;
string comment = "";
int ticket;[lang=pl]Tienes razón debería ser 0.0005 en lugar de 0.005. 300 y 500 es porque uso cinco dígitos broker es decir 300 poits así que 30 pips.
Por favor, dígame que tipo de trailing stop necesita, sobre el número mágico. Como puedes ver te cambio la magia si no te gusta 123 [/lang]
[lang=pl]Tienes razón debería ser 0.0005 en lugar de 0.005. 300 y 500 es porque uso cinco dígitos broker es decir 300 poits así que 30 pips. Por favor, dígame que tipo de trailing stop necesita, sobre el número mágico. Como puedes ver, te cambio la magia si no te gusta 123 [/lang]
Gracias
Así que este EA ahora hace operaciones sólo una vez en un día, por lo que la ruptura de los niveles puede ocurrir varias veces a través del día, pero sólo puede operar una vez.
También con respecto a EURJPY ya que es una moneda de alto valor, sigo utilizando la misma numeración o muevo 00?
y también puedo yo mismo cambiar o modificar los números de stop loss, take profit, tiempos
con respecto al trailing stop. Me gustaría que cuando el beneficio se eleva 35 pips trailing stop debe seguir para bloquear el beneficio.
Entonces, ¿qué pasa si cambio aquí:
extern double stopLoss = 300.0; (Yo uso 4 dígitos broker así, ¿debo modificar esto?)
extern double takeProfit = 500 . 0;
extern string Begin="0:00"; (¿qué pasa si quiero hacer el rango de tiempo 22:00 del día anterior y 06:00 del día actual?)
extern string End="08:15";
extern double distancia=60;
bool isECN = true;
bool cond = false
bool cond2 = false
double low
double high;
extern double lotes = 0.1;
int magic = 123
int deslizamiento = 1;
string comment = "";
int ticket;
también que pasa si cambio esto
if(Oferta<=(baja-0.005))
Puede que no afecte a la funcionalidad del código ¿verdad?
El único problema que tiene cuando trato de backtest conseguí que como si EA ejecutado pocos oficios en un día, por lo que puede manejar en el código para ejecutar sólo un comercio para un par por día
Hola de nuevo
OK me di cuenta de que la distancia debe ser no 80 para los pares como GBPUSD que tiene un valor más bajo que los pares JPY por lo que en el caso de los pares JPY distancia debe ser 10X que para los pares de bajo valor.
Y de nuevo, no pude entender una cosa cuando lo backtest en el resultado que establece como si EA negociado varias veces en un día en el mismo par.
Entonces, ¿es posible que si el EA entró en posición esta posición debe ser sólo una ese día?
Gracias
Además, ¿qué significa lo siguiente?
int slippage= 1;
stringcomment = "";
int ticket;
y también ¿podría añadir la secuencia de comandos en la EA y cuando el comercio ejecutado es sms-ed o por correo electrónico a mí?
gracias
StopTrading para el día de hoy, si una orden se encuentra en el historial listado
Hola,
tal vez alguien puede guiarme a hacer:
- La orden se ejecuta, se cierra en beneficio o pérdida y aparece en el historial
- ahora quiero deshabilitar el comercio / detener la apertura de nuevas órdenes en este par (símbolo) para todo el día
- al día siguiente, una nueva orden puede ser ejecutada
es como una función"Max Trades Per Bar", pero basada en el historial.
varios fragmentos de código probados fallan, porque me faltan habilidades de codificación extendida
ejemplo:
1 2008.01.07 02:36 vender 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00
2 2008.01.07 03:14 cerrar 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00
3 2008.01.07 03:14 vender 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00
4 2008.01.07 07:54 cerrar 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00
5 2008.01.07 07:54 vender 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00
6 2008.01.09 15:56 cerrar 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04
7 2008.01.10 14:24 comprar 4 0.10 1.4708 0.0000 0.00 10063.04
8 2008.01.10 14:47 cerrar 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54
cualquier ayuda es muy apreciada
saludos
Michael
Hola,
tal vez alguien puede guiarme a hacer:
- La orden se ejecuta, se cierra con ganancias o pérdidas y aparece en el historial
- ahora quiero deshabilitar las operaciones/dejar de abrir nuevas órdenes en este par (símbolo) durante todo el día
- al día siguiente, una nueva orden puede ser ejecutada
es como una función "Max Trades Per Bar", pero basada en el historial.
varios fragmentos de código probados fallan, porque me faltan habilidades de codificación extendida
ejemplo:
1 2008.01.07 02:36 vender 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00
2 2008.01.07 03:14 cerrar 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00
3 2008.01.07 03:14 vender 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00
4 2008.01.07 07:54 cerrar 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00
5 2008.01.07 07:54 vender 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00
6 2008.01.09 15:56 cerrar 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04
7 2008.01.10 14:24 comprar 4 0.10 1.4708 0.0000 0.00 10063.04
8 2008.01.10 14:47 cerrar 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54
cualquier ayuda es muy apreciada
saludos
Michael[lang=pl]Hola Michael,
Una pregunta, ¿es necesario detener la apertura de nuevas posiciones si cualquier posición en el día actual está cerrada, o no permite por ejemplo abrir cortos si cualquier corto
se cierra en la parada? Hay algún ejemplo de cómo hacerlo en el caso de OP_BUY(para otros es similar)
int tiempo;
bool cond = true;
double stopLoss = 50;
double takeProfit = 70;
double lotes = 0.1;
int órdenes = 0;
int magic = 123;
//+------------------------------------------------------------------+
//| función de inicialización del experto ||.
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta ||
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto ||
//+------------------------------------------------------------------+
int inicio()
{
Print(countOrders(magic, OP_BUY));
if(orders !=countOrders(magic,OP_BUY)) cond = false;
if(time != DayOfWeek()) cond = true;
if(cond) {
OrderSend(Symbol(),OP_BUY,lots,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit),"",magic);
}
orders = countOrders(magic,OP_BUY);
time = DayOfWeek();
//----
return(0);
}
int countOrders(int oMagic,int oType) {
int count=0;
for(int i=0;i<TotalPedidos();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
if(OrderMagicNumber()==oMagic) {
if(OrderSymbol()==Symbol()) {
if(OrderType()==oType || oType<0) {
count++;
}
}
}
}
}
return(count);
}
double sltpValue(double w1, int w2){
if(w2 == 0)
return(0);
return (NormalizeDouble(w1, Digits));
}
//+------------------------------------------------------------------+
Espero que quede claro. En el caso de cualquier duda contactad conmigo por favor.
Saludos,
Grzesiek[/lang]
Hola Grzesiek,
sí, sólo se permite la apertura de nuevas posiciones en el día actual, no importa si se trata de compra, venta, pendiente o cancelada:
- si una orden se cierra en beneficio, pérdida, cancelada o pendiente borrada y anotada en el historial - no se permiten nuevas operaciones de ningún tipo para este símbolo() en el día actual
- si tenemos un nuevo día, se pueden ejecutar todo tipo de nuevas órdenes.
lo que he hecho, no funciona:
extern bool Only1OrderPerDay=true;
if(Only1OrderPerDay==true){
CountHistoryOrders();
}
void ContarPedidosDeLaHistoria(){
for(int d=0;d<TotalPedidosHistoria();d++){
OrderSelect(d,SELECT_BY_POS,MODE_HISTORY);{
if(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic==0))d++;
Print("HistoriaOrdenes "+DoubleToStr(d,0));
{
if(d>0 ....time?...){
retorna;
}}}}}
gracias por la ayuda
Michael
[lang=pl]Hola Michael,
Una pregunta, ¿es necesario detener la apertura de nuevas posiciones si cualquier posición en el día actual está cerrada, o no permite por ejemplo abrir cortos si cualquier corto
se cierra en la parada? Hay algún ejemplo de cómo hacerlo en el caso de OP_BUY(para otros es similar)
int tiempo;
bool cond = true;
double stopLoss = 50;
double takeProfit = 70;
double lotes = 0.1;
int órdenes = 0;
int magic = 123;
//+------------------------------------------------------------------+
//| función de inicialización del experto ||.
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta ||
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto ||
//+------------------------------------------------------------------+
int inicio()
{
Print(countOrders(magic, OP_BUY));
if(orders !=countOrders(magic,OP_BUY)) cond = false;
if(time != DayOfWeek()) cond = true;
if(cond) {
OrderSend(Symbol(),OP_BUY,lots,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit),"",magic);
}
orders = countOrders(magic,OP_BUY);
time = DayOfWeek();
//----
return(0);
}
int countOrders(int oMagic,int oType) {
int count=0;
for(int i=0;i<TotalPedidos();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
if(OrderMagicNumber()==oMagic) {
if(OrderSymbol()==Symbol()) {
if(OrderType()==oType || oType<0) {
count++;
}
}
}
}
}
return(count);
}
double sltpValue(double w1, int w2){
if(w2 == 0)
return(0);
return (NormalizeDouble(w1, Digits));
}
//+------------------------------------------------------------------+
Espero que quede claro. En el caso de cualquier duda contactad conmigo por favor.
Saludos,
Grzesiek[/lang]Arrastrar y soltar Stop Loss
Hola
Tengo Drag and Drop Stop loss script, y un amor para usarlo. Pero con mi broker no funciona para 2 ordenes en un mismo scart solo establece 1 orden. Quiero establecer el stop loss para 2 órdenes en el mismo lugar.
¿Cuál es el problema? Funciona bien con otros brokers.
Por favor, ayuda
int inicio()
{
//----
int digits = MarketInfo(Symbol(),MODE_DIGITS);
double value = NormalizeDouble(WindowPriceOnDropped(),digits);
for(int i=TotalOrdenes()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continuar;
if(OrderSymbol()!=Symbol())
continuar;
RefrescarTarifas();
if(OrderType()==OP_BUY)
if(value<Bid)
OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White);
if(OrderType()==OP_SELL)
if(value>Ask)
OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White);
if((OrderType()==OP_BUYSTOP) || (OrderType()==OP_BUYLIMIT))
if(value<OrderOpenPrice())
OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White);
if((OrderType()==OP_SELLSTOP) || (OrderType()==OP_SELLLIMIT))
if(value>OrderOpenPrice())
OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White);
}
return(0);
}
//+------------------------------------------------------------------+
¿Cómo puedo encontrar la posición de la coordenada X Y de dos indicadores diferentes en un EA para comprar y vender donde se cruzan
digamos un Macd y otro indicador en la misma sub-ventana?