¿Cómo codificar? - página 237

 

Tenga en cuenta que usted puede necesitar para almacenar continuamente la propagación, así ... dependiendo del tipo de EA que está escribiendo. de lo contrario inútil

 

es HIGH [0] -- barra actual que acaba de EMPEZAR

para la baja, no sé, tal vez baja[1]

 

Orden correcto para poner OrderSend(),OrderModify()

Hace un día leí un tema en el foro sobre la función OrderSend() y OrderModify()

y este tema me da una pista de por qué algunos EA funcionan y otros no, y me pregunto cómo comprobar si la función OrderSend() y OrderModify() está bien escrita.

 

hola a todos...

Por favor, dígame cómo el código para obtener la lista de todos los pares en MT4?

gracias

Charles

 
sunshineh:
Hola,

No es correcto escribir Ask[1], pero ¿cómo puedo obtener el precio Ask del último tick?

Gracias.

Tienes que guardar los ticks en tiempo real, y luego acceder a ellos desde tu EA o indicador. Podría intentar codificar un ejemplo para ti si todavía estás interesado.

 
DooMGuarD:
hola a todos...

Por favor, dígame cómo codificar para obtener la lista de todos los pares en MT4?

gracias

Charles

Tómate tu tiempo hombre,, creo que es más fácil de hacer en Mql5 por lo que sólo tiene que esperar a que las cosas se establecen

 

obtener valores mágicos de tendencia en una variable...

¡¡¡hola!!!

Estoy trabajando en un EA y me pregunto cómo puedo obtener los valores del indicador de tendencia mágica en una variable. obviamente no hay ninguna función nativa para la tendencia mágica, como iMA hace para las medias móviles y así ....

¡hasta ahora parece que tengo que codificar desde cero. pero no encuentro ninguna información sobre las matemáticas!

¿alguien podría ayudar?

¡¡¡muchas gracias!!!

 
atch3000:
¡¡¡hola!!!

Estoy trabajando en un EA y me pregunto cómo puedo obtener los valores del indicador de tendencia mágica en una variable. obviamente no hay ninguna función nativa para la tendencia mágica, como iMA hace para las medias móviles y so....

Hasta ahora parece que tengo que codificar desde cero, pero no encuentro ninguna información sobre las matemáticas.

¿alguien podría ayudar?

¡¡¡muchas gracias!!!

Busca información de como usar la función ICustom en MQL4 . Con esta función puedes llamar a indicadores externos en tu EA

-guyver

 

Robot - Automat EA sobre 2 medias móviles MA rápidas y lentas

#define SIGNAL_NONE 0

#define SEÑAL_BUY 1

#define SEÑAL_VENTA 2

#define SEÑAL_CLOSEBUY 3

#define SEÑAL_CLOSESELL 4

extern int NúmeroMágico = 0

extern bool SignalMail = False;

extern bool EachTickMode = True

extern double Lotes = 0.2

extern int Slippage = 3;

extern bool UseStopLoss = True

extern int StopLoss = 15;

extern bool UseTakeProfit = True

extern int TakeProfit = 30

extern bool UseTrailingStop = True

extern int TrailingStop = 20

int BarCount;

int Actual;

bool TickCheck = False;

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

//| función de inicialización de expertos ||.

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

int init() {

BarCount = Bars;

si (EachTickMode) Current = 0; si no, Current = 1;

return(0);

}

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

//| función de desinicialización experta ||.

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

int deinit() {

return(0);

}

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

//| función de inicio experta |

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

int inicio() {

int Orden = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Orden = SIGNAL_NONE;

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

//| Comienzo de la variable |++

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

double Var1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Var2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Buy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Buy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Sell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Sell1_2 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseBuy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseBuy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseSell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseSell1_2 = iMA("GBPUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

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

//| Fin de la Variable ||++

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

//Comprobar posición

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

IsTrade = True;

if(OrderType() == OP_BUY) {

//Cerrar

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

//| Señal Inicio(Salida Compra) || /Cerrar

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

if (CloseBuy1_1 > CloseBuy1_2 && False) Orden = SIGNAL_CLOSEBUY;

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

//| Señal Fin(Salir de la Compra) |++

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continuar;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continuar;

}

}

}

} else {

//Cerrar

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

//| Señal de inicio (salida de la venta)

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

if (CloseSell1_1 > CloseSell1_2False) Orden = SIGNAL_CLOSESELL;

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

//| Señal de Fin(Salir de la Venta) |++

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continuar;

}

/Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continuar;

}

}

}

}

}

}

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

//| Señal Begin(Entry) |

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

si (Compra1_1 < Compra1_2 && Falso) Orden = SEÑAL_BUY;

if (Sell1_1 < Sell1_2 && False) Orden = SIGNAL_SELL;

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

//| Fin de la señal

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

//Compra

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Comprobar el margen libre

if (AccountFreeMargin() < (1000 * Lots)) {

Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; si no, StopLossLevel = 0.0;

si (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; si no, TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Orden de COMPRA abierta : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error al abrir la orden de COMPRA : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

/Vender

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Comprobar el margen libre

if (AccountFreeMargin() < (1000 * Lots)) {

Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; si no, StopLossLevel = 0.0;

si (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; si no, TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Orden de venta abierta : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Error al abrir una orden de VENTA : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

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

//donde esta el error, porque no se, ayudenme. gracias

 

¿Qué error obtiene?

Razón de la queja: