[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 561

 
delf:
Gracias, es muy simple y sencillo, lo probaré.
Algo está mal. Después de Stor Loss la misma dirección de nuevo.
 
delf:
Algo está mal. Después de STOPLoss se vuelve a la misma dirección.

¿Qué es StopLoss?

 

¡Hola!

¿Puedes decirme qué archivos hay que descargar y dónde instalarlos en mt4 para conseguir esta ventana?

No entiendo cómo hacerlo en laSimulación en diferentes marcos temporales del instrumento bajo prueba

Quiero ver sólo tres gráficos diarios, de cuatro horas y horarios

Quiero ver tres gráficos diarios, de cuatro horas y de una hora. Por favor, ayúdenme, no he conseguido hacerlo en toda la noche.


 
ametist444:

¡Hola!

¿Puedes decirme qué archivos hay que descargar y dónde instalarlos en mt4 para conseguir esta ventana?

No entiendo cómo hacerlo en laSimulación en diferentes marcos temporales del instrumento bajo prueba

Quiero ver sólo tres gráficos diarios, de cuatro horas y horarios

Quiero ver sólo tres ventanas en un marco temporal, quiero ver sólo tres gráficos, quiero ver sólo tres gráficos diarios, de cuatro horas y de una hora.

¿Es necesario abrir estas ventanas de forma programada desde MT4? No estoy seguro, no soy muy bueno en eso... :-)

Abrir manualmente algunas ventanas e insertar el indicador allí, ¿no es una opción?

 

Buenas noches: ¿Podría usted aconsejar cómo entender

La cantidad de margen requerida para el tipo de orden especificado en la cuenta actual y en el entorno de mercado actual sin tener en cuenta las órdenes pendientes actuales y las posiciones abiertas.

¿Puede aproximar una función existente?

 

También empecé a utilizar esta función en lugar de un montón

double     Lott  ( double     Lot ){
     if ( risk!=0)  Lot=AccountFreeMargin()*risk/10000 ; return (Lot);}  

Error 131 de OrderSend - volumen incorrecto. Con depósito inicial 10000 lote inicial 1. Sin embargo, algo no funciona...

 

Desde hace algún tiempo he estado intentando rehacer el bloque de cierre de compra para cerrar sólo las dos últimas posiciones de compra, pero falla. ¿Puede decir cómo rehacer el bloque ?

void Close_2buy()
{
   bool   result;
  double  close_price;
  int    cmd,error;
  bool close;

      for (int f=OrdersTotal()-1; f>=0; f--) // 
      {
         OrderSelect(f, SELECT_BY_POS);
         if (OrderSymbol()==Symbol() &&(OrderMagicNumber()==magic ) 
         && (OrderType() == OP_BUY )) 
         {
            close = False;
            {
               close_price = MarketInfo(OrderSymbol(), MODE_BID);
               close = True;
            }
               
            if (close) 
            {
               result=OrderClose(OrderTicket(), OrderLots(), close_price, 0, CLR_NONE);
               if(result!=TRUE)
               {error=GetLastError();Print("LastError = ", error);}
            }
            
         }
      }
}
 
Dimka-novitsek:

También empecé a utilizar esta función en lugar de un montón

Error 131 de OrderSend - volumen incorrecto. Con depósito inicial 10000 lote inicial 1. Sin embargo, algo no funciona...


Yo uso esto. modifícalo para ti y prueba (cambia AccountBalance() por AccountFreeMargin(), pon tu variable. LotsDigits)
//+------------------------------------------------------------------+
//|                                                         0000.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
////////////////////////////////////////////////////////////////////////|
extern int     Method         =1;      // Метод: 0-FixedLots, 1-часть //|
                                       //(Risk) от свободных средств  //|
                                       // нормированных по значению   //|
                                       // MeansStep(например Risk=    //|
                                       // 0.01,MeansStep=1000,если    //|
                                       // средств меньше 2000,лот     //|
                                       // равен 0.01,если средств     //|
                                       // стало 2000 или более - 0.02 //|
                                       // лота, 3000 или более - 0.03 //|
                                       // лота и т.д.).               //|
                                                                      //|
extern double  LOTS           =0.01;   // Количество лотов при        //|
                                       // Method=0.                   //|
                                                                      //|
