¡Pide! - página 16

 

un par de problemas más

1. una de las cosas que noté en los resultados fue que si se abría una operación, no se abría otra hasta que la anterior se completara, ¿tiene alguna forma de cambiar eso? ¿hacer operaciones superpuestas?

(por favor, publique un segundo archivo con las operaciones superpuestas si puede, todavía tengo que probar ambos)

2. pregunta simple,

si el probador no muestra los resultados cuando se introduce un saldo inicial de 500 o 1000, pero lo hace en 3.000 o superior, ¿qué significa exactamente, (¿significa que usted va a la quiebra en los oficios con ese bajo de un saldo inicial?)

 

¿Cómo se sale del bucle?

He estado añadiendo algunas de mis propias alertas y, finalmente, consiguió un poco de éxito, pero muchas veces me meto en un bucle de alerta sin fin y la única manera de romperlo es forzar MT4 para cerrar, ¿cómo puedo poner una ruptura en allí, o hay una ruptura de teclado que puedo utilizar?

gracias por cualquier ayuda con mis preguntas básicas

 

¿Podría mostrarme esto...

la programación todavía me confunde...

Me pregunto si podrías guiarme a través de algo muy básico y mostrarme cómo debería ser el código para que esto suceda...

dos medias móviles se cruzan...entra una orden con un trailing stop...

//---- input parameters

extern double lots=1.0;

extern int MA1=1;

extern int MA2=5;

extern int trailingstop=8;

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

//----

return(0);

}

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

Usé esta utilidad y creé este....

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

//| This MQL is generated by Expert Advisor Builder |

//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |

//| |

//| In no event will author be liable for any damages whatsoever. |

//| Use at your own risk. |

//| |

//| Please do not remove this header. |

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

#property copyright "Expert Advisor Builder"

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = False;

extern double Lots = 1.0;

extern int Slippage = 0;

extern bool StopLossMode = False;

extern int StopLoss = 10;

extern bool TakeProfitMode = False;

extern int TakeProfit = 8;

extern bool TrailingStopMode = True;

extern int TrailingStop = 10;

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

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

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

double Buy1_1 = iClose("EURUSD", PERIOD_M1, Current + 0);

double Buy1_2 = iMA("EURUSD", PERIOD_M1, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell1_1 = iClose("EURUSD", PERIOD_M1, Current + 0);

double Sell1_2 = iMA("EURUSD", PERIOD_M1, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

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

//| Variable End |

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

//Check position

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) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

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;

continue;

}

//Trailing stop

if(TrailingStopMode && 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;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

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;

continue;

}

//Trailing stop

if(TrailingStopMode && 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;

continue;

}

}

}

}

}

}

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

//| Signal Begin(Entry) |

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

if (Buy1_1 > Buy1_2) Order = SIGNAL_BUY;

if (Sell1_1 < Sell1_2) Order = SIGNAL_SELL;

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

//| Signal End |

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

//Buy

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

if(!IsTrade) {

//Check free margin

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

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else 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("BUY order opened : ", OrderOpenPrice());

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

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//Sell

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

if(!IsTrade) {

//Check free margin

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

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else 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("SELL order opened : ", OrderOpenPrice());

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

} else {

Print("Error opening SELL order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

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

el problema es que cuando se ejecuta en el probador de estrategias no da ningún resultado.

 

Oh, lo he resuelto! Muchas gracias por tu tutorial

 
skorcht:
tengo dos preguntas simples creo..

¿Cómo puedo hacer que las velas heiken ashi tengan un grosor de 5 por defecto en lugar de 3?

También, ¿cómo puedo hacer una marca por encima o por debajo de la vela dependiendo del valor de un indicador RSI?

Entiendo algo de programación pero no conozco la sintaxis de esto...así que actúa como si no supiera nada

Muchas gracias...si descubro algo, lo publicaré

PS que asesor experto constructor es NICE, es allí y constructor INDICADOR también? que sería increíble

Sólo lo arreglé el Heiken Ashi.

Archivos adjuntos:
 

Nuevo - Preguntas - Necesito ayuda

Soy nuevo en este foro. Me gustaría saber si alguien puede darme alguna información sobre el valor de la Sección Élite (que no sea el argumento de venta sin prácticamente ninguna información en el enlace anterior).

También he intentado enviar una pregunta desde la página web a la que me llevó el enlace anterior, pero el formulario sigue mostrando que uno de los campos está en blanco. Ese campo es el de Prioridad y no hay nada en el cuadro desplegable (está todo en blanco) y no hay manera de que yo tenga un valor en ese campo. Por lo tanto, no puedo enviar ninguna pregunta de esa manera.

DD

 

¿Alguien más ha experimentado esto? Estoy haciendo un backtesting de mi sistema usando datos de alpari, me sale el error 4107 precio inválido y 131 volumen inválido. El 4107 se generó porque el precio que obtiene es como 4 dígitos decimales más que el par de divisas. Me sorprende que obtenga 4107 ya que el precio que paso a OrderSend() es el Bid y Ask predefinidos. Además añadí un Comment(Bid, " ", Ask); antes de la OrderSend() para ver qué Bid y Ask me devolvía. Y en el Comment() era la precisión decimal adecuada, sin embargo OrderSend() seguía generando el error. Terminé asignando el valor de Bid/Ask a una variable y usando NormalizeDouble() en la variable y luego pasándola a OrderSend() y esto funciona.

Sin embargo, todavía me aparece el 131 y no conozco una solución para ello.

PipChick, personalmente no creo que merezca la pena entrar en la sección de élite.

 

Novato.

Sé algo de c++ pero estoy luchando con un código muy básico.

Lo que quiero:

El precio es 1.2788. Si se mueve hasta 10 pips quiero comprar. Si se mueve hacia abajo 10 pips quiero vender.

¿Tengo el código correcto?

OrderSend(Symbol(),OP_BUYSTOP,1,Ask+10*Point,slippage,

(Ask+10*Point)-10*Point,

( Ask+10*Punto)+200*Punto, "Mi comentario de orden",0,0,Verde);

OrderSend(Symbol(),OP_SELLSTOP,1,Bid-10*Point,slippage,

(Bid-10*Point)+10*Point,

(Oferta -10*Punto)-200*Punto, "Mi comentario de orden",0,0,Verde);

He estado leyendo http://www.metatrader.info/node/34 pero estoy perdido. Gracias por su paciencia.

 

Hola,

Mi problema: MT3,

No funciona. ¿Por qué?

Gracias, Bongo

sell=false;

buy=false;

if ((C[1]>O[1])<O[0]) then { buy=true; sell=false; }

if ((C[1]O[0]) then { sell=true; buy=false; }

Razón de la queja: