Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 711

 
Artyom Trishkin:

Más rápido de entender y comprender

anotar los precios, cómo llevarlos después, cuándo qué?

void PriceTimePos(string sy="",int op=-1,int mn=-1)
  {
  double Цены[3];
   datetime t;
   bool daa;
   int d,k_=OrdersTotal(),typ_;
   double   r=0;
   int      i,k=OrdersHistoryTotal();

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(OrderCloseTime()>=TimeCurrent()-2440*60)
                       {
                        t=OrderCloseTime();
                        r=OrderOpenPrice();
                        sl=OrderStopLoss();
                        tp=OrderTakeProfit();
                        lot=OrderLots();
                        typ_=OrderType();
                        Print("OpenPrice",r);
                       Цены[0]=OrderOpenPrice();
                    
                       }
                    }
                 }
              }
           }
        }
     }
//
  }
para insertar en este bucle en lugar de r
                        daa=false;
                        for(i=0; i<k; i++)
                          {
                           if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                             {
                              if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
                                {
                                 if(OrderType()>1 && OrderType()<6)
                                   {
                                    d=MarketInfo(OrderSymbol(), MODE_DIGITS);
                                    r=NormalizeDouble(r, d);
                                    if(r==NormalizeDouble(OrderOpenPrice(),d)) daa=true; 
                                   }
                                }
                             }
                          }
 

Hola, he hecho una función que debe aumentar el stop loss después de que la última orden haya cerrado en una posición negativa.

Lo incrementa en el paso establecido, hasta alcanzar el máximo. En consecuencia, siempre establece el valor original del stop loss.

¿Qué ocurre? Gracias.

//+------------------------------------------------------------------+

doble SL()

{

doble sL;

if(OrdersHistoryTotal()==0)

{

sL=StopLoss;

}

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderProfit()>=0)

{

sL=StopLoss;

}

if(OrderProfit()<0 && OrderType()==OP_BUY)

{

sL=PrecioDeApertura()-ParadaDeOrden()+SLStep;

}

if(OrderProfit()<0 && OrderType()==OP_SELL)

{

sL=Pérdida de la orden()-Precio de apertura de la orden()+SLStep;

}

}

if(sL>maxStep)

{

sL=StopLoss;

}

return(sL);

}

//+------------------------------------------------------------------+

 
Artyom Trishkin:
  1. Es correcto devolver valores de funciones no nulas, pero es mejor cambiar a nuevos carriles - no hay nada complicado allí.
  2. Escriba, no se olvide de insertar la directiva #property strict al principio del código - donde todas las directivas están deletreadas, lea los códigos de error - sus descripciones están en la documentación y todo estará bien y no será complicado.
¿Dónde puedo encontrar los códigos de error? ¿Dónde está esta documentación?
 
#property strict

int Count=0;

void OnInit()     
{
   Alert ("Сработала ф-ия init() при запуске");   // Сообщение
   return;                                                                     // Выход из init()
   }   
//--------------------------------------------------------------------
void OnStart()                                                                       // Спец. ф-ия start()
   {
   double Price = Bid;                                                      // Локальная перемен.
   Count++;                                                                      // Счётчик тиков
   Alert("Новый тик ",Count," Цена = ",Price);       // Сообщение
   return;                                                                        // Выход из start()
   }
void OnDeinit()                                                                              // Спец. ф-ия deinit()
   {
   Alert ("Сработала ф-ия deinit() при выгрузке");         // Сообщение
   return;                                                                                 // Выход из deinit()
   }

¿Qué estoy escribiendo mal?

Debería ser así http://prntscr.com/lu1kb9


Intento de insertar los datos bajo la plantilla actual

//+------------------------------------------------------------------+
//|                                                            п.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   Alert ("Сработала ф-ия init() при запуске");   // Сообщение
                                                                       // Выход из init()
     
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
Alert ("Сработала ф-ия deinit() при выгрузке");         // Сообщение
   return;
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 
   double Price = PRICE_OPEN;                                                      // Локальная перемен.
   Count++;                                                                      // Счётчик тиков
   Alert("Новый тик ",Count," Цена = ",Price);       // Сообщение
   return;                                                                        // Выход из start()
   
   
  }
//+------------------------------------------------------------------+


Pero todavía no es lo mismo. Ayúdame
Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
 
Por favor, ayuda, ¿alguien tiene una función que pueda pasar una matriz para calcular la reducción máxima?
 

Buenas tardes.

Estoy dominando emq-el por el tutorial de Sergei Kovalev.

He descargado el Expert Advisor de ahí, lo he compilado, y hasta parece que funciona, pero al compilarlo, da algunos feedbacks, no errores, sino advertencias.

¿Qué debo cambiar para que compile sin errores? Gracias de antemano.

Archivos adjuntos:
expert.mq4  28 kb
 
Sergey Branin:
¿Dónde puedo encontrar los códigos de error? ¿Dónde está esta documentación?

En el menú de este sitio web - busque

 
Artyom Trishkin:

En el menú de este sitio - busque

Artem, hay documentación sobre mql5, y las preguntas están en la sección de mql4

Sergey Branin:
¿Dónde puedo encontrar los códigos de error? ¿Dónde está esta documentación?

Aquí está la documentación de mql4. Debe pulsar F1 mientras está en el MetaEditor

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
MetaQuotes Language 4 (MQL4) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и...
 
Alexey Viktorov:

Artyom, ¿está la documentación de mql5? y las preguntas están en la sección de mql4

Hay una documentación sobre mql4. Y es mejor pulsar F1 mientras se está en el MetaEditor

Ahh... De todos modos, tampoco es tan complicado: es más rápido poner el dedo en la F1 y encontrar todo lo que necesitas que esperar 24 horas a que te respondan en el foro. No entiendo...

 
Hola, soy nuevo en la programación. No he encontrado ningún código preparado en ningún sitio. La idea es la siguiente - necesito controlar un indicador personalizado desde un EA, o más bien cambiar sus parámetros externos (uno) cuando ocurre algún evento. La lógica en resumen - si el lote (o por ejemplo el número de posiciones) > un valor predefinido, la configuración externa en el indicador (que está en otra ventana y no está conectado con este EA) cambia sobre la marcha sin reiniciar el indicador. Tal vez puedas intentar hacerlo a través de
 string ServiceCustomIndicatorByIndexA(int nIndex);// я даже не знаю тут   ANSI или UNICODE нужно
и
int ServiceGetNamesIndicatorsMA(int hwndChart,int nWindow,string &asIndicators[],int nSize);   
No sé cómo hacerlo, ¿puede algún programador escribir un bloque de código simple para un ejemplo? c/o Denis