extern double  Risk           =0.01;   // Риск. Часть от средств при  //|
                                       // FixedLot=false.             //|
                                                                      //|
extern double  MeansStep      =100.0;  // Шаг средств. Используется   //|
                                       // при Method=1.               //|     
////////////////////////////////////////////////////////////////////////|
//+------------------------------------------------------------------+//|
//|  Определяем "свой" минимальный размер или шаг лота на момент     |//|
//|  начала цикла в зависимости от размера баланса и установленного  |//|
//|  риска.                                                          |//|
//+------------------------------------------------------------------+//|
////////////////////////////////////////////////////////////////////////|
double fGetLotsSimple()                                               //|
   {                                                                  //|
   double LOTSTEP,lot;                                                //|
   double Means;                                                      //|
   switch (Method)                                                    //|
      {                                                               //|
      case 0:                                                         //|
         lot=LOTS;                                                    //|
      break;                                                          //|
      case 1:                                                         //|
         Means=AccountBalance();                                      //|
         if(Means<MeansStep)Means=MeansStep;                          //|
         lot=(MeansStep*MathFloor(Means/MeansStep))/MeansStep*Risk;   //|
      break;                                                          //|
      default:lot=LOTS;                                               //|
   }                                                                  //|
   if(lot<1.0/MathPow(10,LotsDigits))lot=1.0/MathPow(10,LotsDigits);  //|
   LOTSTEP=MarketInfo(Symbol(),MODE_LOTSTEP);                         //|
   lot=MathFloor(lot/LOTSTEP)*LOTSTEP;                                //|
   lot=NormalizeDouble(lot,LotsDigits);                               //|
   if(lot>AccountFreeMargin())lot=-1;                                 //|
   return(lot);                                                       //|
}                                                                     //|
////////////////////////////////////////////////////////////////////////|
)
 

¿Puede decirme qué puede estar mal en este código? Es un trailing stop, pero al probarlo genera el error 1, al modificarlo. ¿Por qué no se modifica la orden?

Cuando estaba corrigiendo este error (hasta ahora sin éxito), al compilar el código principal del Asesor Experto en la función de impresión, comenzó a devolver un error, diciendo que necesita comillas, pero todo allí es correcto, y para corregir este error tengo que quitar y poner una nueva coma invertida...

bool trailingstop()
{
if ((OrderMagicNumber()==11111)==true)
{
Print("Mantener posición de compra");
while(OrderCloseTime()==0)
{
si ((Bid-OrderStopLoss())>(StopLevel*Point))
{
if (OrderModify(OrderTicket(),OrderOpenPrice(),ND(Bid-StopLevel*Point),0,0))
Print("StopLoss de la orden con el número ",OrderTicket()," y el número mágico ",OrderMagicNumber()," cambiado con éxito a ",OrderStopLoss());
else Print("El nivel de Stop Loss de la orden con el número ",OrderTicket()," y número mágico ",OrderMagicNumber(),". Error ",GetLastError());
}
}
si (OrderCloseTime()>0)
{
Print("La orden con el número ",OrderTicket()," y el número mágico ",OrderMagicNumber()," cerró al precio ",OrderClosePrice()," con un beneficio/pérdida ",OrderProfit());
return(true);
}
}
si no
{
if ((OrderMagicNumber()==22222)==true)
{
Print((Posición de venta);
while(OrderCloseTime()==0)
{
si ((OrderStopLoss()-Ask)>(StopLevel*Point))
{
if (OrderModify(OrderTicket(),OrderOpenPrice(),ND(Ask+StopLevel*Point),0,0))
Print("Stop Loss de la orden con el número ",OrderTicket()," y el número mágico ",OrderMagicNumber()," cambiado con éxito a ",OrderStopLoss());
else Print("El nivel de Stop Loss de la orden con el número ",OrderTicket()," y número mágico ",OrderMagicNumber(),". Error ",GetLastError());
}
}
si (OrderCloseTime()>0)
{
Print("La orden con el número ",OrderTicket()," y el número mágico ",OrderMagicNumber()," cerró al precio ",OrderClosePrice()," con un beneficio/pérdida ",OrderProfit());
return(true);
}
}
si no, return(false);
}
}
 
¡¡¡Gracias!!!
Razón de la queja: