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

 
Shniperson >> :
Señores. ¿Cómo hacer que el trading en H4 tenga en cuenta las barras H1? por ejemplo if(......&& Close[0](barra H1)>High[1](barra H1) ???????????

Utilice iClose() y iHigh() - puede establecer un plazo arbitrario en estas funciones

 
No entiendo por qué la asignación de un buffer a otro no es correcta (el resultado del Buffer1 no se imprime en la ventana del indicador). Y la segunda pregunta, ¿por qué el indicador debe calcular la barra cero y la anterior (límite=2), cuando puede limitarse sólo a la barra cero actual?

#property indicator_separate_window
#property indicator_buffers 1

extern int FastMA=3;
extern int SlowMA=25;

double Buffer1[];


double Buffer2[];

int init()
{
SetIndexBuffer(0,Buffer1);
SetIndexBuffer(1,Buffer2);
return(0);
}

int start()
{
int limit,counted_bars;
counted_bars=IndicatorCounted(); //counted_bars=Bars-1
if(counted_bars>0) counted_bars--; //??? counted_bars=Bars-1-1
limit=Bars-counted_bars; //лимит теперь равен двум
for(int i=0; i<limit; i++){
Buffer2[i]=MathAbs(Close[i]-Open[i]);
}
for(i=0; i<limit; i++){
Buffer1[i]=Buffer2[i]*(-1);
}
}

 
Estimados programadores, por favor ayúdenme a insertar un sonido en el indicador que suene cuando el indicador cruce el cero. Gracias.
Archivos adjuntos:
 
C-4 >> :
No puedo entender por qué la asignación de un buffer a otro no es correcta (el resultado del Buffer1 no sale en la ventana del indicador)...

Falta SetIndexStyle(0,DRAW_LINE); para el buffer de dibujo, e IndicatorBuffers(2) para el buffer de cálculo;



 
¡Bingo! Bueno, por supuesto IndicatorBuffers(2), pensé que con especificar SetIndexBuffer era suficiente. Por cierto, incluso sin SetIndexStyle(0,DRAW_LINE), obtengo una fina línea negra - la configuración por defecto está activada.
 

Hola expertos.

¡Hice un EA que sólo cierra las órdenes abiertas!(comercio semiautomático).

Reglas de cierre: El cierre principal va al canal de precios, si rompe 1 punto arriba cierra SHELL,

Si 1 punto por debajo del cierre de BAY. Además, el seguro de equilibrio unos puntos a una cierta distancia.

Tengo una duda si lo he hecho todo bien, ¿el código es correcto!!!?

extern bool check=false; 
extern int PeriodP=12; 
extern double TrailingStop = 35;// расстояние после которого будем устанавливать безубыток
extern double X=5;//установка в + 5 пунктов! 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double P_up0, P_down0, P_up1, P_down1;
   int cnt, total;

  P_up0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,0);
  P_down0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,0);
  P_up1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,1);
  P_down1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,1);

    
   for( cnt=OrdersTotal()-1; cnt>=0; cnt--) {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&    OrderSymbol()==Symbol())   {
         if(OrderType()==OP_BUY) 
            {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 return(0); 
                }
            if( TrailingStop>0)  
              {                  
               if(Bid-OrderOpenPrice()>Point* TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point* TrailingStop && OrderStopLoss()!=OrderOpenPrice()+ X*Point)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ X*Point,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else  
         {
            
            if( P_up1< P_up0) 
            {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               return(0); 
              }
            if( TrailingStop>0)  
              {               
               if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
                 {
                  if(NormalizeDouble(OrderStopLoss(),Digits) != NormalizeDouble(OrderOpenPrice()- X*Point,Digits))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()- X*Point,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
            
           }
        }
     
   if ( check) Order_Open();
   return(0);
  }
//+------------------------------------------------------------------+

void Order_Open(){
   if (OrdersTotal()<=1) {
      OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"",20080421,0);
      OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",20080421,0);
   }
}
 
No hay ninguna condición para cerrar una posición larga, ahora la orden de compra se cerrará de todos modos.
Si tiene un exceso de pedidos, asegúrese de poner RefreshRates() antes o después de OrderSelect.
 
Roger >> :
No hay ninguna condición para cerrar la posición larga, ahora la orden de COMPRA se cerrará de todos modos.

Encontré el error. Realmente extrañé el cierre de BUY.

al menos la compilación se ha completado sin errores.

extern bool check=false; 
extern int PeriodP=12; 
extern double TrailingStop = 35;// расстояние после которого будем устанавливать безубыток
extern double X=5;//установка в + 5 пунктов! 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double P_up0, P_down0, P_up1, P_down1;
   int cnt, total;

  P_up0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,0);
  P_down0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,0);
  P_up1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,1);
  P_down1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,1);

    
   for( cnt=OrdersTotal()-1; cnt>=0; cnt--) {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&    OrderSymbol()==Symbol())   {
         if(OrderType()==OP_BUY) {  
            
            if( P_down1> P_down0) {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 return(0); 
                }
            if( TrailingStop>0)  
              {                  
               if(Bid-OrderOpenPrice()>Point* TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point* TrailingStop && OrderStopLoss()!=OrderOpenPrice()+ X*Point)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ X*Point,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
            else  
            {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               return(0); 
              }
            if( TrailingStop>0)  
              {               
               if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
                 {
                  if(NormalizeDouble(OrderStopLoss(),Digits) != NormalizeDouble(OrderOpenPrice()- X*Point,Digits))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()- X*Point,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
            
           }
        
     }
   if ( check) Order_Open();
   return(0);
  }
//+------------------------------------------------------------------+

void Order_Open(){
   if (OrdersTotal()<=1) {
      OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"",20080421,0);
      OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",20080421,0);
   }
}
 

una pregunta muy "simple": ¿cómo se calcula el precio de 1 (un) lote abierto del índice en la moneda del depósito?

Ejemplo: ayer abrí 1 lote de nikkei el precio en el momento de la apertura era de 9400 pips. pregunta: ¿cómo puedo saber cuánto dinero era 9400 (¡NO el depósito! es decir el precio del lote) en la moneda del depósito en el momento de la apertura?

 
jobber писал(а) >>

una pregunta muy "simple": ¿cómo se calcula el precio de 1 (un) lote abierto del índice en la moneda del depósito?

Ejemplo: ayer abrí 1 lote de nikkei el precio en el momento de la apertura era de 9400 pips. mi pregunta es: ¿cómo puedo saber cuánto dinero eran 9400 (¡NO el depósito! es decir el precio del lote) en la moneda del depósito en el momento de la apertura?

i>MarketInfo() no ayudará con este parámetro.

Razón de la queja: