Publi |
Publi |
Tengo un EA creado que lo programo a una hora determinada y me abre 2 operaciones de "buy stop" y "sell stop" a la vez.
Bien, lo que desearía es que solo me abriese una de ellas en lugar de las 2, es decir o me abre la compra o me abre la venta.
Podría alguien indicarme que es lo que tengo que modificar o eliminar en el código fuente?
No soy programador tan solo quiero hacer esta pequeña modificación.
Gracias anticipadas y saludos.
pues muchas opciones
basicamente es un condicional IF..... pero pues si no eres programador te quedara como dificil.... con gusto te ayudo... me avisas.. saludoForo de Forex Trading United
Tengo un EA creado que lo programo a una hora determinada y me abre 2 operaciones de "buy stop" y "sell stop" a la vez.
Bien, lo que desearía es que solo me abriese una de ellas en lugar de las 2, es decir o me abre la compra o me abre la venta.
Podría alguien indicarme que es lo que tengo que modificar o eliminar en el código fuente?
No soy programador tan solo quiero hacer esta pequeña modificación.
Gracias anticipadas y saludos.
Si tienes el programa fuente que tiene extencion mq4 puedes hacerlo y no deberia ser tan complicado, lo complicado es determinar cuando sea compra y cuando sea venta.
debes de buscar la linea donde aparecen las condiciones que se deben de cumplir para que el expert ponga las dos ordenes pendienes, normalemente inician con la el comando IF
si gustas puedes subir el expert para ayudarte mas rapido.
Saludos y exitosForo de Forex Trading United
Hola compañeros, voy a hacer algo mejor que eso, ya que me habéis dicho donde está el código y lo que he hecho es un copiar y pegar aquí para que me digais que es lo que se debe modificar o eliminar. El EA no es mio y no se si puedo subirlo sin que el autor se llegue a molestar. No obstante le he hecho la consulta y estoy en espera de que me responda.
Básicamente estas son las órdenes de compra y venta. Lo suyo sería que me diera la opción de escoger que me abra o solo "buy" o solo "sell" o ambas, pero sino tan solo necesito abrir una posición cuando yo crea que va a ser alcista o bajista cuando piense que el precio se va a desplomar. Es decir de modo simple tener 2 EAs uno que se llama VENTA y otro que se llame "COMPRA"
Saludos a todos.
__________________________________________________ _____________________________________________
//+------------------------------------------------------------------+
//| Check for Pending Stop Orders and Open Positions |
//+------------------------------------------------------------------+
int CheckOrdersCondition()
{
int result=0;
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY) {
result=result+1000;
}
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL) {
result=result+100;
}
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUYSTOP) {
result=result+10;
}
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELLSTOP) {
result=result+1;
}
}
}
return(result); // 0 means we have no trades
}
// Result Pattern
// 1 1 1 1
// | | | |
// | | | -------- Sell Stop Order
// | | --------Buy Stop Order
// | --------Sell Position
// --------Buy Position
//+------------------------------------------------------------------+
//| Open Buy Stop Pending Order |
//+------------------------------------------------------------------+
void OpenBuyStop()
{
int ticket,tries;
tries = 0;
if (!GlobalVariableCheck("InTrade")) {
while (tries<3)
{
GlobalVariableSet("InTrade", CurTime()); // Set Lock Indicator (Semaphore Set)
ticket = OrderSend(Symbol(),OP_BUYSTOP,LotsOptimized(),ho,1 ,hso,htp,TradeComment,Magic,0,Green);
Write(logfile,"OpenBuyStop, OrderSend Executed, @ "+ho+" SL @ "+hso+" TP @ "+htp+" ticket="+ticket);
GlobalVariableDel("InTrade"); // Clear Lock Indicator (Semaphore Del)
if (ticket<=0) {
Write(logfile,"Error Occurred : "+ErrorDescription(GetLastError()));
tries++;
} else tries = 3;
}
}
}
//+------------------------------------------------------------------+
//| Open Sell Stop Pending Order |
//+------------------------------------------------------------------+
void OpenSellStop()
{
int ticket,tries;
tries = 0;
if (!GlobalVariableCheck("InTrade")) {
while (tries<3)
{
GlobalVariableSet("InTrade", CurTime()); // Set Lock Indicator (Semaphore Set)
ticket = OrderSend(Symbol(),OP_SELLSTOP,LotsOptimized(),lo, 1,lso,ltp,TradeComment,Magic,0,Red);
Write(logfile,"OpenSellStop, OrderSend Executed, @ "+lo+" SL @ "+lso+" TP @ "+ltp+" ticket="+ticket);
GlobalVariableDel("InTrade"); // Clear Lock Indicator (Semaphore Del)
if (ticket<=0) {
Write(logfile,"Error Occurred : "+ErrorDescription(GetLastError()));
tries++;
} else tries = 3;
}
}
}
__________________________________________________ ________________________________________________
Gracias y saludos.Foro de Forex Trading United
No hombre no...no quiero un indicador...de hecho es un EA y esta sacado de un EA...Lo que tu quieres no es un Expert, quieres un indicador, ya que dices que el ea te permita a ti decidir que hacer, eso es lo mismo que convertirlo en indicador y en lugar de que mande la orden solo quieres que te de un aviso de esta menera la decicion es tuya, un expert se utiliza para que dadas las condiciones el realize todo sin necesidad del humano.
Saludos
Un EA que en lugar de abrir 2 ordenes abra solo una...o de compra o de venta...la hora a la que sale y con todo lo que sale ya esta configurado, solo quiero cambiar el número de órdenes.Foro de Forex Trading United
Hola compañeros, voy a hacer algo mejor que eso, ya que me habéis dicho donde está el código y lo que he hecho es un copiar y pegar aquí para que me digais que es lo que se debe modificar o eliminar. El EA no es mio y no se si puedo subirlo sin que el autor se llegue a molestar. No obstante le he hecho la consulta y estoy en espera de que me responda.
Básicamente estas son las órdenes de compra y venta. Lo suyo sería que me diera la opción de escoger que me abra o solo "buy" o solo "sell" o ambas, pero sino tan solo necesito abrir una posición cuando yo crea que va a ser alcista o bajista cuando piense que el precio se va a desplomar. Es decir de modo simple tener 2 EAs uno que se llama VENTA y otro que se llame "COMPRA"
Saludos a todos.
__________________________________________________ _____________________________________________
//+------------------------------------------------------------------+
//| Check for Pending Stop Orders and Open Positions |
//+------------------------------------------------------------------+
int CheckOrdersCondition()
{
int result=0;
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY) {
result=result+1000;
}
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL) {
result=result+100;
}
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUYSTOP) {
result=result+10;
}
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELLSTOP) {
result=result+1;
}
}
}
return(result); // 0 means we have no trades
}
// Result Pattern
// 1 1 1 1
// | | | |
// | | | -------- Sell Stop Order
// | | --------Buy Stop Order
// | --------Sell Position
// --------Buy Position
//+------------------------------------------------------------------+
//| Open Buy Stop Pending Order |
//+------------------------------------------------------------------+
void OpenBuyStop()
{
int ticket,tries;
tries = 0;
if (!GlobalVariableCheck("InTrade")) {
while (tries<3)
{
GlobalVariableSet("InTrade", CurTime()); // Set Lock Indicator (Semaphore Set)
ticket = OrderSend(Symbol(),OP_BUYSTOP,LotsOptimized(),ho,1 ,hso,htp,TradeComment,Magic,0,Green);
Write(logfile,"OpenBuyStop, OrderSend Executed, @ "+ho+" SL @ "+hso+" TP @ "+htp+" ticket="+ticket);
GlobalVariableDel("InTrade"); // Clear Lock Indicator (Semaphore Del)
if (ticket<=0) {
Write(logfile,"Error Occurred : "+ErrorDescription(GetLastError()));
tries++;
} else tries = 3;
}
}
}
//+------------------------------------------------------------------+
//| Open Sell Stop Pending Order |
//+------------------------------------------------------------------+
void OpenSellStop()
{
int ticket,tries;
tries = 0;
if (!GlobalVariableCheck("InTrade")) {
while (tries<3)
{
GlobalVariableSet("InTrade", CurTime()); // Set Lock Indicator (Semaphore Set)
ticket = OrderSend(Symbol(),OP_SELLSTOP,LotsOptimized(),lo, 1,lso,ltp,TradeComment,Magic,0,Red);
Write(logfile,"OpenSellStop, OrderSend Executed, @ "+lo+" SL @ "+lso+" TP @ "+ltp+" ticket="+ticket);
GlobalVariableDel("InTrade"); // Clear Lock Indicator (Semaphore Del)
if (ticket<=0) {
Write(logfile,"Error Occurred : "+ErrorDescription(GetLastError()));
tries++;
} else tries = 3;
}
}
}
__________________________________________________ ________________________________________________
Gracias y saludos.
Lo que tu quieres no es un Expert, quieres un indicador, ya que dices que el ea te permita a ti decidir que hacer, eso es lo mismo que convertirlo en indicador y en lugar de que mande la orden solo quieres que te de un aviso de esta menera la decicion es tuya, un expert se utiliza para que dadas las condiciones el realize todo sin necesidad del humano.
SaludosForo de Forex Trading United
SOLUCIONADO!!!
...tan solo bastaba con borrar todo aquello que no quería, compilado y funcionando perfectamente.
Actúo la lógica como en los mercados. Quizá ahora piense en hacerme programadorForo de Forex Trading United
Última edición por victorin69; 10:54 a las
Tengo un EA creado que lo programo a una hora determinada y me abre 2 operaciones de "buy stop" y "sell stop" a la vez.
Bien, lo que desearía es que solo me abriese una de ellas en lugar de las 2, es decir o me abre la compra o me abre la venta.
Podría alguien indicarme que es lo que tengo que modificar o eliminar en el código fuente?
No soy programador tan solo quiero hacer esta pequeña modificación.
Gracias anticipadas y saludos.Foro de Forex Trading United
La parte del programa que has posteado solo revisa si hay ordenes abiertas, en todo caso no hay te crea las ordenes, lo que debes de encontrar es la parte donde el experte evalua las condiciones necesarias para operar, la logica del analisis para que ponga las ordenes pendientes,
en esa linea hace un llamado a que funcion, o funciones ejecutara, en este ejemplo es la que ejecuta la BuyStop
a todas las lineas exepto a la primera que empieza void y al primer corchete ponle delate esto // y solo deja un corchete al final, no borres nada solo ponle la doble implica eso vuele en texto o escrito y no lo ejecutara.
Recueda cambiar el nombre del ea y hacer los cambios en otro para tener siempre el original por cualquier cosa, luego haz un backtest para ver si hace lo que quieres.
Saludos.
//+------------------------------------------------------------------+
//| Open Buy Stop Pending Order |
//+------------------------------------------------------------------+
void OpenBuyStop()
{
int ticket,tries;
tries = 0;
if (!GlobalVariableCheck("InTrade")) {
while (tries<3)
{
GlobalVariableSet("InTrade", CurTime()); // Set Lock Indicator (Semaphore Set)
ticket = OrderSend(Symbol(),OP_BUYSTOP,LotsOptimized(),ho,1 ,hso,htp,TradeComment,Magic,0,Green);
Write(logfile,"OpenBuyStop, OrderSend Executed, @ "+ho+" SL @ "+hso+" TP @ "+htp+" ticket="+ticket);
GlobalVariableDel("InTrade"); // Clear Lock Indicator (Semaphore Del)
if (ticket<=0) {
Write(logfile,"Error Occurred : "+ErrorDescription(GetLastError()));
tries++;
} else tries = 3;
}
}
}
Fuente: EA MT4 Modificar un EA ya creado. - Responder al temaForo de Forex Trading United
Aviso Legal Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal |