Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 222

 

Usted puede comprobar el robot de comercio

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

//| Expertos1.mq4 |

//| Copyright 2017, MetaQuotes Software Corp.

//| https://www.mql5.com |

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

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#enlace de propiedad "https://www.mql5.com"

#versión de la propiedad "1.00"

#propiedad estricta

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

//| https://www.mql5.com |

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

#property copyright "Copyright 2020, MetaQuotes Software Corp.

#enlace de propiedad "https://www.mql5.com"


entrada doble Lotes=0,01;

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

//| |

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

int OnInit()

( OrderSend(Symbol(),OP_BUY,Lots,3,0,Ask+0.0084,Ask-0.0084)


doble lote=Lotes;

si hay beneficio entonces Lotes=lote+0,01 si no Lotes=lote-0,01

si Lots=0 entonces Lots=0.01

si Lotes>0,03 entonces Lotes=0,01

//---

//---

return();

}


Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
 
Hola, estimados profesionales, aconséjenme cómo escribir la condición cuandola orden pendiente semueve una vez a un determinado movimiento del precio, por ejemplo, la orden Sellstop fue colocada a 1,28, el precio se movió a 1,50 y la orden pendiente se movió al precio a una cierta distancia del precio, pero no se movió detrás del precio constantemente, se movió sólo una vez, es decir, se movió por ejemplo por diez pips y se detuvo incluso si el precio fue más allá. Saludos, Alexander.
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 

¡Buenas tardes, queridos expertos!

Por favor, ayuda, consejos sobre cómo hacerlo, dónde leer, escribir parte del código.

He adjuntado una parte del código. Necesito poder introducir mi comentario al abrir una orden o una orden limitada. Es decir, no justo en el código, sino al abrir el panel de EA.

extern double Lots     = 0.1;
extern int StopLoss    = 250;
extern int TakeProfit  = 150;
extern int Magic       = 1;

double SL, TP;

int ticket;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double price = Ask;

   if(BUY() == 0)
     {
      SL = NormalizeDouble(Ask - StopLoss*Point, 5);
      TP = NormalizeDouble(Ask + TakeProfit*Point, 5);
      ticket = OrderSend(Symbol(), OP_BUY, Lots, price, 3, SL, TP, "", Magic, 0, Red);
      if(ticket<0)
         Print("Не удалось открыть ордер");
     }
  }
//+------------------------------------------------------------------+
int BUY()
  {
   int count = 0;
   for(int i=OrdersTotal()-1; i>=X; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true &&
         OrderMagicNumber() == Magic &&
         OrderType() == OP_BUY)
        {
         count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
d4vv:

Necesito poder introducir mi comentario al abrir una orden o una orden limitada.

input string Mycomment="Preved Medved";


ticket = OrderSend(Symbol(), OP_BUY, Lots, price, 3, SL, TP, Mycomment, Magic, 0, Red);

El comentario se escribe cuando se crea la orden y no se puede volver a cambiar.

 
Aleksei Stepanenko:

El comentario se escribe cuando se crea la orden y ya no se puede modificar.

Muchas gracias. Esto es exactamente lo que necesito.

 
Knelson:
Por favor, indique cómo escribir una condición cuandouna orden pendientese moverá una vez a un determinado movimiento de precio,

1. Crea un array en el que almacenar los tickets de las órdenes abiertas y una bandera que indique que la orden ya ha sido movida.

struct Orders
   {
   int ticket;
   bool moved;
   } orders[];

2. Lleva la cuenta de las órdenes que acaban de aparecer y registra en esta matriz la información sobre la orden abierta con la bandera "no se ha movido".

bool finded;
int index==ArraySize(orders)-1;
for(int i=OrdersTotal()-1; i>=0; i--)
   {
   if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
   if(OrderSymbol()!=symbol) continue;
   if(OrderMagicNumber()!=magic) continue;
   if(OrderType()!=OP_BUYSTOP && OrderType()!=OP_SELLSTOP) continue;
   finded=false;
   for(int j=index; j>=0; j--)
      {
      if(orders[j].ticket==OrderTicket())
         {
         finded=true;
         break;
         }
      }
   if(!finded)
      {
      ArrayResize(orders,++index+1);
      orders[index].ticket=OrderTicket();
      orders[index].moved=false;
      }
   }

3. Elimina la información de la matriz si la orden se cierra, se elimina o se transforma.

4. Comprueba la condición para moverse, si la condición se cumple y la bandera "no se ha movido", entonces muévete y cambia la bandera a "movido".

 
Aleksei Stepanenko:

1. Crea un array en el que almacenar los tickets de las órdenes abiertas y una bandera que indique que la orden ya ha sido movida.

2. Lleva la cuenta de las órdenes que acaban de aparecer y registra en esta matriz la información sobre la orden abierta con la bandera "no se ha movido".

3. Elimina la información de la matriz si la orden se cierra, se elimina o se transforma.

4. Compruebe la condición para moverse, si la condición ha llegado y la bandera "no se ha movido", entonces muévase y cambie la bandera a "movido"

No creo que sea fiable.

Yo resolvería este problema de una manera más sencilla: poner una orden pendiente con número mágico 2 y eliminar una orden pendiente con número mágico 1 bajo la condición de que la orden debe ser movida

El código sería simple - después de la recepción de ticks, el bucle pasaría por la orden con número mágico 1 si se encuentra y necesita moverse, entonces eliminaríamos esta orden y colocaríamos una nueva con número mágico 2

 

Sí, es una buena opción.

 
Aleksei Stepanenko:

Sí, es una buena opción.

UPD: el código será simple - cuando la garrapata viene el bucle en el orden con el número mágico 1 si se encuentra y la necesidad de mover, a continuación, eliminar este orden y establecer un nuevo orden con el número mágico 2

.... entonces intentaremos establecer una nueva orden con el número mágico 2 y si está bien entonces borraremos la orden con el número mágico 1

por lo que hay que hacer menos comprobaciones - por ejemplo, los niveles del nivel de parada se ha ampliado y no será capaz de mover la orden una vez y ya hemos eliminado la orden encontrada

de esa manera ;)

 
Observando el cerebro humano (sobre todo el mío, pero no sólo), encuentro una propiedad: la tunelización. El proceso de pensamiento tiene lugar dentro de los estereotipos de pensamiento, como en un túnel. Y no es fácil salir de ella con mis propios esfuerzos. El "yo" es inseparable de mí y parece que el tren de pensamiento es correcto, absolutamente correcto. Pero entonces llega el conocimiento del exterior y empiezas a darte cuenta de que has sido prisionero de tus ideas. Los milagros...
Razón de la queja: