¡Pide! - página 76

 

Pregunta sobre EA

Hola Codersguru,

Estoy tratando de aprender a programar y estoy usando tu material, déjame decir que es excelente! paso a paso y simple de seguir, gracias por eso.

Tengo una pregunta, ya que usas el cruce de ema como ejemplo para el EA, estaba pensando en usar el indicador stepMA_7.2 en lugar del ema. ¿Crees que el stepMA_7.2 funcionará? o ¿habrá que reordenar el código o tal vez se necesite más código adicional?

Yo estaba pensando que sólo un intercambio de indicador en el código debe surfice.

Gracias de antemano

Gracias.

 
Michel:
Esto está mal: las barras anteriores son positivas contadas
MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,-1);[/PHP] Use this instead:[PHP]MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,1);

Gracias.

 
 

Sigo teniendo algunos problemas. Las órdenes de compra se abren correctamente, pero todas se cierran con el stoploss, ignorando las condiciones de salida.

//+------------------------------------------------------------------+

//| EA Stripped Down.mq4 |

//+------------------------------------------------------------------+

#property copyright ""

#property link ""

extern double StopLoss =13.0;

extern double MA_Open =12.0;

extern double MA_Close =12.0;

extern double MA_Exit =6.0;

extern double Lots =50.0;

#define MAGICMA 20050610

//+------------------------------------------------------------------+

int init()

{

return(0);

}

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

int start()

{

//+------------------------------------------------------------------+

double MA_CLOSE;

double MA_OPEN;

double MA_EXIT_0;

double MA_EXIT_1;

int res;

if(Volume[0]>1) return;

MA_CLOSE=iMA(NULL,0,MA_Close,1,MODE_SMA,PRICE_CLOSE,0);

MA_OPEN=iMA(NULL,0,MA_Open,1,MODE_SMA,PRICE_OPEN,0);

MA_EXIT_0=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if((MA_CLOSE-MA_OPEN>=1*Point) && MA_EXIT_0>MA_EXIT_1)

{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue);

return;

}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

if(Volume[0]>1) return;

MA_EXIT_0=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if(OrderType()==OP_BUY)

{

if(MA_EXIT_0<=MA_EXIT_1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

return;

}

//+------------------------------------------------------------------+

}
 
 

Mediamóvil de otro indicador

Lo he descubierto.

 

Comprobación de posiciones abiertas dentro de un rango

Estoy tratando de comprobar si hay posiciones abiertas dentro de x pips, si no hay ninguna posición abierta se abrirá una. No funciona y sólo abre posiciones continuamente, ¿alguien puede ayudar?

if(posición de compra)

{

weBeBuying = true;

totalorders = OrdersTotal();

for(i=0;i<totalórdenes;i++)

{

OrderSelect(i,SELECT_BY_POS);

if((OrderSymbol()==Symbol()) && (OrderMagicNumber()==magicNumber))

{

type = OrderType();

if((type == OP_BUY) | (type == OP_BUYLIMIT))

{

if(((Bid+spread) - OrderOpenPrice()) > -0.0013)

weBeBuying = false;

}

}

}

}

if(weBeBuying==true)

OrderSend(Symbol(),OP_BUY,lots,Bid+spread,slippage,0,0,NULL,magicNumber,0,Green);

 

MA de un indicador iCustom

¿Cómo codifico la declaración en un ea para hacer referencia a una Media Móvil de 7, Suave, de un indicador iCustom? Lo que equivale a utilizar una Media Móvil utilizando los datos del primer indicador. Se puede hacer esto en la visualización de un indicador iCustom y tener una MA del indicador (Usando los datos de los primeros indicadores), pero ¿cómo se codifica en un ea?

¡Por favor, ayúdenme con esta afirmación!

¡Les agradezco de antemano su ayuda!

Dave

¿Puede alguien ayudar con este???? ¡¡¡¡Por favor!!!!

Creo que lo tengo!:

LR0=iCustom(NULL,0, "Laguerre RSI LONG & SHORT ENTRY",0,0); // GAMMA INFERIOR

¡Todavía necesito ayuda en esto - ¿Puede ayudarme!

 

Aquí puedes publicar tus preguntas relacionadas con MQL4, y haré lo posible por responderlas

para el código de error.

Acabo de volver cuenta a mí que en todos mis expertos, tengo un código de error "OrderModify error 1", incluso con un experto como el de Coders Guru, a continuación,

¿por qué?

