¡Pide! - página 61

 

Pregunta sobre el código

Por favor, no tenga en cuenta el post. Esta configuración hizo lo que necesitaba hacer. Gracias por comenzar allí para ayudarnos.

He modificado un EA para que funcione con varios métodos. He investigado un poco pero no consigo averiguar cómo añadir el nombre del EA al campo de comentarios cuando se abre una orden. ¿Puede alguien indicarme la dirección correcta?

Espero que haya un simple comando de cadena que pueda integrar en cualquier EA que modifique para que las órdenes estén mejor organizadas cuando se ejecute más de un EA durante una prueba.

Gracias por su tiempo y por su visión.

Aquí está una de las secciones no modificadas que tendré que cambiar para introducir el comentario del EA.

if(ObjectFind(BuyStop_TrendName) == 0)

{

SetObject("Active" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

SetObject("Prepare" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

vA = NormalizeDouble(ObjectGetValueByShift("Active"+BuyStop_TrendName,0),Digits);

vM = NormalizeDouble(ObjectGetValueByShift(BuyStop_TrendName,0),Digits);

vP = NormalizeDouble(ObjectGetValueByShift("Prepare"+BuyStop_TrendName,0),Digits);

sl = vA - BuyStop_StopLoss*Point;

tp = vA + BuyStop_TakeProfit*Point;

if(Ask = vP && OrderFind(MagicBuyStop) == false)

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

if(Ask = vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP)

{

OrderSelect(glbOrderTicket, SELECT_BY_TICKET, MODE_TRADES);

if(vA != OrderOpenPrice())

if(OrderModify(glbOrderTicket, vA, sl, tp, 0, Green) == false)

Print("Err (", GetLastError(), ") Modify BuyStop Price= ", vA,

" SL= ", sl, " TP= ", tp);

}

if(Ask < vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP && AutoClose==true)

{

OrderDelete(glbOrderTicket);

}

}

[/code]

I am not sure of the logic but can I just input the CommentName in the following location? I have not tested this but it compiles fine.

[code]

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

Archivos adjuntos:
 

¡Gracias Coderguru por estar aquí para nosotros!

Tengo una pregunta sobre las alertas.

Quiero cambiar el tipo de alerta en este código para que reproduzca un archivo wav que yo elija y no tenga la ventana emergente de compra-venta. Sólo reproducir el archivo wav cuando fractal apears.

Como debería ser el código. He adjuntado el indicador de alerta sFractals.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

Alert("sFractals (", Symbol(), ", ", Period(), ") - BUY!!!");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alert("sFractals (", Symbol(), ", ", Period(), ") - VENDER!!!");

}

}

Archivos adjuntos:
sfractals.mq4  8 kb
 
proverbs:
No estoy seguro de la lógica, pero ¿puedo simplemente introducir el CommentName en el siguiente lugar? No he probado esto pero compila bien.

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

Eso funcionará bien. También puede poner una variable de cadena en ese lugar.

 
Drivefast:
¡Gracias Coderguru por estar aquí para nosotros!

Tengo una pregunta sobre las alertas.

Quiero cambiar el tipo de alerta en este código para que reproduzca un archivo wav que yo elija y no tenga la ventana emergente de compra-venta. Solo reproducir el archivo wav cuando aparezca el fractal.

Como debería ser el código. He adjuntado el indicador de alerta sFractals.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

Alert("sFractals (", Symbol(), ", ", Period(), ") - BUY!!!");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alert("sFractals (", Symbol(), ", ", Period(), ") - VENDER!!!");

}

}

Creo que CodersGuru ha muerto o algo así. Hace tiempo que no aparece por aquí.

De todos modos.... añadir esta declaración:

PlaySound("alert.wav");

.... donde "alert.wav" es el nombre del archivo que quieres reproducir.

 
ryanklefas:
Creo que CodersGuru ha muerto o algo así. Hace tiempo que no aparece por aquí.

De todos modos.... añada esta declaración:

PlaySound("alert.wav");

.... donde "alert.wav" es el nombre del archivo que quieres reproducir.

Gracias por responder a mi post.

No estoy seguro de dónde poner Play Sound("alert.wav"); en el código.

¿Puedo eliminar esta parte? Alert("sFractals (", Symbol(), ", ", Period(), ") - BUY!!!");

¿O tiene que ser algo como esto?

SeñalPrevia = 1;

PlaySound("alert.wav");

Alert("sFractals (", Symbol(), ", ", Period(), ") - BUY!!!");

 

Sí. Sólo hay que sustituir toda la alerta por el sonido.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

PlaySound("alert.wav");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

PlaySound("alert.wav");

}

}
 

Gracias ryanklefas por toda tu ayuda ahora funciona como quiero.

 

Pregunta sobre la ordenación

Tengo una tabla de datos, de 2 dimensiones, almacenada en un array de 2 dimensiones. Quiero hacer alguna manipulación, como ordenar según alguna columna de esa tabla de datos.

La función ArraySort(), en la instrucción, puede ordenar arrays en su 1ª dimensión. No veo cómo puede funcionar para mí.

¿Alguna sugerencia sobre la ordenación de tablas de datos en MetaTrader?

 

Comunicación entre el asesor experto

Hola,

Quiero saber si hay una manera de comunicarse entre asesor experto, digamos que tengo EA A como estrategia principal

y el EA B como estrategia de respaldo

Lo coloco en 2 pares diferentes...

Quiero activar si el EA A está en posición de drawdown, iniciar el EA B...

cuando el beneficio acumulado de EA A y EA B haya alcanzado algún punto objetivo..

cerrar todas las posiciones del EA A y del EA B

¿es posible hacerlo?

 
veematics:
Hola,

Quiero saber si hay una manera de comunicarse entre asesor experto, digamos que tengo EA A como estrategia principal

y el EA B como estrategia de respaldo

lo coloco en 2 pares diferentes...

Quiero activar si el EA A está en posición de drawdown, iniciar el EA B...

cuando el beneficio acumulado de EA A y EA B haya alcanzado algún punto objetivo..

cerrar todas las posiciones de EA A y EA B

¿es posible hacerlo?

Creo que las variables globales son lo que está buscando. Puedes verlas en la sección de referencia del MetaEditor. Para ver tus variables globales actuales, presiona F3 en la terminal MT4.

Razón de la queja: