[¡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 980

 

Permítanme darles la idea general.

Tienes que encontrar o identificar la primera flecha del historial desde la barra actual.

No importa si es arriba o abajo.

(A) Y luego guardar este hallazgo en una variable o una bandera. Por ejemplo GlobalFlag =-1 (si la flecha está abajo) y +1 si está arriba.

Luego, el precio siguió avanzando y alguna flecha se dibuja de nuevo.

En el EA, el ciclo de búsqueda se inicia cada vez con un nuevo tick, ¿verdad?

El bucle se inició de nuevo y encontró la flecha que se acaba de dibujar y la guardó en una variable o una bandera, es decir

es decir, se ejecutó el punto A.

Esa es la idea.

¿Por qué molestarse con la bandera y demás?

A continuación, esta bandera, es decir, donde la flecha estará mirando, se utilizará con otro indicador para confirmar la señal.

Por ejemplo, GlobalFlag=+1 (flecha hacia arriba) y otro indicador está señalando hacia arriba, significa que debemos entrar en el mercado.

Es decir, ambas condiciones deben coincidir en los indicadores.


¿Qué le parece este código?

Es decir, no necesito calcular en qué vela está la flecha, qué precio hay, etc. Lo principal es fijar el hecho

Lo principal es fijar la disponibilidad de la flecha y su dirección.

¿Puedo asignar true y falce ???? en lugar de +1 y -1 o no?


double DataIndUP, DataIndDN;
int    i, GlobalFlag, nBars = 250 ;  // nBars = количество проверяемых баров вглубь истории

for (i=0; i<nBars; i++) 
{
   DataIndUP = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вверх, i)
   DataIndDN = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вниз, i)
   if (DataIndUP !=EMPTY_VALUE)     // или if (DataIndUP !=0) // найдена стрелка вверх
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=+1                 // присвоение значения +1(стрелка вверх)  переменной 
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
if (DataIndDN !=EMPTY_VALUE)     // или if (DataIndDN !=0) // найдена стрелка вниз
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=-1                 // присвоение значения -1(стрелка вниз) переменной
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
}
 
Tupen:


Es un comienzo.


Por lo tanto, el punto de entrada A - vender y comprar se sitúa en 4 pips. 1 variante de comportamiento - el precio baja, - fijamos el beneficio en, digamos, 5 puntos desde el punto de entrada. - Si el precio sube, el número de puntos antes de fijar el beneficio también cambiará (un mínimo por ahora). Es decir, el programa tendrá que colocar 4 órdenes a la vez, )) ¿es posible programarlo?
 
Roman.:



Mensaje borrado por obscenidad

 
Vinin:

Mensaje borrado por obscenidad


Lo siento, generoso, no pude evitarlo. Harto de los cuentos de los Bosques de Viena...
 

Por favor, escriba un programa con 4 órdenes. Necesito ver la demo y ver la inversión

 
Tupen:

Por favor, escriba un programa con 4 órdenes. Tengo que mirar la demo y ver si puedo averiguar la opción de pivote.


Vea el hilo "Avalancha" - todo ha sido pensado a fondo allí con "todo", incluyendo las opciones de inversión.

No es necesario reinventar la rueda. Todo fue inventado por la gente hace mucho tiempo. Léalo, analícelo, utilícelo y aprovéchelo.

No llegarás pronto a la bicicleta "it" (léase: la solución)...

 

¿Puede decirme por qué no hay ciclicidad? En el probador, el Asesor Experto abre sólo dos operaciones.

extern int F = 8; //período de rápido МА
extern int S = 20; //periodo de MA lento
extern double Lotes = 0.1; // pedir lote
int Slippage = 5; // deslizamiento en pips.
int Magic = 123; //número de magia del Asesor Experto
int ticketell;
int ticketbuy;
int inicio()
{
double MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1);
double MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1);
// no hay orden con ticketell en la terminal O está cerrada Y la MA rápida es inferior a la lenta, ¡vende!
if ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
{
// si ya hemos tenido una orden contraria, de compra, cerrémosla :
if ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE);
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Magic,0,Red)
}
if ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
{
if ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
ticketbuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,Magic,0,Blue);
}
return(0);
}

 

Mirgha Prueba esto

extern int F = 8; //период быстрой МА
extern int S = 20; //период медл.МА
extern double Lots = 0.1; // лот ордера
int Slippage = 5; // проскальзывание в пп.
int Magic = 123; // магический номер эксперта
int ticketsell;  
int ticketbuy;

int start()
{
   double MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1);
   double MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1); 
   
   ticketsell = -1;
   ticketbuy = -1;
   for (int i = 0; i < OrdersTotal(); i++)
   {
      OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      {
         if (OrderType() == OP_SELL) ticketsell = OrderTicket();
         if (OrderType() == OP_BUY)  ticketbuy  = OrderTicket();
      }
    }
   // ордера с тикетом ticketsell в терминале нету ИЛИ он закрылся И быстрая МА ниже медленной, продаем !
   if ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
   {
      // если у нас при этом был противоположный ордер, бай, его закроем :
      if ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE);
      ticketsell = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,0,Magic,0,Red);
   } 
   if ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
   {
      if ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
      ticketbuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,0,Magic,0,Blue);
   }
   return(0);
} 
 
Gracias.
 

Mi pregunta sigue sin respuesta.

Aún así, ¿cómo puedo filtrar el número de señales entrantes del indicador? Por ejemplo, el Asesor Experto acepta la señal número tres para empezar a trabajar, es decir, se saltan las dos primeras señales y se acepta la tercera para actuar. Como he escrito arriba, he intentado implementarlo con variables globales, pero no funciona....