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
Hola.
Estoy deseando aprender tus trucos y enseñarte los míos.
Hola. Estoy deseando aprender tus trucos y enseñarte los míos.
En este foro encontrarás muchas cosas buenas.
¡¡¡Lee y utiliza la función de búsqueda sin ninguna restricción!!!
Siéntase libre de preguntar cualquier cosa ... Un montón de grandes colaboradores/ayudantes aquí.
FerruFx
En este código, tiene el trailing stop establecido para 45 pips. Pero el trailing stop no parece activarse hasta que se mueve 45 pips. ¿Cómo tendría que cambiarlo para que el trailing stop se active cuando se coloque la operación?
extern string Remark1 = "== Main Settings ==";
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = true;
extern double Lots = 4;
extern int Slippage = 2;
extern bool UseStopLoss = false;
extern int StopLoss = 100;
extern bool UseTakeProfit = false;
extern int TakeProfit = 15;
extern bool UseTrailingStop = true;
extern int TrailingStop = 45;
extern bool MoveStopOnce = False;
extern int MoveStopWhenPrice = 50;
extern int MoveStopTo = 1;
extern int MaxConcurrentTrades = 2;
//Version 2.01
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 |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 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() && OrderMagicNumber() == MagicNumber) {
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;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderStopLoss() > 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;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(((OrderStopLoss - Ask) > (Point * TrailingStop)) || OrderStopLoss() == 0) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
Cambiado en rojo
Hice los cambios en rojo, pero ahora el EA no parece querer funcionar. Voy a publicar el EA completo para que le eches un vistazo. Gracias.
Asegúrate de poner () después de ordertoploss
Genial, ¡eso lo hizo!
¿Qué tal este indicador? ....
¿Podría modificarse para que los precios muestren diferentes colores dependiendo de cómo se abran? Por ejemplo, si abre más alto que la barra anterior, el precio sería verde, si es más bajo, entonces rojo, y si es parejo, entonces amarillo. ¿Con estos colores seleccionables? Además, ¿podría ampliarlo para que muestre 10 aperturas en lugar de sólo 6?
También en el EA que acabamos de arreglar, ¿Cómo podría poner una configuración de entrada como, "Pips para activar Trailing Stop". Tengo esto en otro EA pero no estoy seguro de cómo codificarlo.
PedidoComentario()
PedidoTicket()
OrdenarLotes()
OrdenStopLoss()
OrdenTakeProfit()
OrderOpenTime()
Todas estas son herramientas potenciales de filtrado de órdenes.
¿Qué más hay en esas operaciones específicas que las hace únicas?
OrdenComentario()
PedidoTicket()
OrdenarLotes()
OrdenStopLoss()
OrderTakeProfit()
OrderOpenTime()
Todas estas son herramientas potenciales de filtrado de órdenes.
¿Qué más hay en esos oficios específicos que los hace únicos?Dos de las más importantes para filtrar órdenes son OrderSymbol() y OrderMagicNumber(). Otra herramienta importante es OrderComment().
La mejor idea es introducir una de ellas en el Metaeditor, luego hacer clic en la palabra asnd y después pulsar F1. Haciendo esto se mostrará la ayuda y se listarán todas las funciones de orden.
Feliz programación,
Hiachiever
Uso de OrderComment
Tenga cuidado al utilizar OrderComment() para identificar las operaciones. A veces el broker añade caracteres al comentario.
Es mejor utilizar
if (StringFind(OrderComment(), UserComment, 0) > 0)
{
// orden identificada por UserComment encontrada en OrderComment
}
en lugar de
if (OrderComment() == UserComment)
{
// la orden puede ser identificada por UserComment
// si OrderComment no fue modificado por el corredor
}
Robert
Cerrar operaciones en beakeven
..............