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

 
законопослушный гражданин #:

despegar al espacio

la parada primero se para y luego vuela instantáneamente al espacio después de la toma (cerrando la orden en el camino)

Esta no es la cuestión, tal y como yo la entiendo.

corrígeme si me equivoco: void OnTick()

si no hay órdenes abiertas y hay una señal, entonces vOrderOpenBuy() / vOrderOpenSell()

Luego viene el void vOrderModify(int iOTi) - es decir, se establecen los topes y takei y luego se comprueba si hay errores.

Es decir, hasta que la orden no se cierra en el stop o en la toma, no es posible corregirla en términos de trailing.

Necesita un (máximo dos) múltiplo de parada y toma.

Si quieres cambiar el trailing stop y tomar un beneficio, entonces debes hacerlo manualmente.

Todavía estoy pensando en cómo implementarlo.

Corregido

2021.12.24 21:31:12.245 2021.11.01 00:00:00  111 inputs: Lot=0.01; StopLoss=200; TakeProfit=400; Slippage=3; Magic=1; K_Martin1=2; K_Martin2=2; K_Martin3=2; OrdersClose=5; OrdersClose2=5; DigitsLot=2; PeriodMA=14; MovingShift=1; 
2021.12.24 21:31:12.292 2021.11.01 00:05:00  111 EURUSD,M5: open #1  buy 0.01 EURUSD at 1.15583 ok
2021.12.24 21:31:12.292 2021.11.01 00:05:00  111 EURUSD,M5: modify #1  buy 0.01 EURUSD at 1.15583 sl: 1.15383 tp: 1.15983 ok
2021.12.24 21:32:52.782 2021.11.01 17:37:18  111 EURUSD,M5: modify #1  buy 0.01 EURUSD at 1.15583 sl: 1.15403 tp: 1.16003 ok
2021.12.24 21:32:52.782 2021.11.01 17:37:18  111 EURUSD,M5: Модификации ордера на покупку успешна!
2021.12.24 21:33:39.178 2021.11.01 19:06:30  111 EURUSD,M5: modify #1  buy 0.01 EURUSD at 1.15583 sl: 1.15433 tp: 1.16013 ok
2021.12.24 21:33:39.178 2021.11.01 19:06:30  111 EURUSD,M5: Модификации ордера на покупку успешна!
2021.12.24 21:34:08.768 2021.11.01 20:12:05  Tester: take profit #1  at 1.16013 (1.16014 / 1.16019)
2021.12.24 21:34:14.632 2021.11.01 20:17:55  Tester: stop button pressed
Archivos adjuntos:
111.mq4  25 kb
 
законопослушный гражданин #:

despegar al espacio

la parada primero se pone de pie, luego vuela instantáneamente al espacio seguido de la toma (cerrando la orden en el camino)

Eso es porque sus reglas no están funcionando:

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading.

Cualquier pregunta de los novatos en MQL4 y MQL5, ayuda y discusión de algoritmos y códigos

Mihail Matkovskij, 2021.12.23 22:01

En general, las normas son las siguientes.

  • El SL calculado es menor que el SL de la orden (menos rentable) - no haga nada.
  • El SL de liquidación es igual a la orden - no hacer nada
  • El SL calculado supera el SL de la orden (más rentable) - modifíquelo con el valor calculado
Estas reglas de creación de redes de arrastre serían adecuadas para crear casi cualquier red de arrastre con cualquier algoritmo de cálculo de SL.

Habrían terminado hace mucho tiempo y lo habrían clavado. Pero no...

No he podido evitar encontrar un ejemplo preparado:https://www.mql5.com/ru/code/30808

Y un artículo:https://www.mql5.com/ru/articles/134

Aunque es complicado para los principiantes pero creo que lo conseguirás si realmente te interesa el tema.

Простой трейлинг-стоп
Простой трейлинг-стоп
  • www.mql5.com
Очень простой советник для сопровождения сделок трейлинг-стопом.
 
Tretyakov Rostyslav #:

Corregido

Gracias.

No sabía que se podía poner un doble dentro de una función void

 
Mihail Matkovskij #:

Eso es porque sus reglas no funcionan:

Deberías haberlo hecho hace mucho tiempo y haber marcado. Pero no...

No pude soportarlo y te encontré un ejemplo preparado:https://www.mql5.com/ru/code/30808

Y un artículo:https://www.mql5.com/ru/articles/134

Puede ser complicado para los principiantes, pero creo que lo entenderás si estás realmente interesado en el tema.

Gracias

 

¡¡¡Buenas tardes!!!

¿Puede decirme si la función Hour() devuelve la hora actual del último servidor conocida en Greenwich o la hora actual llamada en el ordenador?

 
EVGENII SHELIPOV la hora actual llamada en el ordenador?


 
Tretyakov Rostyslav #:


¿Cuál es la respuesta a la pregunta?

 
EVGENII SHELIPOV #:

¿Cuál es la respuesta a la pregunta?

Lo siento. Pensé que sabías leer.


 
EVGENII SHELIPOV la hora actual llamada en el ordenador?

¿Y quién te ha dicho que la hora del servidor debe ser GMT?

[Eliminado]  

Función para mt4 y mt5 - inicio, parada y .....

//+------------------------------------------------------------------+
//|                                                   time Start.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input datetime InpHoursFrom = D'1970.01.01 02:00'; // Start (Only time)
input datetime InpHoursTo   = D'1970.01.01 23:00'; // Stop (Only time)
input bool     InpClose     = true;                // Close Time
input datetime InpHoursTo1  = D'1970.01.01 23:00'; // Close (Only time)
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(TimeStartStop(InpHoursFrom,InpHoursTo))
     {
      Print("Start time :",InpHoursFrom," || ","Stop time :",InpHoursTo);
     }
   if(TimeClose(InpHoursTo1))
     {
      if(InpClose)
         Print("close_time :",InpHoursTo1);
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
bool TimeStartStop(datetime HoursFrom,datetime HoursTo)
  {
//---
   MqlDateTime currTime;
   TimeToStruct(TimeLocal(),currTime);
   long hour0=currTime.hour*60*60+currTime.min*60+currTime.sec;
   if((HoursFrom<HoursTo && hour0>=HoursFrom && hour0<HoursTo) ||
      (HoursFrom>HoursTo && (hour0<HoursTo || hour0>=HoursFrom)))
      return(true);
   return(false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
bool TimeClose(datetime HoursTo)
  {
//---
   MqlDateTime currTime;
   TimeToStruct(TimeLocal(),currTime);
   long hour0=currTime.hour*60*60+currTime.min*60+currTime.sec;
   if(hour0<HoursTo)
      return(false);
   if(hour0>HoursTo+1*10)
      return(false);
   return(true);
  }
//+------------------------------------------------------------------+