[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 593
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
Cuando se hacen pruebas y se optimiza, la mayoría de las veces se utiliza un par de divisas, se obtiene un beneficio aceptable y una reducción. Luego lo repetimos para otras monedas. Pero al final un Asesor Experto tendrá que operar con todas las divisas que nos interesan desde una sola cuenta de trading. Dicen que el drawdown "total" esperado puede ser mejor que el drawdown obtenido para cada moneda individualmente (he visto esta opinión varias veces en algún sitio). Pero puede ser mucho peor si varios Asesores Expertos entran en una racha de pérdidas al mismo tiempo.
También me interesa la experiencia de los comerciantes sobre este tema. Me gustaría ofrecer un videoclip muy interesante de Seaboss
http://taverno.livejournal.com/2010/04/10/ Total Equity Management en Seaboss está implementado para Omega, ¿hay implementaciones similares para MT?
¡Buenas noches, queridos miembros del foro! Me puse en contacto con ellos durante el día pero nadie ha reaccionado - Necesito un indicador que muestre líneas horarias verticales en la ventana del terminal, seguramente hay uno ya hecho, ¿podríais decirme dónde conseguirlo?
No sé dónde conseguirlo. Probablemente la razón por la que no he oído ninguna respuesta es que es algo sencillo escribir un indicador de este tipo y probablemente nadie lo necesite.
vik-777:
Ayúdenme a resolver este problema
haciendo un muestreo de todas las posiciones cerradas
for (int i=0; i<OrdersHistoryTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)
filtro posterior por número mágico
if (OrderMagicNumber()==12)
el filtro coincide con 3 posiciones pero sólo necesito la última cerrada por un número mágico
No puedo averiguar cómo dejar sólo el último?
Gracias
¿Puede alguien ayudarme? ¿Nadie se ha encontrado con esto?
OrderCloseTime() para ayudarle
OrderCloseTime() para ayudarle
¿Y qué? Puedo encontrar la última orden cerrada y necesito la última orden cerrada con un mago, dime cómo hacer una comparación de múltiples órdenes por OrderCloseTime()?
Es demasiado burdo y directo. Puede ser más bonito y lacónico...
Con la raíz y en la frente. Podría ser más bonito y sucinto...
También me interesa la experiencia de los comerciantes sobre este tema. Me gustaría sugerir un videoclip muy interesante de Seaboss
http://taverno.livejournal.com/2010/04/10/ Seaboss ha implementado la Gestión de la Equidad para Omega, ¿hay implementaciones similares para MT?
Aquí hay algo que encontré (aún no lo he leído, pero parece estar en el tema)
https://www.mql5.com/ru/forum/125825
Vopshchem tomé la teoría de la probabilidad y estadísticamente si el margen de la orden estará en un radio de 50 pips del precio, a continuación, en la apertura de la orden con un beneficio de 10 pips es más fácil de alcanzar - si también hay un stop loss de 10 pips (incluso la propagación no es un problema) el movimiento de una tendencia es una gran cosa ...
Añadir un stop loss, independientemente de StepStop
//+------------------------------------------------------------------+
//| Volfram.mq4 ||
//| Vova-x@list.ru |
//| |
//+------------------------------------------------------------------+
#property copyright "Vova-x@list.ru"
#enlace de la propiedad ""
//-----------------------------------------
extern TakeProfit=10;
extern int StepStop=45;
extern double Lots=0.01;
extern bool MoneyManagement=true;
extern inttern MarginPercent=10;
//-------------------------------------------
int nivel_venta_parada;
int nivel_compra_stop;
//----------------------------------------------------------
void init()
{
// int minstop=MarketInfo(Symbol(),MODE_STOPLEVEL);
//Imprime("nivelcompra_parada: "+minstop;)
}
//-----------------------------------------------------------
void start()
{
if (!IsTradeAllowed()) return;
level_buy_stop=0;
level_sell_stop=0;
StepingStop();
StepingPendings();
if (TotalBuy ()==0 && TotalBuyStop ()==0) SetBuyStop ();
if (TotalSell()==0 && TotalSellStop()==0) SetSellStop();
Comentario("Nivel de compra Stop=",nivel_compra_stop*Punto,
"\N -", "Nivel Venta Stop=",nivel_venta_stop*Punto);
}
//---------------------------------------------------------------------------------------------
void ParadaDePaso()
{
if (StepStop<1) return;
int ask, bid, open, stop, x;
doble pérdida;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderSymbol()!=Symbol())
if (OrderType()==OP_BUY)
{
bid=MathRound(Oferta/Punto);
open=MathRound(OrderOpenPrice()/Punto);
stop=MathRound(OrderStopLoss()/Punto);
x=(oferta-abierta)/Parada; x--; x*=Parada;
level_sell_stop=open+x;
si (stop>=open+x)
pérdida=(abierto+x)*Punto;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE);
}
if (OrderType()==OP_SELL)
{
ask=MathRound(Ask/Point);
open=MathRound(OrderOpenPrice()/Punto);
stop=MathRound(OrderStopLoss()/Punto);
x=(open-ask)/StepStop; x--; x*=StepStop;
level_buy_stop=abierto-x;
if (stop>0 && stop<=open-x)
pérdida=(open-x)*Punto;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE);
}
}
}
//----------------------------------------------------------------------------
void PasarPendientes()
{
int ask, bid, open;
doble precio, pérdida, beneficio;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderSymbol()!=Symbol())
if (OrderType()==OP_BUYSTOP)
{
si (nivel_compra_stop==0)
open=MathRound(OrderOpenPrice()/Punto);
si (open<=nivel_compra_stop)
precio=nivel_de_compra*punto;
Pérdida=precio-PasoStop*Punto;
profit=0; if (TakeProfit>0) profit=precio+TakeProfit*Punto;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE);
}
if (OrderType()==OP_SELLSTOP)
{
si (nivel_venta_stop==0)
open=MathRound(OrderOpenPrice()/Punto);
si (open>=nivel_sell_stop)
precio=nivel_de_venta*punto;
pérdida=precio+StepStop*Punto;
profit=0; if (TakeProfit>0) profit=precio-TakeProfit*Punto;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE);
}
}
}
//-------------------------------------------------------------------
void SetBuyStop()
{
double lotes=LotsCounting();
double price=Bid+StepStop*Point;
doble pérdida=precio-PasoStop*Punto;
double profit=0; if (TakeProfit>0) profit=precio+TakeProfit*Punto;
int ticket=OrderSend(Symbol(),OP_BUYSTOP,lotes,precio,0,pérdida,beneficio,"",0,0,CLR_NONE);
if (ticket<1) Print("La fijación de una orden pendiente ha fallado con el error #",GetLastError()," ",(GetLastError());
}
void SetSellStop()
{
double lotes=LotsCounting();
doble precio=PasoParada*Punto;
doble pérdida=precio+StepStop*Punto;
double profit=0; if (TakeProfit>0) profit=precio-TakeProfit*Punto;
int ticket=OrderSend(Symbol(),OP_SELLSTOP,lotes,precio,0,pérdida,beneficio,"",0,0,CLR_NONE);
if (ticket<1) Print("La fijación de una orden pendiente ha fallado con el error #",GetLastError()," ",(GetLastError());
}
int CompraTotal()
{
int count=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
si (OrderSymbol()!=Symbol()) continuar;
if (OrderType()==OP_BUY) count++;
}
devolver (contar);
}
int TotalBuyStop()
{
int count=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
si (OrderSymbol()!=Symbol()) continuar;
if (OrderType()==OP_BUYSTOP) count++;
}
devolver (contar);
}
int VentaTotal()
{
int count=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
si (OrderSymbol()!=Symbol()) continuar;
if (OrderType()==OP_SELL) count++;
}
devolver (contar);
}
int TotalSellStop()
{
int count=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
si (OrderSymbol()!=Symbol()) continuar;
if (OrderType()==OP_SELLSTOP) count++;
}
devolver (contar);
}
double LotsCounting()
{
lotes dobles=Lotes;
si (Gestión del dinero)
{
double batchize=MarketInfo(Symbol(),MODE_LOTSIZE);
double freemargin=AccountFreeMargin();
lotes=0; if (lotsize>0) lotes=NormalizeDouble((MarginPercent*freemargin/lotsize),1);
}
si (lotes>10) lotes=NormalizarDoble(lotes,0);
si (lotes<0,01) lotes=0,01;
retorno (lotes);
}
// Fin