Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 349
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
¿Es posible pasar parámetros de entrada dinámicos al indicador a través de iCustom? Cuando intento hacer esto, se abre una nueva ventana del indicador, para cada nuevo parámetro de entrada dinámico.
En este hilo quiero empezar a ayudar a aquellos que realmente quieren entender y aprender a programar en el nuevo MQL4 y quieren cambiar fácilmente a MQL5 - los lenguajes son muy similares.
Este será un buen lugar para discutir las tareas, los algoritmos para resolverlas, y cualquier otra pregunta, de todos modos, relacionada con la programación MT.
Espero que otros miembros experimentados de nuestro foro se unan a nosotros y el hilo sea interesante para todos.
En esta rama, me gustaría empezar a ayudar a aquellos que realmente quieren entender y aprender a programar en el nuevo MQL4 y quieren cambiar fácilmente a MQL5 - los lenguajes son muy similares.
Este será un buen lugar para discutir problemas, algoritmos y cualquier otra cuestión relacionada con la programación de MT.
Espero que otros miembros experimentados de nuestro foro se unan a nosotros para resolver los problemas y el hilo sea de interés para todos.
En esta rama, me gustaría empezar a ayudar a aquellos que realmente quieren entender y aprender a programar en el nuevo MQL4 y quieren cambiar fácilmente a MQL5 - los lenguajes son muy similares.
Este será un buen lugar para discutir problemas, algoritmos y cualquier otra cuestión relacionada con la programación de MT.
Espero que otros miembros experimentados de nuestro foro se unan a nosotros y este tema sea interesante para todos.
En esta rama, me gustaría empezar a ayudar a aquellos que realmente quieren entender y aprender a programar en el nuevo MQL4 y quieren cambiar fácilmente a MQL5 - los lenguajes son muy similares.
Este será un buen lugar para discutir problemas, algoritmos y cualquier otra cuestión relacionada con la programación de MT.
Espero que otros miembros experimentados de nuestro foro se unan a nosotros y este tema sea interesante para todos.
En esta rama, me gustaría empezar a ayudar a aquellos que realmente quieren entender y aprender a programar en el nuevo MQL4 y quieren cambiar fácilmente a MQL5 - los lenguajes son muy similares.
Este será un buen lugar para discutir las tareas, los algoritmos de su solución y cualquier otra cuestión, de una manera u otra, relacionada con la programación MT.
Espero que otros miembros experimentados de nuestro foro se unan a nosotros y este tema sea interesante para todos.
Artyom
Quiero empezar este capítulo para ayudar a aquellos que realmente quieren entender y aprender a programar en el nuevo MQL4 y quieren cambiar fácilmente a MQL5 - los lenguajes son muy similares.
Este es un lugar para discutir las tareas, los algoritmos para resolverlas y cualquier otra cuestión que esté relacionada con la programación de MT de una u otra manera.
Espero que otros miembros experimentados de nuestro foro se unan a nosotros para resolver los problemas y el hilo sea de interés para todos.
Ayúdenme, he añadido la función trailing stop a mi EA, lo he probado y me da dos errores. - No tengo ni idea de cómo arreglarlas. Sin embargo, las operaciones se cierran según la antigua estrategia después de que el precio haya tocado el límite superior del canal y el inferior, respectivamente. Supongo que aquí también hay que cambiar algo. - Vuelve a llamar a los chicos del ejército de la DNR.
#property copyright "Copyright 2017, MetaQuotes Software Corp.
#enlace de propiedad "https://www.mql5.com"
#versión de la propiedad "1.00"
#propiedad estricta
//---------------------------------------------------------
extern double Lots = 0,01;
extern int TomaDeBeneficio = 600;
extern int StopLoss = 25;
extern int Magia = 0001;
extern int Deslizamiento = 3;
extern int TralType = 0; // 0-SAR, 1-ATR, 2-HMA.
extern double SAR_Step = 0.02;
extern double SAR_Max = 0.2;
extern int ATR_Period = 14;
extern double ATR_K = 2.0;
extern inttern HMA_Period = 16;
extern intern HMA_Method = 3;
extern inttern HMA_Shift = 0;
datetime LBT;
//---------------------------------------------------------
extern string TMA = "Parámetros del indicador TMA";
cadena externa TimeFrame = "marco temporal actual";
extern int MediaLongitud = 56;
extern int Precio = "PRICE_CLOSE;
extern double ATRMultiplier = 2.0;
extern inttern ATRPeriod = 100;
extern bool Interpolar = true;
//---------------------------------------------------------
doble PriceHigh, PriceLow, SL, TP;
int ticket;
//+------------------------------------------------------------------+
//| Función de inicialización de expertos |
//+------------------------------------------------------------------+
int OnInit()
{
si (Dígitos == 3 || Dígitos = 5)
{
TakeProfit *= 10;
StopLoss *= 10;
Deslizamiento *= 10;
}
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Función de desinicialización experta |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| función de tic experto |
//+------------------------------------------------------------------+
void OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
if(CountSell() == 0 && Bid >= PriceHigh)
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
si (billete > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Digits);
TP = NormalizeDouble(Oferta - TakeProfit*Punto, Dígitos);
if (OrderSelect(ticket, SELECT_BY_TICKET))
if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("¡Error de modificación del pedido!)
}
}
if (CountBuy() == 0 && Ask <= PriceLow)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
si (billete > 0)
{
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
if (OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("¡Error al modificar la orden de compra!)
} else Print("Error al abrir la orden de compra");
}
//+------------------------------------------------------------------+
//| Función de inicialización de expertos |
//+------------------------------------------------------------------+
int init()
{
//--------
//--------
retorno (0);
}
//+------------------------------------------------------------------+
//| función de tic experto |
//+------------------------------------------------------------------+
void OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
if(CountSell() == 0 && Bid >= PriceHigh)
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
si (billete > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Digits);
TP = NormalizeDouble(Oferta - TakeProfit*Punto, Dígitos);
if (OrderSelect(ticket, SELECT_BY_TICKET))
if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("¡Error al modificar la orden de venta!)
} else Print("¡Error al abrir la orden de venta!)
}
if (CountBuy() == 0 && Ask <= PriceLow)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
si (billete > 0)
{
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
if (OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("¡Error al modificar la orden de compra!)
} else Print("Error al abrir la orden de compra");
}
if (Ask <= PriceLow && CountSell() > 0)
{
for (int i = OrdersTotal() -1; i>0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
Print("¡Error de cierre de la orden de venta!)
}
}
}
if (Bid >= PriceHigh && CountBuy() > 0)
{
for (int i = OrdersTotal() -1; i>0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
if(!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
Print("¡Error de compra de OrderClose!)
}
}
}
}
//+------------------------------------------------------------------+
int CuentaVenta()
{
int cuenta = 0;
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
cuenta++;
}
}
return(count);
}//+------------------------------------------------------------------+
int CuentaCompra()
{
int cuenta = 0;
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
cuenta++;
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Función de desinicialización experta |
//+------------------------------------------------------------------+
int deinit()
{
//+-------
//+-------
devolver (0)
}
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int Inicio()
{
//-----
bool error = fals;
if (LBT!=Time[0]) {
if (OrdersTotal()!=0) {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2) {
double SL = OrderStopLoss();
si OrderType()==0) {
switch (TralType) {
caso 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
romper;
caso 1: SL = High[1] - iATR(NULL,0,ATR,Period,1)*ATR_K;
romper;
caso 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,",1,0,0);
romper;
}
si (SL<OrderStopLoss())
SL = OrderStopLoss();
}
si (OrderType()==1) {
switch (TralType) {
caso 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
romper;
caso 1: SL = Low[1] + iATR(NULL,0,ATR,Period,1)*ATR_K;
romper;
caso 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,",1,0,0);
romper;
}
si (SL>OrderStopLoss())
SL = OrderStopLoss();
}
si (SL!=OrderStopLoss()) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0))
error = true;
}
}
}
}
si (!error)
LBT = Tiempo[0];
}
retorno (0);
}
//+------------------------------------------------------------------+
¡¡Aprende a insertar código!!
¡¡Aprende a insertar código!!
¡¡Aprende a insertar código!!
¡¡Aprende a insertar código!!
¡¡Aprende a insertar código!!
¡¡Aprende a insertar código!!
¡¡Aprende a insertar código!!
¡¡Aprende a insertar código!!
¡¡Aprende a insertar código!!
¡¡Aprende a insertar código!!
Decidí ayudar. Pero tengo preguntas para el autor: tienes estas dos funciones de inicialización, ¿qué hacen?
Hay dosfunciones OnTick().... y una tercera función int Start() - todas ellas se ejecutan con la llegada del tick. ¿Y en qué orden los iniciará el terminal?
Error: falta una llave de cierre al final de la función OnTick()
Ahora el compilador ha detectado 8 errores. He borrado .
Ahora hay 7 errores.
He sustituido if(OrderType()==0) por un paréntesis después de if: if(OrderType()==0) - Se han producido 8 errores
iATR(NULL,0,ATR,Period,1) - necesitamos iATR(NULL,0,ATR_Period,1) - se han producido 2 errores
bool error = fals; necesitamos bool error = false; - los errores se convirtieron en 3
¿Dónde podemos obtener el indicador VininI_HMAsound&? ¿Qué parámetros hay? = el error seguiría siendo 1
¿Y por qué haces una pregunta en tres sitios?
Ayuda para descargar e instalar EAs gratis y señales en mt4 no como neemogu encontrar descarga vide sólo cómo instalar, pero no descargar. Dime dónde buscar
Ayuda para descargar e instalar EAs gratis y señales en mt4 no como neemogu encontrar descarga vide sólo cómo instalar, pero no descargar. Por favor, indíqueme dónde buscar.
Primero graduarse, luego venir.
¿Qué te parece?
Hola. ¿Puedes decirme por qué no veima=iMA(Symbol(),1,60,0,1,0,k). El comentario muestra una cotización mucho más alta que la propia línea. Es la razón por la que los valores mínimos y máximos no se calculan correctamente.
Hola. ¿Puedes decirme por qué no veima=iMA(NULL,60,24,0,1,0,k). El comentario muestra una cotización mucho más alta que la propia línea. Esta es la razón por la que los valores mínimos y máximos no se calculan correctamente.
iMA está numerando como en las series de tiempo, el 0 es el número más relevante. Y probablemente lo tengas al revés.
Es una apuesta involuntaria. No cambia nada. ¡El punto es que se muestra incorrectamente con k!