A continuación, pasar el argumento a la función, ya que se proporciona. Aunque es mejor quitarlo, es una tautología.
Y no todos los pedidos del bucle se recalcularán.
for(i=OrdersTotal()-1; i>=0; i--)
Me parece bien que los comparen con sus propios EAs, porque no tienen tan buen precio.
Lo corregí, inserté un argumento, lo puse en el ámbito global, ahora genera una advertencia de que este argumento ya se utiliza como entrada en otras funciones
El billete con sobreescritura, trabajando desde la última orden con un Martin.
y luego cómo eliminar la declaración global de 'count' hides en la línea...
es interesante hacer que funcione como debería.
Hasta ahora, el probador muestra resultados bastante buenos, y a veces "errores insuperables en el Asesor Experto".
if (OrderSelect(ticket, SELECT_BY_TICKET)) OrderModify(ticket, OrderOpenPrice(), SL, TP, 0;
Es decir, aquí se ha sustituido la sentencia condicional if por una función comercial de tipo bool en lugar de una expresión. ¿Entiendo correctamente que dicha escritura es igual a :
trader781: Lo arreglé, puse un argumento, lo puse en el ámbito global, ahora genera una advertencia de que este argumento ya se utiliza como entrada en otras funciones
Billete con sobreescritura, trabajo desde el último pedido con martin
y luego cómo eliminar la declaración de 'count' oculta la declaración global en la línea...
Es interesante hacer que funcione como debería.
Hasta ahora, el probador muestra resultados bastante buenos, y a veces "errores insuperables en el Asesor Experto".
Por favor, muéstrame la versión corregida, porque adivinar sale sin el código.
if (OrderSelect(ticket, SELECT_BY_TICKET)) OrderModify(ticket, OrderOpenPrice(), SL, TP, 0;
Es decir, aquí se ha sustituido el operador condicional por una función comercialde tipo bool en lugar de una expresión. ¿Entiendo correctamente que dicha escritura es igual a :
He buscado tanto en la Ayuda como en el tutorial, pero no he encontrado dicho formato.
¿Puedo utilizar este modo para escribir directamente funciones de otro tipo en lugar de una expresión? Si es así, ¿cuál sería el algoritmo?
Asísi(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; no funcionará. La condición no debe ser lanzada fuera de los paréntesis.
Asísi(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; no funcionará. La condición no debe ser lanzada fuera de los paréntesis.
trader781: ¿y cómo consiguió el billete para el pedido no abierto?
¿Verdad? No puedo meterlo ahí.
for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS)==true) { if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue; if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++; if (OrderType()==OP_BUYSTOP) if (сигнал_bue) OrderDelete(OrderTicket()); else b++; if (OrderType()==OP_SELLSTOP) if (сигнал_sell) OrderDelete(OrderTicket()); else s++; } }
for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS)==true) { if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue; if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++; if (OrderType()==OP_BUYSTOP) if (сигнал_bue) OrderDelete(OrderTicket()); else b++; if (OrderType()==OP_SELLSTOP) if (сигнал_sell) OrderDelete(OrderTicket()); else s++; } }
No sé cómo explicarlo. Pero sin duda es una obra maestra.
A continuación, pasar el argumento a la función, ya que se proporciona. Aunque es mejor quitarlo, es una tautología.
Y no todos los pedidos del bucle se recalcularán.
El billete con sobreescritura, trabajando desde la última orden con un Martin.
y luego cómo eliminar la declaración global de 'count' hides en la línea...
es interesante hacer que funcione como debería.
Hasta ahora, el probador muestra resultados bastante buenos, y a veces "errores insuperables en el Asesor Experto".
Saludos.
Me encontré con una grabación en este formato:
Es decir, aquí se ha sustituido la sentencia condicional if por una función comercial de tipo bool en lugar de una expresión. ¿Entiendo correctamente que dicha escritura es igual a :
if(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0};?
He buscado tanto en la Ayuda como en el tutorial, pero no he encontrado dicho formato.
¿Puedo utilizar este modo para escribir directamente funciones de otro tipo en lugar de una expresión? Y si es así, ¿cuál sería el algoritmo?
Lo arreglé, puse un argumento, lo puse en el ámbito global, ahora genera una advertencia de que este argumento ya se utiliza como entrada en otras funciones
Billete con sobreescritura, trabajo desde el último pedido con martin
y luego cómo eliminar la declaración de 'count' oculta la declaración global en la línea...
Es interesante hacer que funcione como debería.
Hasta ahora, el probador muestra resultados bastante buenos, y a veces "errores insuperables en el Asesor Experto".
Saludos.
Me encontré con una grabación en este formato:
Es decir, aquí se ha sustituido el operador condicional por una función comercial de tipo bool en lugar de una expresión. ¿Entiendo correctamente que dicha escritura es igual a :
if(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0};?
He buscado tanto en la Ayuda como en el tutorial, pero no he encontrado dicho formato.
¿Puedo utilizar este modo para escribir directamente funciones de otro tipo en lugar de una expresión? Si es así, ¿cuál sería el algoritmo?
Asísi(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; no funcionará. La condición no debe ser lanzada fuera de los paréntesis.
Perosi(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; puede.
Asísi(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; no funcionará. La condición no debe ser lanzada fuera de los paréntesis.
Perosi(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; puede.
Por favor, muéstrame la versión corregida, porque sin el código es adivinar.
De acuerdo.
Terminé lo que pude. La descripción está hecha. El objetivo es entender por qué no funciona como quiero.
//| ОТЛОЖКИ.mq4 |
//+------------------------------------------------------------------+
extern double StopLoss = 1000; //Стоплосс ордера
extern double TakeProfit = 1500; //Тейкпрофит ордера
extern double TrailingStop = 1000; // трал
extern int Delta = 100; //Расстояние от цены для установки ордера
extern double LOT = 0.1; //Объём позиции
extern int Magic =200;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (TrailingStop!=0) Trailing();
//ИНДИКАТОР RSI
double RSI0=iRSI(NULL,0,5,PRICE_CLOSE,0);
double RSI1=iRSI(NULL,0,5,PRICE_CLOSE,1);
int b,s,p,res;
double BuyPrice=Ask+Delta*Point;
double SellPrice=Bid-Delta*Point;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP) b++;
if (OrderType()==OP_SELLSTOP) s++;
}
}
double SL,TP;
//---- buy stop
if(RSI0>50&&RSI1<50)
{
res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue);
}
//---- sell stop
if(RSI0<50&&RSI1>50)
{
res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red );
}
//---- buy stop делете
if(RSI0<50&&RSI1>50)
{
OrderDelete( OrderTicket());
}
//---- sell stop делете
if(RSI0>50&&RSI1<50)
{
OrderDelete( OrderTicket());
}
//----
return(0);
}
//--------------------------------------------------------------------
//---------ФУНКЦИЯ ТРАЛА----------------------------------------------
//--------------------------------------------------------------------
void Trailing()
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol()||OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>TrailingStop)
{
if(OrderStopLoss()<Bid-TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop,OrderTakeProfit(),0,Green);
}
}
}
}
if(OrderType()==OP_SELL)
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>TrailingStop)
{
if((OrderStopLoss()>(Ask+TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop,OrderTakeProfit(),0,Red);
}
}
}
}
}
}
//+------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------+--------------------------------------------------------------------+
¿y cómo consiguió el billete para el pedido no abierto?
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP)
if (сигнал_bue) OrderDelete(OrderTicket());
else b++;
if (OrderType()==OP_SELLSTOP)
if (сигнал_sell) OrderDelete(OrderTicket());
else s++;
}
}
¿Verdad? No puedo meterlo ahí.
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP)
if (сигнал_bue) OrderDelete(OrderTicket());
else b++;
if (OrderType()==OP_SELLSTOP)
if (сигнал_sell) OrderDelete(OrderTicket());
else s++;
}
}