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
ican utilizar lwma así que si quiero que el período sea 30 en el casco lo mv debo poner en el gráfico dos ma o sólo uno con howmuch período iam no es bueno en matemáticas y gracias muy muy hombre en su esfuerzo
zoroxzyad
No puedes utilizar sólo la media móvil. Debes usar la fórmula del post anterior
¿Hay ya algún manual para el nuevo Metatrader 4?
¿O alguna vez harán uno?
¿Hay ya algún manual para el nuevo metatrader 4? ¿O es que alguna vez harán uno?
Que yo sepa, no. Supongo que habrá alguno (en algún momento del desarrollo)
Mladen, se adjunta un indicador que modificó para mostrar las señales de cruce en el gráfico principal.
Este código es de la nueva versión.
arrDn[CB] = EMPTY_VALUE;
state[CB] = state[CB+1];
if (TrendBuffer[CB]>LoBuffer[CB]) state[CB] = 1;
if (TrendBuffer[CB]<LoBuffer[CB]) state[CB] = -1;
if (state[CB]!=state[CB+1])
{
if (state[CB]== 1) arrUp[CB] = Low[CB] -iATR(NULL,0,10,CB)/2.0;
if (state[CB]==-1) arrDn[CB] = High[CB]+iATR(NULL,0,10,CB)/2.0;
}¿Hay una manera fácil de explicar cómo este código inserta las señales?
Gracias.
Mladen, adjunto un indicador que modificaste para mostrar las señales de cruce en el gráfico principal.
Este código es de la nueva versión...
arrDn[CB] = EMPTY_VALUE;
state[CB] = state[CB+1];
if (TrendBuffer[CB]>LoBuffer[CB]) state[CB] = 1;
if (TrendBuffer[CB]<LoBuffer[CB]) state[CB] = -1;
if (state[CB]!=state[CB+1])
{
if (state[CB]== 1) arrUp[CB] = Low[CB] -iATR(NULL,0,10,CB)/2.0;
if (state[CB]==-1) arrDn[CB] = High[CB]+iATR(NULL,0,10,CB)/2.0;
}¿Hay una manera fácil de explicar cómo este código inserta las señales?
Gracias.Michael
Busca un cruce de valores en dos buffers : TrendBuffer y LoBuffer. Marca cuál es el estado actual de los dos : si TrendBuffer > LoBuffer pone el estado a 1 y si TrendBuffer < LoBuffer pone el estado a -1.
Ahora, cuando el estado de la barra actual es diferente al estado de la barra anterior, significa que hay un cruce. Y entonces dibuja una flecha en el gráfico
¡También profesor molesto de nuevo, por favor, poner este indicador convertido en indicadores MT4, gracias!
colorbars_hlc.mq5
Michael
Busca un cruce de valores en dos buffers : TrendBuffer y LoBuffer. Marca cuál es el estado actual de los dos : si TrendBuffer > LoBuffer pone el estado a 1 y si TrendBuffer < LoBuffer pone el estado a -1.
Ahora, cuando el estado de la barra actual es diferente al estado de la barra anterior, significa que hay un cruce. Y entonces se dibuja una flecha en el gráficoOK, eso explica TrendBuffer y LoBuffer.
¿Pero cómo funcionan arrUp y arrDn?
Por qué las señales aparecen en ciertas velas y no en todas.
Gracias de nuevo.
OK, eso explica TrendBuffer y LoBuffer.
¿Pero cómo funcionan arrUp y arrDn?
Por qué las señales aparecen en ciertas velas y no en todas.
Gracias de nuevo.michael
imagina una secuencia como esta (1 cuando TrendBuffer > LoBuffer, -1 cuando TrendBuffer < LoBuffer)
11111111-1-1-1-1-1-1-1-111111111
Las flechas tienen que ser dibujadas sólo cuando 1 se convierte en -1 o cuando -1 se convierte en 1 (cuando el "estado" cambia). Por eso hay una línea que lo comprueba (esta línea : if (state[CB] !=state[CB+1]) ). Así, cuando el estado cambia, la flecha se dibuja, de lo contrario la flecha no necesita ser dibujada en absoluto
Hola mladen,
espero que tengas tiempo tan cerca de fin de año.
El código de abajo tiene relación con la última pregunta que me hicieron. Se arrastra 0,8 pips para una orden después de que el objetivo de 2 pips en el plus.
¿Pero cómo puedo cambiarlo para que compruebe todas las órdenes y las arrastre individualmente?
Muchas gracias. Gran trabajo que haces aquí.
int start()
{
//----
if (OrdersTotal() == 0) {
isStopLoss = false;
}
for(int i=0; i<=OrdersTotal(); i++) {
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
continue;
}
if(OrdersTotal() == 0) {
continue;
}
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(isStopLoss == true) {
if(OrderType() == OP_BUY) {
if(iClose(Symbol(), 0, 0) >= (OrderOpenPrice()+inProfitStopLoss*Point)) { // Zieht bei 2.0 Pips nach! - 200 = 2.0 Pips
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) >= (lastStopLoss+trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss+trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+inProfitStopLoss*Point,0,0,0);
if(OrderStopLoss() >= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
} else if(OrderType() == OP_SELL) {
if(iClose(Symbol(), 0, 0) <= (OrderOpenPrice()-inProfitStopLoss*Point)) {
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) <= (lastStopLoss-trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss-trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-inProfitStopLoss*Point,0,0,0); // 200 ursprünglich
if(OrderStopLoss() <= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
}
lastStopLoss = OrderStopLoss();
continue;
}
if(OrderType() == OP_BUY) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-initialStopLoss*Point,0,0,0);
} else if(OrderType() == OP_SELL) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+initialStopLoss*Point,0,0,0);
}
lastStopLoss = OrderStopLoss();
}
//----
return(0);
}Hola mladen,
espero que tenga tiempo tan cerca del final del año.
El código de abajo tiene relación con la última pregunta que me hicieron. Se arrastra 0,8 pips para una orden después del objetivo de 2 pips en el plus.
¿Pero cómo puedo cambiarlo para que compruebe todas las órdenes y las arrastre individualmente?
Muchas gracias. Gran trabajo que haces aquí.
int start()
{
//----
if (OrdersTotal() == 0) {
isStopLoss = false;
}
for(int i=0; i<=OrdersTotal(); i++) {
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
continue;
}
if(OrdersTotal() == 0) {
continue;
}
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(isStopLoss == true) {
if(OrderType() == OP_BUY) {
if(iClose(Symbol(), 0, 0) >= (OrderOpenPrice()+inProfitStopLoss*Point)) { // Zieht bei 2.0 Pips nach! - 200 = 2.0 Pips
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) >= (lastStopLoss+trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss+trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+inProfitStopLoss*Point,0,0,0);
if(OrderStopLoss() >= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
} else if(OrderType() == OP_SELL) {
if(iClose(Symbol(), 0, 0) <= (OrderOpenPrice()-inProfitStopLoss*Point)) {
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) <= (lastStopLoss-trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss-trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-inProfitStopLoss*Point,0,0,0); // 200 ursprünglich
if(OrderStopLoss() <= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
}
lastStopLoss = OrderStopLoss();
continue;
}
if(OrderType() == OP_BUY) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-initialStopLoss*Point,0,0,0);
} else if(OrderType() == OP_SELL) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+initialStopLoss*Point,0,0,0);
}
lastStopLoss = OrderStopLoss();
}
//----
return(0);
}arroganzmaschine
Revisa la forma en que se gestionan los trailing stops en el EA desde este post : https://www.mql5.com/en/forum/181334. Creo que te puede ayudar ya que tiene todos los elementos (incluyendo la comprobación de errores) que se necesitan para manejar trailing stop loss