¡Gracias !

//+------------------------------------------------------------------+

//| PriceCross.mq4 |||||||||||||||||||

//| Coders Guru

/ /| https://www.mql5.com/en/forum

//+------------------------------------------------------------------+

#property copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- Incluye

#include

//---- Límites de las operaciones

extern double TakeProfit = 200

extern double TrailingStop = 50

extern double StopLoss = 50

extern double Lotes = 0.1

extern int Slippage = 5;

//--- Opciones externas

extern int CurrentBar = 1;

extern int HedgeLevel = 6

extern double Expiración = 7200;

extern int Tamaño = 4

extern int Step = 1;

extern bool UseClose = true;

//--- Configuración de los indicadores

extern int MaMode = 3;

extern int MaPeriod = 24;

//--- Variables globales

int MagicNumber = 101090;

string ExpertComment = "PriceCross";

bool LimitPairs = true

bool LimitFrame = true

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDCHF", "GBPUSD", "USDJPY"}; // añadir/eliminar los paris que desea limitar.

bool Optimizar = true;

int NumberOfTries = 5;

//+------------------------------------------------------------------

int init()

{

return(0);

}

int deinit()

{

return(0);

}

//+------------------------------------------------------------------

bool isNewSymbol(string current_symbol)

{

//recorrer todos los pedidos abiertos y comparar los símbolos

int total = OrdersTotal();

for(int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

string símbolo_seleccionado = OrderSymbol();

if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

return (False);

}

return (True);

}

//+------------------------------------------------------------------+

int inicio()

{

int cnt, ticket, total,n

double trend ;

if(Bars<100) {Print("barras menores de 100"); return(0);}

if(LimitFrame)

{

if(Period()!=TimeFrame) {Print("¡Este AE no funciona con este TimeFrame!"); return(0);}

}

if(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Print("¡Este AE no funciona con esta Divisa!"); return(0);}

}

trend = iMA(NULL,0,MaPeriod,0,MaMode,PRICE_CLOSE,CurrentBar);

//--- Condiciones de negociación

bool CondiciónDeCompra = false , CondiciónDeVenta = false , CondiciónDeCompraDeCierre = false , CondiciónDeVentaDeCierre = false ;

if (Open[1]trend)

BuyCondition = true;

si (Apertura[1]>tendencia && Cierre[1]<tendencia)

SellCondition = true;

si (Open[1]>tendencia && Close[1]<tendencia)

CloseBuyCondition = true;

si (Open[1]tendencia)

CloseSellCondition = true;

total = OrdersTotal();

if(total < 1 || isNewSymbol(Symbol()))

{

if(BuyCondition) //<-- Condición de COMPRA

{

ticket = OpenOrder(OP_BUY); //<-- Abrir orden de COMPRA

CheckError(ticket, "BUY");

for(n=0 ; n< Tamaño ; n++)

{

ticket = OpenPendingOrder(OP_BUYSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

return(0);

}

if(SellCondition) //<-- Condición de VENTA

{

ticket = OpenOrder(OP_SELL); //<-- Abrir orden de VENTA

CheckError(ticket, "SELL");

for(n=0 ; n < Tamaño ; n++)

{

ticket = OpenPendingOrder(OP_SELLSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

return(0);

}

return(0);

}

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) //<-- Se abre una posición larga

{

if(UseClose)

{

if(CloseBuyCondition) //<-- ¡Cierre la orden y salga!

{

CloseOrder(OrderType()); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Trailling the order

}

if(OrderType()==OP_SELL) //<-- Pasar a posición corta

{

if(UseClose)

{

if(CloseSellCondition) //<-- ¡Cierre la orden y salga!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Trailling the order

}

}

}

return(0);

}

//+------------------------------------------------------------------+

....

 

Hola,

¿Hay alguna forma de saber que un pedido ya está cerrado?

La ilustración es así :

Abro 2 órdenes pendientes.

abrir #182 comprar límite 0.17 EURUSD a 1.3005 sl: 1.2970 tp: 1.3013

abrir #183 comprar límite 0.17 EURUSD a 1.3000 sl: 1.2968 tp: 1.3011

entonces

orden #182, comprar 0.17 EURUSD se abre en 1.3005

tomar ganancias #182 en 1.3013 (1.3013 / 1.3015)

quiero eliminar la orden #183 después de que se cierre la orden #182. El desencadenante es que si la orden #182 se cierra entonces la orden #183 se borrará.

Saludos