Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 554
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
splxgf: - ¡Muchas gracias! Todo funciona como un reloj.
Aquí está el código de equilibrio de Igor Kim, convertido "splxgf:" en lugar de puntos a porcentajes:
//+----------------------------------------------------------------------------+
//| Autor : Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versión : 23.04.2009 |
//| Descripción : Mover el nivel de parada a sin pérdidas |
//+----------------------------------------------------------------------------+
//| Parámetros: |
//| sy - nombre del instrumento ( "" - cualquier símbolo, |
//| NULL - símbolo actual) |
//| op - operación ( -1 - cualquier posición) |
//| mn - MagicNumber ( -1 - cualquier mago) |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy=NULL, int op=-1, int mn=-1) {
double po, pp, PercentStep,MoveStoplossLevel,StoplossLevel;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
si ((OrderSymbol()==sy || sy==") && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
po=MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY) {
PercentStep=(OrderTakeProfit()-OrderOpenPrice())/po/(138-23);
MoveStoplossLevel = OrderOpenPrice() + PercentStep*(76-23);
StoplossLevel = OrderOpenPrice() + PercentStep*(51-23);
if (OrderStopLoss()-OrderOpenPrice()<StoplossLevel*po) {
pp=MarketInfo(OrderSymbol(), MODE_BID);
if (pp-OrderOpenPrice()>MoveStoplossLevel*po) {
ModifyOrder(-1, OrderOpenPrice()+StoplossLevel*po, -1);
}
}
}
if (OrderType()==OP_SELL) {
PercentStep=(OrderTakeProfit()-OrderOpenPrice())/po/(138-23);
MoveStoplossLevel = OrderOpenPrice() - PercentStep*(76-23);
StoplossLevel = OrderOpenPrice() - PercentStep*(51-23)
if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<StoplossLevel*po) {
pp=MarketInfo(OrderSymbol(), MODE_ASK);
if (OrderOpenPrice()-pp>MoveStoplossLevel*po) {
ModifyOrder(-1, OrderOpenPrice()-StoplossLevel*po, -1);
}
}
}
}
}
}
}
}
//+----------------------------------------------------------------------------+
Cifras:
138 es la ganancia en % de Fibonacci.
23 es el precio de apertura de la orden en % de Fibonacci
76 es el % de la cuadrícula de Fibonacci, si el precio alcanza este valor, el stop loss se moverá al 51% de la cuadrícula de Fibonacci.
Función de e-MovingInWL2 Expert Advisor.
{
Trailing();
double Line11=iCustom(Symbol(), 0, "TDI Red Green", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, 4, 1);
double Line12=iCustom(Symbol(), 0, "TDI Red Green", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, 4, 2);
double Line21=iCustom(Symbol(), 0, "TDI Red Green", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, 5, 1);
if (timeprev == Time[0]) return(0);
timeprev = Time[0];
ma0=iMA(NULL,0,10,0,MODE_SMA,PRICE_CLOSE,1);
ma1=iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,1);
ma2=iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,1);
ma3=iMA(NULL,0,800,0,MODE_SMA,PRICE_CLOSE,1);
if (CountBuy()>5 && Volume[0]==1 && Ask > ma0 && Ask > ma1 && Ask > ma3)
{
if (Line11>Level1&&Line12<Level1&&Line11>Line12)
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask-sl*Point, Ask+tp*Point, comment, Magic, 0, Blue);
}
if (CountSell()>5 && Volume[0]==1 && Bid < ma0 && Bid < ma1 && Ask < ma3)
{
if (Line11>Level2&&Line12>Level1&&Line11>Line12)
OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Ask+sl*Point,Ask-tp*Point, comment, Magic, 0, Red);
}
return(0);
}
Por favor, ayude a encontrar un error en el código con la señal de abrir órdenes por el indicador TDI Red Green.
El probador no abre tratos, o sólo abre uno. No informa de ningún error.
He indicado correctamente los topes del indicador.
Estoy aprendiendo mql4 desde hace unos días, soy un principiante))
¡Agradezco de antemano la ayuda!El parámetro N en él es variable, lo que significa que cada vez que se cambia, el código tiene que ser reelaborado mediante la adición (o eliminación) de las condiciones "si" (bajo la matriz correspondiente).
Pregunta - ¿es posible usar sólo un "if", pero usar la variable "to" en los nombres de las matrices (o algo más)? Es decir, algo como ARRAY_{k}. Sé que podemos sustituir las matrices por variables terminales, pero es un caso extremo. ¿Existe esta solución para las matrices?
Me enfrenté a este dilema - digamos que hay un bucle-para:
El parámetro N en él es variable, lo que significa que cada vez que se cambia, hay que modificar el código añadiendo (o eliminando) condiciones "if" (bajo la matriz correspondiente).
Pregunta - ¿es posible usar sólo un "if", pero usar la variable "to" en los nombres de las matrices (o algo más)? Es decir, algo como ARRAY_{k}. Sé que podemos sustituir las matrices por variables terminales, pero es un caso extremo. ¿Existe esta solución para las matrices?
Puedes si es de alguna manera similar:
Puedes si es de alguna manera similar:
¿Puede describir con palabras lo que quería decir?
¿Puede describir con palabras lo que quería decir?
Lo siento, me distraje.
El índice del array forma parte del identificador.
He aquí un código sencillo.
Quiero que el programa dibuje una línea vertical en CADA 50ª vela.
el programa dibujará una línea vertical.
EL PROBLEMA ES .
El programa muestra una línea vertical SÓLO EN LA PRIMERA CORONA (múltiplo de 50).
Gracias.
El índice del array forma parte del identificador.
Por lo que entiendo tu solución no funcionará en mi caso, pero me ha dado una idea que merece la pena comprobar. Gracias.
He aquí un código sencillo.
Lo quiero en CADA vela quincuagésima.
el programa exponía una línea vertical.
PROBLEMA
El programa establece una línea vertical SÓLO en la PRIMERA LÍNEA (múltiplo de 50).
Quiero que sea el mismo nombre para cada quincuagésima vela.
Estás intentando crear varios objetos con el mismo nombre y esto no es posible. El nombre tiene que ser único, como el tiempo:
Eso es lo primero. En segundo lugar, ¿dónde está el bucle? ¿Cómo contará el guión las velas?