Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1094

 
alvlaf:

¿Pone manualmente el EA en los gráficos y quiere que abra órdenes MaxOpenOrders o órdenes TOTAL MaxOpenOrders en TODOS los gráficos? ¿Y qué órdenes: sólo las de mercado o todas, incluidas las de límite y stop?

 
A13ksandr:

¿Pone manualmente el EA en los gráficos y quiere que abra órdenes MaxOpenOrders o órdenes TOTAL MaxOpenOrders en TODOS los gráficos? ¿Y qué órdenes: sólo las de mercado o todas, incluidas las de límite y stop?

Lo necesitamos para abrir órdenes para todos los instrumentos. Supongamos que el MaxOpenOrders es 1, sólo debería abrir una orden de mercado. Este es un bot para opciones binarias, no hay órdenes pendientes. Sin embargo, funciona en serie, si la posición se cierra con pérdidas, entonces se abre la misma posición, sólo que con un lote más grande, y hasta que la serie termine con una operación rentable, no se deben abrir operaciones para otros instrumentos.
 
A13ksandr:
¿Cuál es el propósito de las palabras "en esta estrategia"? La magia es necesaria si hay operaciones manuales en la cuenta, o si se está ejecutando otro EA, para que estas órdenes no se toquen. Creo que sí.
Sí, gracias,A13ksandr .También cambio el mago durante la depuración para no esperar a que la serie perdedora termine. Y la simple eliminación del mago no cambiaría el algoritmo del robot de trading. No pienso abrir órdenes allí manualmente.
 
alvlaf:
Tiene que abrirse para todos los símbolos. Supongamos que MaxOpenOrders es 1, debería abrir sólo una orden de mercado. Este es un bot para opciones binarias, no hay órdenes pendientes. Sin embargo, funciona en serie, si la posición se cierra con pérdidas, entonces se abre la misma posición, sólo que con un lote más grande, y hasta que la serie termine con una operación rentable, no se deben abrir operaciones para otros instrumentos.

OK, me perdí la parte de las opciones binarias. Por alguna razón, me parece que si fijo manualmente el mismo EA en diferentes gráficos, seguirá contando como si estuviera ejecutando diferentes EAs. Y para CADA gráfico se ejecutará una opción (bueno, cuando funcione correctamente). Podría estar equivocado ya que yo mismo soy un principiante. He considerado la multidivisa en mi EA de esta manera:

input string TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // símbolos para operar

string Symbols[50]; // 50 es el número máximo de símbolos

int CuentaSímbolos;

//--------------------------------------------------

int OnInit()

{

if (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

Símbolos[0] = Símbolo();

}

return(INIT_SUCCEED);

}

//--------------------------------------------------

bool ExtraerSímbolos()

{

ushort Comma = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols);

for (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Símbolos[i]);

Symbols[i] = StringTrimRight(Symbols[i]); // protección contra espacios accidentales

Símbolos[i] = StringTrimLeft(Símbolos[i]);

}

si (SymbolCount > 0) return(true);

return(false);

}

//--------------------------------------------------

void OnTick()

{

for (int i = 0; i < SymbolCount; i++)

{

double LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID);

// y así sucesivamente...

}

}

Para aplicar el EA a cualquier gráfico. De esta manera, MaxOpenOrders será exactamente para todos los gráficos.

 
// y así sucesivamente... - Es decir, ¿pasa al código antiguo del propio EA?
 
A13ksandr:

OK, me perdí la parte de las opciones binarias. Por alguna razón, me parece que si fijo manualmente el mismo EA en diferentes gráficos, seguirá contando como si estuviera ejecutando diferentes EAs. Y para CADA gráfico se ejecutará una opción (bueno, cuando funcione correctamente). Podría estar equivocado ya que yo mismo soy un principiante. He considerado la multidivisa en mi EA de esta manera:

input string TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // símbolos para operar

string Symbols[50]; // 50 es el número máximo de símbolos

int CuentaSímbolos;

//--------------------------------------------------

int OnInit()

{

if (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

Símbolos[0] = Símbolo();

}

return(INIT_SUCCEED);

}

//--------------------------------------------------

bool ExtraerSímbolos()

{

ushort Comma = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols);

for (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Símbolos[i]);

Symbols[i] = StringTrimRight(Symbols[i]); // protección contra espacios accidentales

Símbolos[i] = StringTrimLeft(Símbolos[i]);

}

si (SymbolCount > 0) return(true);

return(false);

}

//--------------------------------------------------

void OnTick()

{

for (int i = 0; i < SymbolCount; i++)

{

double LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID);

// y así sucesivamente...

}

}

Para aplicar el EA a cualquier gráfico. De este modo, los MaxOpenOrders serán precisos para todos los gráficos.

¿Este código está escrito en MQL5?
 
A13ksandr:
if (DayOfWeek() == 1) Precio = iOpen(Symbol(), PERIOD_D1, 4);
if (DayOfWeek() >= 2) Precio = iOpen(Symbol(), PERIOD_D1, DayOfWeek() - 2);

Es decir, necesito un EA que determine el precio de apertura de la barra del martes y parta de él el tiempo que sea necesario, por ejemplo, una semana, dos, un mes, etc.

Gracias.

 
yaaarik777:

¿Qué pasa si la próxima semana ha comenzado y todavía necesito informar desde el precio de la barra abierta del martes de la semana pasada? Es decir, necesito que el Asesor Experto determine el precio de la barra abierta del martes y lo utilice durante el tiempo que sea necesario, por ejemplo, una semana, dos semanas, un mes, etc.

Gracias.

Luego fijas una fecha concreta y el programa toma el precio de apertura del día para esa fecha, es aún más fácil.

 
evillive:

Luego fijas una fecha concreta y el programa toma el precio de apertura del día para esa fecha, es aún más fácil.

Me puedes ayudar con el código, no lo entiendo.

¿Crees que el cálculo del precio de apertura de la primera barra del martes se puede implementar en OnInit() y que calcule el precio al inicio y lo recuerde hasta que se reinicie el EA?

lo siento si estoy escribiendo tonterías, sólo estoy aprendiendo)

 
yaaarik777:

Puedes ayudar con el código, no lo entiendo.

¿Crees que el precio de la primera barra del martes debería calcularse en OnInit() y que calculará el precio en el arranque y lo recordará hasta que se reinicie el EA?

Lo siento si estoy escribiendo tonterías, sólo estoy aprendiendo)

El precio de apertura de la primera barra del día = el precio de apertura de la barra diaria. Puedes hacerlo en Inite, si no necesitas recalcular el valor después.

El código es aproximadamente el siguiente:

input datetime dayz=D'2016.09.06 00:00'; //зададим прошлый вторник, начало суток

int bar_dayz=0;
double price_dayz=0;

int OnInit()
{
////...
bar_dayz=iBarshift(_Symbol,PERIOD_D1,dayz); 
price_dayz=iOpen(_Symbol,PERIOD_D1,bar_dayz);
///...
}
Razón de la queja: