[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 294

 
forexnew:
Nunca he trabajado con DLL. ¿Por casualidad tiene un código listo?


Aunque, no hay nada particularmente difícil, sólo una simple sustitución de un archivo por otro.

Para hacer una DLL es necesario programar en un lenguaje distinto a MQL4. Algunos escriben en C/C++. Lo escribí en Delphi. En definitiva, depende de tus propias necesidades.

Cuando la DLL está lista, se conecta al Asesor Experto así como a otra biblioteca de MQL4. A continuación, puede llamar a las funciones descritas en la DLL.

 
drknn:


No he hecho este tipo de función, aunque si te fijas, no hay nada especialmente complicado, sólo una sustitución tonta de un archivo por otro.

Puedes hacer enlaces en el sistema de archivos para leer los registros del script.
 

Estimado, ¿tiene Igor Kim una función que devuelva el precio de apertura de la última posición abierta https://forum.mql4.com/ru/38949/page5#434239

Si no es difícil, por favor escriba una función que devuelva el precio de apertura de la primera posición abierta. Pensé que sería suficiente en la línea

t<OrderOpenTime()
Sustituir "<" por ">", pero el resultado no funcionará.
 

Hola.

Por favor, indique cómo implementar esta función si es posible.

La orden 1 y el TP se ajustan en consecuencia. Una orden pendiente 2 se coloca al mismo tiempo que la orden. Cómo eliminar el pendiente cuando el TP de la orden 1 se ha disparado.

 
strongest:

Hola.

Por favor, indique cómo implementar esta función si es posible.

La orden 1 y el TP se ajustan en consecuencia. Una orden pendiente 2 se coloca al mismo tiempo que la orden. Cómo eliminar el pendiente cuando el TP de la orden 1 se ha disparado.


Llamando a la función comercial OrderDelete()
 
¿Qué hay que cambiar para que el trailing stop funcione en cinco dígitos? Aumentar los pips por un factor de 10 no ayuda.
//+------------------------------------------------------------------+
//|                                                   e-Trailing.mq4 |
//|                                           Ким Игорь В. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//| 12.09.2005 Автоматический Trailing Stop всех открытых позиций    |
//|            Вешать только на один график                          |
//| 21.01.2006 Параметр AllPositions                                 |
//+------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"

//------- Внешние параметры ------------------------------------------
extern bool   AllPositions   = False; // Управлять всеми позициями
extern bool   ProfitTrailing = True;  // Тралить только профит
extern int    TrailingStop   = 15;    // Фиксированный размер трала
extern int    TrailingStep   = 2;     // Шаг трала
extern bool   UseSound       = True;  // Использовать звуковой сигнал
extern string NameFileSound  = "expert.wav";  // Наименование звукового файла

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (AllPositions || OrderSymbol()==Symbol()) {
        TrailingPositions();
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions() {
  double pBid, pAsk, pp;

  pp = MarketInfo(OrderSymbol(), MODE_POINT);
  if (OrderType()==OP_BUY) {
    pBid = MarketInfo(OrderSymbol(), MODE_BID);
    if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
      if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
        ModifyStopLoss(pBid-TrailingStop*pp);
        return;
      }
    }
  }
  if (OrderType()==OP_SELL) {
    pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
    if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
      if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
        ModifyStopLoss(pAsk+TrailingStop*pp);
        return;
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) {
  bool fm;

  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
 
david2:
¿Qué hay que cambiar para que el trailing stop funcione en cinco dígitos? Aumentarlo 10 veces no sirve de nada.

Lo más probable es que el problema sean los precios no normalizados.
 
PapaYozh:

Es probable que el problema sean los precios no normalizados.
Lo siento, pero además del botón de la terminal, debería haber pulsado la confirmación adicional en la ventana del EA para permitir que el EA opere.
 
Sancho77:

Estimado, ¿tiene Igor Kim una función que devuelva el precio de apertura de la última posición abierta https://forum.mql4.com/ru/38949/page5#434239

Si no es difícil, por favor escriba una función que devuelva el precio de apertura de la primera posición abierta. Pensé que sería suficiente en la línea

Sustituye "<" por ">" pero el resultado no funciona.

¿Y para aclarar? ¿Elegir la primera de las abiertas (las que están en el mercado) o las que ya están cerradas? ¿Y si el primer puesto se abrió hace tres años? ¿Debe ser seleccionado?

De todos modos, ¿para qué sirve todo esto?

 

¡Hola camaradas!

¿Pueden aconsejarme si puedo determinar si la orden anterior se cerró en Take Profit o no? En caso afirmativo, ¿cómo debo implementarlo mediante programación?

Agradecería un enlace si esta cuestión ya se ha debatido

Razón de la queja: