Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 816
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
Acabo de experimentar con el "archivo de cotizaciones" . al actualizar cada gráfico por separado, el historial de casi todos los gráficos comenzó a funcionar correctamente, excepto para algunos pares exóticos, los borré y actualicé un par de veces - no hay nuevos datos para el gráfico. en general, podemos decir que el problema está resuelto
gracias por la eficiencia))))
Estimados programadores....Tengo un problema... Hecreado un EA.... que abre las operaciones normalmente (en el probador) .... pero sólo cierra las operaciones de compra.... sólo cierra las operaciones de venta después de completar la prueba... aquí hay un trozo de código.... pueden ayudarme...
//---------------------------------------------------------------------------------------------------------
void CloseSell()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol())
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Green);
}
}
}
}
//+------------------------------------------------------------------+
void CloseBuy()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol())
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Green);
}
}
}
}
//+------------------------------------------------------------------+
void OpenSellOrder()
{
mlots = GetLots();
if (AutoSL) sl = CalcSL(OP_SELL);
else sl = ND(Bid - StopLoss*Point);
tp = ND(Bid - TakeProfit*Point);
ticket = OrderSendReliable(Symbol(), OP_SELL, mlots, Bid, Slippage, 0, 0, comment, Magic, 0, Red);
if(ticket > 0)
OrderModifyReliable(OrderTicket(), OrderOpenPrice(), sl, tp, 0);
}
//+------------------------------------------------------------------+
int OpenBuyOrder()
{
mlots = GetLots();
if (AutoSL) sl = CalcSL(OP_BUY);
else sl = ND(Bid - StopLoss*Point);
tp = ND(Ask + TakeProfit*Point);
ticket = OrderSendReliable(Symbol(), OP_BUY, mlots, Ask, Slippage, 0, 0, comment, Magic, 0, Blue);
if(ticket > 0)
OrderModifyReliable(OrderTicket(), OrderOpenPrice(), sl, tp, 0);
}
//+------------------------------------------------------------------+
void ModifyLoss()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderType() == OP_BUY)
{
sl = ND(OrderOpenPrice() + LossPoints*Point);
if (OrderStopLoss() < sl && (Ask - OrderOpenPrice())/Point >= LossLimit)
{
if (sl != ND(OrderStopLoss()))
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
else
if (OrderType() == OP_SELL)
{
sl = ND(OrderOpenPrice() - LossPoints*Point);
if (OrderStopLoss() > sl && (OrderOpenPrice()-Bid)/Point >= LossLimit)
{
if (sl != ND(OrderStopLoss()))
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
}
}
}
//+------------------------------------------------------------------+
double CalcSL(int otype)
{
double sloss = 10000000;
if (otype == OP_BUY)
{
double min;
for (int i=1; i<=SLBars; i++)
{
min = iLow(NULL, 0, i);
if (min < sloss)
sloss = min;
}
sloss = ND(sloss - SLPips*Point);
if ((Ask-sloss)/Point < MinSL)
sloss = ND(Ask - MinSL*Point);
if ((Ask - sloss)/Point > MaxSL)
sloss = ND(Ask - MaxSL*Point);
else
sloss = ND(sloss - SLPips*Point);
return(sloss);
}
else
if (otype == OP_SELL)
{
double max;
sloss = 0;
for (i=1; i<=SLBars; i++)
{
max = iHigh(NULL, 0, i);
if (max > sloss)
sloss = max;
}
if ((sloss - Bid)/Point < MinSL)
sloss = ND(Bid + MinSL*Point);
if ((sloss - Bid)/Point > MaxSL)
sloss = ND(Bid + MaxSL*Point);
else
sloss = ND(sloss + SLPips*Point);
return(sloss);
}
return(0);
}
//+------------------------------------------------------------------+
double GetLots()
{
if (!UseMM) return(FixLot);
double clots;
clots = AccountBalance() / 10000.0 * LotsFor10000;
clots = MathMax(clots, MarketInfo(Symbol(), MODE_MINLOT));
clots = MathMin(clots, MarketInfo(Symbol(), MODE_MAXLOT));
clots = NormalizeDouble(clots, 2);
return (clots);
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountTrades()
{
return(CountBuy() + CountSell());
}
//+------------------------------------------------------------------+
double ND(double value)
{
return (NormalizeDouble(value, Digits));
Orden de preselección OrderSelect (Ticket_first_order, SELECT_BY_TICKET);
if(OrderOpenPrice()+10*Point==Ask)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
Creo que es una rama de trabajo... oops, lo siento.
¡¡¡Buenas noches a todos!!! ¡Feliz Año Nuevo!
Decidí guardar los datos del buffer a través de un archivo. No hay problema para crear un archivo y escribir en él, pero es difícil leer desde él.
Aquí hay un programa de prueba. Por favor, ayuda. El problema es que, o bien hay una escritura extra en el archivo, o bien no se puede leer del archivo. Sólo quiero leer una lista de un archivo en, por ejemplo, arrays... Si soy demasiado perezoso para escribir por favor enlace a material similar, pero he encontrado sólo tutorial... PERO MEJOR UNA VARIANTE LISTA EN EL SITIO))):
GRACIAS DE ANTEMANO DE TODOS MODOS!!!)
Por desgracia, no es tan fácil con la grabación en el archivo!!(((
Y parecía... todo lo contrario.
La lectura está resuelta gracias a los ejemplos del tutorial, pero la GRABACIÓN en un archivo requiere un código más complejo. En resumen, ya estoy engañado... No puedo averiguar cómo mover el registro en sincronía con la lectura del archivo.
He corregido la configuración de los niveles para las barras del día y para el historial (datos iniciales almacenados en el buffer).
LA PREGUNTA ES LA MISMA. POR FAVOR, DAME UNA PISTA, SI HAY DEMASIADA ESCRITURA, SOBRE CÓMO ESCRIBIR LOS DATOS DEL BUFFER A UN ARCHIVO.
CÓDIGO MODIFICADO DEL PROGRAMA
ENCONTRADO DÓNDE BUSCAR RESPUESTAS A MIS PREGUNTAS... SOBRE LAS OPERACIONES CON ARCHIVOS)):
SCRIPTS PARA LA SALIDA DE INFORMACIÓN DE UN ARCHIVO A UN GRÁFICO.
HISTORIA DE LOS CÓDIGOS MT4 GRATIS HAY OPCIONES PARA TRANSFERIR DATOS A UN ARCHIVO, ASÍ COMO LA OPERACIÓN INVERSA.
GRACIAS A TODOS, TODOS CIAO)))):
Hay un archivo grande con fechas de esta forma "20141231". Para convertir la cadena en formatode fecha, se necesitan puntos"AAAA.MM.DD" entre el año, el mes y el número.
¿Cómo se puede hacer esto?
Hola a todos, quiero que el EA encuentre el máximo o el mínimo más alto en 100 barras, ¿me aconsejan dónde leer?
Puedes leer la ayuda, está todo ahí, con ejemplos.