Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 63

 
FAQ:


Ya veo, más preguntas entonces:

Es necesario controlar la hora de apertura de la vela con la función : iTime

He intentado controlar el tiempo de apertura de una vela con esta función: iTime

La orden se abre en la vela de las 15 horas...... pero la vela de las 15 horas no suele ser la primera.

Antes, las velas anteriores ya habían estado en contacto con 1,3000.

Y quiero que sea la primera vela que cruzó 1,3000 a las 15 horas, sin ninguna otra vela.

Gracias.

 
a veces los novatos se quedan perplejos... exactamente la lógica, la simple lógica humana. y la programación es más bien lineal. trate de pensar en sus condiciones en una sola línea.
 
FAQ:
a veces los novatos se quedan perplejos... exactamente la lógica, la simple lógica humana. y la programación es más bien lineal. trate de pensar en sus condiciones en una línea.

Permítanme darles mi idea gráficamente.

http://clip2net.com/s/5vbxUK

¿Y cómo se puede plasmar esta idea en una línea?

Gracias.
 
en el tiempo, en orden inverso. así es como el programa lo analizará. imagine que está en el punto de decisión.
 
FAQ:
en el tiempo, en orden inverso. Así es como el programa lo analizaría.

Lo siento, no entiendo bien su intención.

Te agradecería que escribieras cómo podría quedar en forma de código...

Gracias.

 
solnce600:

¡Buenas tardes a todos!

Estaría muy agradecido a quien pueda decirme cómo codificar una idea así.


El gráfico TF 5

En este momento la oferta es de 1,3150

Hay un nivel de precios - 1,3000.

El precio baja.

====================================

// Si el precio cruza 1,3000.

// Si el precio cruza primero 1,3000.

// Si el precio cruza primero 1,3000 y el cruce está dentro de la velade 15 horas (es decir, 15:00,15:05.....15:55)


// Abrir una operación.

===================================

Gracias.



esto es sólo una idea sin aplicación completa

extern double crossLevel = 1.                       3;extern int hora = 15;int start(){    static int cross = 0;    if (TimeHour(TimeCurrent()) == hora) {// la vela corresponde a la hora        if (isCrossPrice(crossLevel, Bid)) {// nivel de cruce let Bid            cross++;            if (cross == 1) {// primer nivel de cruce                ifxml-ph// abra una orden - impleméntela usted mismo                    cross = 0;                }            }        }    }bool isCrossPrice(double level, double price){    bool res = false;    static double prev = 0;    if ( prev > 0) {        if ((prev <= nivel &&  precio > nivel) | // cruzar nivel arriba            (prev >= nivel && precio < nivel)) { // cruzar nivel abajo            res = verdadero;        }    }    prev = precio;    return(res);}
 
keekkenen:

es sólo una idea sin una aplicación completa


Muchas gracias.
 
solnce600:


Lo siento, no entiendo bien su intención.

Te agradecería que escribieras cómo podría ser en forma de código...

Gracias.


Todavía hay un largo camino hasta el código, hay que entender el principio, el algoritmo.
 

Llevo dos días luchando y no consigo resolverlo. Necesito encontrar el precio más bajo de las últimas n barras, pero no de la barra actual, sino de la barra recibida a través de la función. La función devuelve el índice de la barra en la que se abrió la orden. Esta es la barra a partir de la cual tenemos que buscar en el historial las n barras para encontrar el precio más bajo. Abajo está mi código, ¿qué tiene de malo?

 double low_price_n_bar()
 {
   
   double low_bar=100000, index_bar;
   
   for (int i=time_orders; i<=count_bar; i++) //time_orders индекс бара получаемого из функции, count_bars внешняя переменная количество баров для сдвига назад по истории
   {
    index_bar= ND(iLow(Symbol(),0,i));
    if (index_bar<low_bar)
    {
      low_bar=index_bar;     
    }
   
   }
   return(low_bar);
 }
 

Estimados usuarios del foro, por favor, ayúdenme mucho.


if (TimeBar==Time[0]) return(0);


double MA1 = NormalizeDouble(iMA(NULL,TimeFrame_2,MA_Period_2,MA_Shift_2,MA_Method_2,Applied_Price_2,0),Digits); // donde 0 es el desplazamiento de la barra actual por el conteo de periodos hacia atrás
//double MA21 = NormalizeDouble(iMA(NULL,timeframe_2,period_2,ma_shift_2,ma_method_2,applied_price_2,2),Digits);
double MA2 = NormalizeDouble(iMA(NULL,timeFrame_3,MA_Period_3,MA_Shift_3,MA_Method_3,Applied_Price_3,0),Digits);
//double MA31 = NormalizeDouble(iMA(NULL,timeframe_3,period_3,ma_shift_3,ma_method_3,applied_price_3,2),Digits)
double MA3 = NormalizeDouble(iMA(NULL,TimeFrame_4,MA_Period_4,MA_Shift_4,MA_Method_4,Applied_Price_4,0),Digits);

double OsMA = NormalizeDouble(iOsMA(NULL,TimeFrame_5,FastEMA_5,SlowEMA_5,SignalSMA_5,Applied_Price_5,0),Digits)

if (MaxOrders>b && Low[0]>=MathMax(MA1,MA2)&& Low[0]>MA3 && Ask>MathMax(MA1,MA2)+DeltaOpen*Point && Ask>MA3 && MA2<MA3 && MA1<MA3 && OsMA>0 && Trade)
{
if (OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,SL,TP, "Puria_1",Magic,0,Blue) ==-1) TimeBar=0;
else TimeBar=Time[0];

}
if (MaxOrders>s && High[0]<=MathMin(MA1,MA2) && High[0]<MA3 && Bid<MathMin(MA1,MA2)-DeltaOpen*Point && Bid<MA3 && MA1>MA3 && MA2>MA3 && OsMA<0 && Trade)
{
if (OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slippage,SL,TP, "Puria_1",Magic,0,Red) ==-1) TimeBar=0;
else TimeBar=Time[0];
}

return(0);


Con estas condiciones, el Asesor Experto abre una operación, digamos, de VENTA, la cierra con ganancias, e inmediatamente abre otra operación de VENTA. Cómo prescribir en un EA, que cuando se recibe la señal, sólo se debe abrir una operación, es decir, una señal - una operación.
Se lo agradezco de antemano.