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

 
Порт-моне тв:

¿Puede alguien ayudarme?

Para no molestarse con los nombres de las figuras, puede encontrar la figura con las fechas de los puntos más recientes. Y entonces, cuando se encuentra esta figura, la pregunta es para usted: ¿qué evento debe ser rastreado? Intersección de horizontal, vertical, de arriba a abajo, de abajo a arriba.

El evento a observar es OnChartEvent.

 

¡Buenas tardes!

Antes podía poner un límite en el código para mostrar los valores del indicador en el monitor. Pero con este indicador, nada funciona. ¿Tal vez puedas ayudarme a poner un límite en el código? ¡Por favor!

Gracias.

Archivos adjuntos:
Tipu_MACD.mq4  18 kb
 

Hola. ¿Podría decirme cómo calcular el precio de la oferta?

¿Cómo puedo calcular un precio de oferta que varias posiciones de COMPRA tendrán un beneficio total de cero para los pares de divisas, donde la moneda base (primera) es el dólar, y el valor del pip no es constante y depende de los precios?

Para los pares en los que el dólar es la moneda cotizada (segunda) y el valor del pip es constante he derivado esta función,

double Null_BUY(){ 
   double null=0; double summ_count=0; double lots_count=0; double position_count=0;
   for (int i=OrdersTotal()-1; i>=0; i--){
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
        if (OrderSymbol() == Symbol() ){
            if(OrderType()==OP_BUY ){
               position_count=Bid-((OrderProfit()+OrderSwap()+OrderCommission()) / OrderLots()*MarketInfo(Symbol(), MODE_TICKVALUE))*Point; 
               summ_count+=position_count*OrderLots();
               lots_count+=OrderLots();
            }
         }
      }
   }
   if(lots_count!=0) null=NormalizeDouble(summ_count/lots_count, Digits);
   return(null);
}
 
Forallf:

¿Puedes darme una pista? He dibujado un segmento de línea en un gráfico. Necesito saber los precios de inicio y fin del segmento. ¿Se puede hacer?

He encontrado un ejemplo. Lo hice así.

//+------------------------------------------------------------------+
//|                                                        линия.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {  
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   //Проверим что есть трендовая линия и она в единственном экземпляре:
   if(ObjectsTotal(OBJ_TREND)!=1)
   {Comment("Нарисуйте 1 трендовую линию!");}

   //Получим ИМЯ трендовой линии:
   for(int i=0;i<ObjectsTotal();i++)
     {
      string name=ObjectName(i);
      if(ObjectType(name)==OBJ_TREND)
        {
         datetime t1=ObjectGet(name,OBJPROP_TIME1);
         datetime t2=ObjectGet(name,OBJPROP_TIME2);
         double p1=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE1),Digits);
         double p2=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE2),Digits);
         Comment(p1,"   ",p2);
        }
     }
  }
//+------------------------------------------------------------------+

Por favor, ayúdame a hacer un segmento más que sea horizontal a la mitad del primero. Voy a cambiar la longitud del primer segmento, por lo que la ubicación del segundo segmento debe cambiar también. Sorteo de PRICE2 10 velas por delante.

Archivos adjuntos:
EURUSDM12.png  25 kb
 
Forallf:

Encontré un ejemplo. Lo hice así.

Por favor, ayúdame a hacer otro segmento que sea horizontal a la mitad del primer segmento. Voy a cambiar la longitud del primer segmento, por lo que la ubicación del segundo también debería cambiar. Sorteo de PRICE2 10 velas por delante.

así.


369
369
  • 2021.01.07
  • www.youtube.com
лин
 
Iurii Tokman:

Ahí tienes...


Así que.
 
Forallf:
Sí.

esta bicicleta es una característica estándar de la terminal
llamada líneas de Fibonacci

 
Iurii Tokman:

esta bicicleta es una característica estándar de la terminal
llamada líneas de Fibonacci

El del medio es para mí como ejemplo. Habrá un nivel diferente y calculado.
 
Forallf:
El medio es para mí como ejemplo. Habrá otro nivel calculado.

Puedes encontrar cualquier punto de una línea conociendo las coordenadas. En su caso, conocemos los precios y las fechas de inicio y fin del segmento. También podemos encontrar el precio del medio = (precio inicial + precio final)/2. O cualquier otra fórmula que utilices.

Ahora podemos utilizar la primera función para encontrar el tiempo de un punto en un segmento.

//находит дату точки (координату X) на прямой, на заданную цену (координата Y)
datetime GetPointTimeOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, double ePrice3, string eSymbol, int eTimeFrame)
   {
   if(ePrice2-ePrice1==0) return(0.0);
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   int eIndex3=eIndex1+(int)((eIndex2-eIndex1)*(ePrice3-ePrice1)/(ePrice2-ePrice1));
   return(iTime(eSymbol,eTimeFrame,eIndex3));
   }

//находит цену точки (координату Y) на прямой, на заданное время (координата X)
double GetPointPriceOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, datetime eTime3, string eSymbol, int eTimeFrame)
   {
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   if(eIndex2-eIndex1==0) return(0.0);
   int eIndex3=(eTime3>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime3)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime3);
   return(ePrice1+(ePrice2-ePrice1)*(eIndex3-eIndex1)/(eIndex2-eIndex1));
   }
 
Aleksei Stepanenko:

Si lo que dices no tiene sentido, tendré que darte una pista:

Creo que lo tengo, ¡¡¡gracias!!!