[¡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

 
chief2000:

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 por la tarde, nadie ha respondido - Necesito un indicador que muestre las líneas horarias verticales en la ventana del terminal, seguro que hay uno ya hecho, ¿me aconsejas dónde conseguirlo?
 
root:
¡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 enfrentado
 
vik-777:
¿Puede alguien ayudarme? ¿Nadie se ha encontrado con esto?

OrderCloseTime() para ayudarle
 
Figar0:

OrderCloseTime() para ayudarle
¿entonces qué? puedo usarlo para encontrar la última orden cerrada y necesito la última orden cerrada con un mago. dime cómo puedo comparar múltiples órdenes usando OrderCloseTime()?
 
vik-777:
¿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()?

int LastClose =0;
int LastTicket;
for (int i=0; i<OrdersHistoryTotal(); i++)
{
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)
  {
    if (OrderMagicNumber()==12)
    {
      if (OrderCloseTime()>LastClose)
      {
        LastClose=OrderCloseTime();
        LastTicket=OrderTicket();
      }
    }
  }
}

if (LastClose>0)
{
  if(OrderSelect(LastTicket, SELECT_BY_TICKET, MODE_HISTORY)==true)
  {
  //// Тра-та-та
  }
}
Es demasiado burdo y directo. Puede ser más bonito y lacónico...
 
Figar0:

Con la raíz y en la frente. Podría ser más bonito y sucinto...
Muchas gracias.
 
Craft:

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

Razón de la queja: