[¡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 312
GarKain: ¿Puede alguien explicar cómo abrir una orden en cualquier momento de una barra y abrir la siguiente orden sólo en la siguiente barra?
Deberíamos recorrer la lista de pedidos. Si la hora de apertura de la siguiente orden es mayor o igual a la hora de apertura de la barra actual (Time[0]), debemos poner la bandera que prohíbe la apertura de órdenes en el par de divisas actual. En la siguiente vela, el bucle detectará que no existe tal orden y no colocará una prohibición, es decir, borrará la bandera que prohíbe la apertura de órdenes.
Hacemos un bucle con la lista de pedidos. Si la hora de apertura de la siguiente orden es mayor o igual que la hora de apertura de la barra actual (Time[0]), entonces se establece la bandera que prohíbe la apertura de órdenes en este par de divisas.
Si el código sólo funciona con un par de divisas, establezca una línea para descartar las órdenes de otros pares
pregunta. si el código funciona en varios pares de divisas y simultáneamente en varios marcos de tiempo, ¿se pueden poner diferentes números mágicos y realizar el cribado en él?
bool Times=true; if (OrdersTotal()>0){ for(int g=Total de Pedidos()-1; g>=0; g--){ datetime t; OrderSelect(g,SELECT_BY_POS); if (OrderMagicNumber()!=MagicNumber){continuar;} if (t<OrderOpenTime() || g==OrdersTotal()-1) t=OrderOpenTime();
if (t>=Time[0]) Times=false;}}
¿es esto correcto?
No es necesario declarar una variable dentro del bucle en cada iteración del mismo.
bool Torg=true;
for(int i=OrdersTotal()-1;i>=0;i--){
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордера № ",i);}
else {
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) { continue;}
if(OrderOpenTime()>=Time[0]){
Torg=false;
}
}
}
// теперь используем результат работы цикла// Если есть сигнал и торг разрешён, то открываем ордер
¿Puede alguien explicar cómo abrir una orden en cualquier momento de una barra y abrir la siguiente orden sólo en la siguiente barra?
Deberíamos recorrer la lista de pedidos. Si la hora de apertura de la siguiente orden es mayor o igual a la hora de apertura de la barra actual (Time[0]), debemos poner la bandera que prohíbe la apertura de órdenes en el par de divisas actual. En la siguiente vela, el bucle detectará que no existe tal orden y no colocará una prohibición, es decir, borrará la bandera que prohíbe la apertura de órdenes.
Hacemos un bucle con la lista de pedidos. Si la hora de apertura de la siguiente orden es mayor o igual que la hora de apertura de la barra actual (Time[0]), entonces se establece la bandera que prohíbe la apertura de órdenes en este par de divisas.
Muchas gracias.
Si el código sólo funciona en un par de divisas, entonces ponga una línea para cortar las órdenes de otros pares
Si el código sólo funciona con un par de divisas, establezca una línea para descartar las órdenes de otros pares
Puedes hacerlo.
Puedes hacerlo.
bool Times=true;
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
datetime t;
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){continue;}
si (t<OrderOpenTime() || g==OrdersTotal()-1) t=OrderOpenTime();
if (t>=Time[0]) Times=false;}}
¿es esto correcto?
bool Times=true;
if (OrdersTotal()>0){
for(int g=Total de Pedidos()-1; g>=0; g--){
datetime t;
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){continuar;}
if (t<OrderOpenTime() || g==OrdersTotal()-1) t=OrderOpenTime();
if (t>=Time[0]) Times=false;}}
¿es esto correcto?
No es necesario declarar una variable dentro del bucle en cada iteración del mismo.
bool Times=true;
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
datetime t;
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){continue;}
si (t<OrderOpenTime() || g==OrdersTotal()-1) t=OrderOpenTime();
if (t>=Time[0]) Times=false;}}
¿es esto correcto?
bool Times=true;
datetime t=Time[1];
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){continue;}
if (t<OrderOpenTime()) t=OrderOpenTime();
if (t>=Time[0]) Times=false;}}
¿es esto correcto?
No es necesario declarar una variable dentro del bucle en cada iteración.