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

 
Ihor Herasko:

Escribe tus propios ticks y ponlos en el probador de estrategias.

¿pero algo más fácil de usar?

 
Andrey Sokolov:

sino algo más fácil de usar?

¿No puedes escribir lo que no vas a hacer tú mismo? entonceshttps://www.mql5.com/ru/job

aquí está el artículohttps://www.mql5.com/ru/articles/4566

que lo leas, haz citas de acuerdo con tus propias leyes de distribución

si MT4 necesita sus propios gráficos y ticks, entonces lee el artículo, exporta las cotizaciones de MT5 e impórtalas en MT4

no puede ser más sencillo

Si puedes programar para MT4, abre el script PeriodConverter de MT4 en MetaEditor, el código allí es claro y bastante compacto en tamaño, no te tomará mucho tiempo entenderlo, luego crea tu propio gráfico y pruébalo

ZS: Me he acordado de que he publicado en el foro un script para crear gráficos con la función Wehrstrass.

https://www.mql5.com/ru/forum/86386/page988#comment_7843056

 

Hola. La función Devuelve una bandera para la existencia de una posición u orden cerca del mercado (función que se encuentra en el foro). Para el código de prueba, debería abrir una posición si alrededor de 200 pips por encima y por debajo del precio actual, no hay posiciones. ¿Por qué abre una posición en cada tick casi al mismo precio?

//+------------------------------------------------------------------+
//|                                                    testprpos.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
//--- input parameters
input int      Input1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!ExistOPNearMarket(Symbol(),-1,200))
     {
      int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,300,0,0,"_",16384,0,clrGreen);
      if(ticket<0)
        {
         Print("OrderSend завершилась с ошибкой #",GetLastError());
        }
      else
         Print("Функция OrderSend успешно выполнена");
      //--- 

     }

  }
//+------------------------------------------------------------------+
bool ExistOPNearMarket(string sy="",int op=-1,int mn=-1,int ds=1000000) 
  {
   int i,k=OrdersTotal(),ot;

   if(sy=="" || sy=="0") sy=Symbol();
   double p=MarketInfo(sy,MODE_POINT);
   if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         ot=OrderType();
         if((OrderSymbol()==sy) && (op<0 || ot==op)) 
           {
            if(mn<0 || OrderMagicNumber()==mn) 
              {
               if(ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) 
                 {
                  if(MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return(True);
                 }
               if(ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) 
                 {
                  if(MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return(True);
                 }
              }
           }
        }
     }
   return(False);
  }
//+------------------------------------------------------------------+
 
Tengo un problema con la migración de los EAs, los botones se han vuelto inactivos, no puedo migrar, ¿a alguien le ha pasado?
 
Aleksei Petrenko:
Tengo un problema con la migración de los EAs, los botones se han vuelto inactivos, no puedo migrar, ¿a alguien le ha pasado?
 
Aleksei Petrenko:


 
Ghabo:

Hola. La función Devuelve una bandera para la existencia de una posición u orden cerca del mercado (función que se encuentra en el foro). Para el código de prueba, debería abrir una posición si alrededor de 200 pips por encima y por debajo del precio actual, no hay posiciones. ¿Por qué abre una posición en cada tick casi al mismo precio?

Comprobar el número de parámetros al llamar a

ExistOPNearMarket(Symbol(),-1,200)

y su descripción

 
Galim_V:

Comprobar el número de parámetros al llamar a

y su descripción

Gracias.
 
Tengo un bot binario en python, pregunta: ¿cómo puedo enviarle una señal del robot desde el terminal sin muletas?
 

¿Pueden decirme cómo calcular la garantía de una transacción?


He intentado dos enfoques

(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)


Y este

FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);

 double val=AccountFreeMargin()-FreeMarginCheck;



El primero da resultados extraños en EURJPY si mi moneda de depósito es USD. ¿Tengo que añadir algo a la fórmula?

El segundo también funciona ocasionalmente, a veces con valores correctos, a veces con algún disparate (depende del depósito)

Razón de la queja: