Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 135

 
zfs:
El promedio de operaciones rentables no cubrirá el deslizamiento y la rentabilidad es pequeña, y también podría ser un ajuste).

Yo mismo escribí el Asesor Experto. No hay stop loss en él.

 
PetrovichV:

Yo mismo escribí el experto. No tiene un stoploss.

Eso es aún peor).
 
zfs:
Es aún peor).
Gracias.
 

Probablemente responderé a mi propia pregunta, ahora que se ha encontrado la solución - nunca se sabe quién va a buscar en Google...

La pregunta era sobre cómo obtener el precio de apertura del último pedido del historial. Resultó (al menos, para mí) que era correcto: tenía que obtener el precio de una oferta y no el de un pedido. En el probador, la variante inicial también funcionaba (no escrita por mí) - sospecho que la diferencia estaba en el hecho de que en la versión demo sólo dice "precio de mercado" en lugar de precio y al intentar solicitarlo como doble, se devuelven ceros por alguna razón. Al diablo, ahora la función se ve así:

PositionID = PositionGetInteger(POSITION_IDENTIFIER);

double FindLastPrice(long PositionID) {
   int  i = 0, DealsTotal;
   ENUM_DEAL_TYPE CheckType;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;
   
   DealsTotal = HistoryDealsTotal();
   
   for (i = 0; i < DealsTotal; i++) {
      Ticket = (int)HistoryDealGetTicket(i);
      PosID  = HistoryDealGetInteger(Ticket, DEAL_POSITION_ID);
      Magic  = HistoryDealGetInteger(Ticket, DEAL_MAGIC);
      Type   = HistoryDealGetInteger(Ticket, DEAL_TYPE);
      
      if (Sell) CheckType = DEAL_TYPE_SELL; 
      else CheckType = DEAL_TYPE_BUY;
      
      if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == CheckType)) {
         if (Ticket > OldTicket) {
            OrderPrice = HistoryDealGetDouble(Ticket, DEAL_PRICE);
            OldTicket = Ticket;
         }
      }
   }
   if(!OrderPrice) Print("Ошибка получения цены открытия предыдущей сделки! Error ",GetLastError());
   return(OrderPrice);
}

Tuve que matar unas cuantas horas por esta tontería, pero al menos todo tiene sus ventajas: por culpa de esta función que no funcionaba tuve que inventar una solución, al mismo tiempo que dominaba el trabajo básico con archivos para escribir estúpidamente cada nuevo precio de pedido en un archivo y leerlo cuando fuera necesario...

 
Lone_Irbis:

Probablemente voy a responder a mi propia pregunta, ya que la solución se ha encontrado - por si alguien está buscando en Google...

La pregunta era sobre cómo obtener el precio de apertura del último pedido del historial. ....

Y si pudieras usar la búsqueda en el sitio web o mirar los artículos que ya tienen algo.

>>> Recetas MQL5 - Historial comercial y biblioteca de funciones para obtener propiedades de posición

 
tol64:

Y puedes usar la búsqueda del sitio o buscar en los artículos donde no hay nada más.

>>> Recetas MQL5 - Historial comercial y biblioteca de funciones para obtener propiedades de posición

He buscado en Google durante una semana (concretamente, a través de Google, porque la búsqueda integrada es algo extraña: o bien da cosas totalmente inexactas en orden aleatorio, no por relevancia, o incluso dice "no se ha encontrado nada" incluso para peticiones copiadas de la misma documentación)... Pero para encontrar algo útil hay que saber exactamente cómo se llama y en qué se diferencia de la versión ya existente que no funciona :) Es fácil hablar de la búsqueda desde la posición de alguien que conoce el lenguaje a un nivel decente, pero es más difícil hacerlo, si conoces el nombre mql5 sólo por una semana y ya estás tratando de hacer algo en él...

Y además no me gustan mucho las soluciones prefabricadas y los manuales detallados, como concepto, sólo me desaniman a hacerlo yo mismo. :) Tal vez mi forma de autoaprendizaje no sea muy eficaz, pero es más importante que sea interesante; de lo contrario, el entusiasmo por invertir tiempo personal en este tema no será suficiente durante mucho tiempo.

No obstante, gracias por el enlace, lo leeré.

 

Buenas tardes.

¿Hay alguna forma de descargar datos históricos de divisas de 20-30 años?

En Alfa-Forex es sólo para los últimos 12 años, pero antes es a trozos.

 
PetrovichV:

Buenas tardes.

¿Hay alguna forma de descargar datos históricos de divisas de 20-30 años?

En Alfa-Forex es sólo para los últimos 12 años, pero antes es a trozos.

Su corredor le da el historial, la calidad disminuye cuando aumenta el período.
 

Aquí está el código donde se coloca la orden de compra y luego se cambia su SL y TP.

Me da error: 2013.09.06 00:03:39 Operaciones '10022332': falló la modificación de la orden #0 comprar 0.00 GBPUSD en el mercado sl: 0.00000 tp: 0.00000 -> 1.56255, sl: 1.55787 tp: 1.56787 [Solicitud inválida].
¿Qué hay de malo en la solicitud de cambio de nivel?

int Positions;
double delta=0.00500;

MqlTradeRequest  Request;
MqlTradeResult   Result;
MqlTick         InfoTick;


void OnTick()

{
//---

 if(PositionsTotal()==0) // если открытых позиций нет, покупаем
   { 
      
    SymbolInfoTick(_Symbol, InfoTick);
                              
    Request.action=TRADE_ACTION_DEAL;
    Request.symbol=_Symbol;
    Request.volume=1;
    Request.price=InfoTick.bid;
    Request.sl=InfoTick.bid - delta;
    Request.tp=InfoTick.bid + delta;
    Request.deviation=50;
    Request.type=ORDER_TYPE_BUY;
    Request.type_filling=ORDER_FILLING_FOK;
               
    OrderSend(Request, Result);
   
  }else{                                     // меняем уровни
        SymbolInfoTick(_Symbol, InfoTick); 
        
        Request.action=TRADE_ACTION_MODIFY;
        Request.symbol=_Symbol;
        Request.sl=InfoTick.last - delta;
        Request.tp=InfoTick.last + delta;
                          
        OrderSend(Request, Result);
       }
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
agvozdezkiy:

Aquí está el código donde se coloca la orden de compra y luego se cambia su SL y TP.

Me da error: 2013.09.06 00:03:39 Operaciones '10022332': falló la modificación de la orden #0 comprar 0.00 GBPUSD en el mercado sl: 0.00000 tp: 0.00000 -> 1.56255, sl: 1.55787 tp: 1.56787 [Solicitud inválida].
¿Qué hay de malo en la solicitud de cambio de nivel?

Obtenga el código de error para empezar.
Razón de la queja: