Debate sobre la implantación de los consejeros. - página 7

 
Hola compañeros, quien es capaz de crear un EA basado en 2 indicadores que abriera y cerrara operaciones en los cruces, ver foto, yo mismo lo intente pero no funciono(((((
 
katrina87:
Hola compañeros, tengo una petición muy grande para alguien que pueda crear un asesor basado en 2 indicadores que abran y cierren operaciones en los cruces, vean la imagen, yo mismo lo intenté pero no me salió nada(((((

Yo no lo he utilizado. Lo acabo de ver en un kodobase. Compruébalo, tal vez te sirva. Y por cierto hay más asesores como este en kodobase. Puedes buscar en Google el sitio que estás viendo. https://www.mql5.com/ru/code/12375

Советник на основе отскока от границы канала МА
Советник на основе отскока от границы канала МА
  • www.mql5.com
Для торговли используются показания индикатора Moving Average. Если цена отклонилась от линии Moving Average на определенное количество пунктов, то выставляется ордер в сторону линии Moving Average. Советник может приносить прибыль, но она получается маленькой. Также для него требуется большой депозит. На рисунке сплошная красная линия —...
 
Hola me gustaría escribir un robot de comercio, la idea es simple e ingeniosa. Para empezar necesito un indicador de niveles de soporte de resistencia para que salga la fuerza de estos mismos niveles por ejemplo: alto medio bajo. ¿alguna sugerencia? gracias a todos por adelantado.
 
paradisehell1:
Hola, quiero escribir un robot de comercio, la idea es simple e ingeniosa. Para el comienzo necesito un indicador de niveles de soporte de resistencia para mostrar la fuerza de estos mismos niveles, por ejemplo, alto medio bajo. ¿alguna sugerencia? gracias a todos por adelantado.

La independencia salvará al Gigante del Pensamiento y Padre de la Democracia Rusa.

 
paradisehell1:
Hola, quiero escribir un robot de comercio, la idea es simple e ingeniosa. Por ejemplo, si quisiera utilizar un robot de Forex, tendría que buscar un indicador de nivel de soporte que mostrara la fuerza de los niveles de soporte y resistencia, como alto, medio, bajo.

No me parece evidente que esta idea sea brillante. Por eso no hay motivación. No puedo hablar por nadie más, pero algo me dice que a ellos les pasa lo mismo. Puedes hacer que se vea así. Es posible que no puedan operar manualmente en la demo o en la real, durante un par de meses al menos. Cuánto % ganaste en un mes, cuál fue el nivel de margen y el drawdown. Si los indicadores son interesantes, es fácil encontrar a alguien que los escriba gratis. Pero puedes buscar algo en kodobe. Y por cierto, el trabajo de los programadores es muy barato en este sitio.

 
Hola, estoy casi seguro de que mi pregunta ya se ha planteado muchas veces. Así que estaría muy agradecido si alguien pudiera decirme dónde buscar. Mi pregunta es: ¿cómo puedo implementar en mi Asesor Experto la posibilidad de detener las operaciones cuando se alcanza un determinado beneficio? Supongamos que la ganancia fue de 200 dólares - eso es todo, no operamos hoy.
 
altec3:
Hola! Estoy casi 100% seguro de que mi pregunta ya ha sido planteada muchas veces. Así que estaría muy agradecido si alguien pudiera decirme dónde buscarlo. Pregunta - ¿Cómo se puede implementar en un EA la capacidad de dejar de operar cuando se alcanza un determinado beneficio? Supongamos que la ganancia fue de 200 dólares - eso es todo, no operamos hoy.

¿Esto es para mt4, o debería ser para mt5?

Inmediatamente antes de abrir una posición poner un cheque, si el beneficio es más que para el período - la salida.

void OnTick()
 {
 ...
 if(GetProfitHistoryInCurrency(_Symbol, 0, Magic) > 200) // 0 - сегодня, 1 - вчера, 2 -позавчера
  return;
 
 OrderSend(...);


Por favor, lee todo el hilo, encontrarás el código que necesitas:

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cómo calcular el número de órdenes cerradas en el EA

Vitaly Muzichenko, 2016.04.12 10:36

//===============================================================================================
//---------------------- Возвращает профит за выбранный период с истории -----------------------+
//===============================================================================================
double GetProfitHistoryInCurrency(string symb="0", int index=-1, int mg=-1) {
 if(symb=="0") { symb=Symbol();}
 datetime DailyStartTime=iTime(symb,PERIOD_D1,index);
 double DailyProfit=0;
  for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
   if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
    if((OrderSymbol()==symb || symb=="") && (mg<0 || OrderMagicNumber()==mg)) {
     if((OrderCloseTime()>=DailyStartTime && OrderCloseTime()<DailyStartTime+86400) || index<0)
      DailyProfit+=(OrderProfit()+OrderCommission()+OrderSwap());
 }}}
  return(DailyProfit);
 }
Использование:  GetProfitHistoryInCurrency(_Symbol, 0, Magic); // 0 - сегодня, 1 - вчера, 2 -позавчера

 
Vitaly Muzichenko:

¿Esto es para mt4, o debería ser para mt5?

Inmediatamente antes de abrir una posición poner un cheque, si el beneficio es más que para el período - la salida.


Lee todo el hilo, el código que necesitas está ahí:


Gracias, ¡seguro que le echaré un vistazo! Sí, y el código es necesario para MT5.
 

¡Buenas tardes!

Estoy intentando escribir una función que determine el beneficio del día actual:

//+------------------------------------------------------------------+
//|Функция возвращает прибыль за текущие сутки                       |
//+------------------------------------------------------------------+
double Day_Profit()
  {
//--Запрашиваем историю сделок за последнии сутки
   HistorySelect(TimeCurrent()-PeriodSeconds(PERIOD_D1),TimeCurrent());
   uint     total       =HistoryDealsTotal();   // количество сделок в истории
   ulong    ticket      =0;                     // тикет сделки в истории
   long     type        =0;                     // тип сделки
   double   profit      =0.0;                   // финансовый результат сделки
   double   commission  =0.0;                   // коммиссия по сделке
   double   DayProfit   =0.0;                   // прибыль за текущие сутки
//--- for all deals
   for(uint i=0; i<total; i++)
     {
      if((ticket=HistoryDealGetTicket(i))>0)       //--- если имеются сделки, то...
        {
         profit      =HistoryDealGetDouble(ticket,DEAL_PROFIT);
         commission  =HistoryDealGetDouble(ticket,DEAL_COMMISSION);
         if(HistoryDealGetInteger(ticket,DEAL_TYPE)!=DEAL_TYPE_BALANCE)
           {
            DayProfit+=(profit+commission);
           }
        }
     }
   return (DayProfit);
  }
//+------------------------------------------------------------------+

¿Puede decirme cómo utilizar la función

HistorySelect (datetime from_date,datetime to_date)
para especificar el período que comienza con el día actual. Está claro que el final del periodo to_date=TimeCurrent(), ¿cómo especificar correctamente el inicio del periodo from_date, para que empiece desde 00h:00m:00c del día actual?
 
altec3:
Buenas tardes, podrían decirme cómo especificar el período que comienza en el día actual en la función. Está claro que el fin del periodo to_date=TimeCurrent(), ¿cómo especificar correctamente el inicio del periodo from_date, para que empiece a partir de las 00h:00m:00 del día actual?

Suponiendo que hoy haya habido al menos un tick, el algoritmo es el siguiente: la hora actual se envía a la estructuraMqlDateTime. A continuación, ponga a cero las horas, los minutos y los segundos en esta estructura. Queda por convertir la estructura editada en un tiempo:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   MqlDateTime STimeCurrent;
   TimeToStruct(TimeCurrent(),STimeCurrent);
   STimeCurrent.hour=0;
   STimeCurrent.min=0;
   STimeCurrent.sec=0;
   datetime start_day=StructToTime(STimeCurrent);
   Print(start_day);
  }
//+------------------------------------------------------------------+


Resultado:

2020.09.03 00:00:00
Archivos adjuntos:
1.mq5  3 kb
Razón de la queja: