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

 
solnce600:

¡Buenos días a todos!

¿Podría decirme la mejor manera de codificar la siguiente condición

Si todas las velas del 1 al 20 son bajistas sin excepción (el número de puntos entre la apertura y el cierre de cada vela no importa)

Para abrir un pedido.

La única manera de hacerlo es redactar una orden de "trabajo".


Si pudiera escribirlo "a mano".

if(f) OrderSend(...); // открыть ордер Sell


bool f()
{
   for(int i = 1; i <= 20; i++)
    {
     if(Open[i] < Close[i]) return(false);
    }
    return(true);
}
 
AlexeyVik:

Bueno, a menos que se escriba en el acto.


Muchas gracias.
 
fmv_for_a_way:

Ciudadanos, ¿pueden decirme por qué el terminal de Alpari no puede hacer un pedido?

La función OrderSend tiene el siguiente aspecto

No hay parámetros iguales a cero. Lo he comprobado.

La distancia mínima de parada y beneficio según las condiciones del terminal = 0,1.

El terminal genera el error 130 y escribe sobre un beneficio o un stop no válido.

Los parámetros SL y TP son 11 y 1 (tras la normalización), respectivamente.

En los terminales Aforex, Diven FX, ForexClub, AlfaForex - sin problemas con el mismo código.

En el caso de Buy Stop y Take se cuentan a partir del precio Bid - este es uno.

En segundo lugar, dado que los precios de parada se calculan, es necesario normalizarlos. La normalización previa de SL y TP no es nada. A continuación, en la orden de negociación se sustituye el valor no normalizado de la expresión.

En tercer lugar, todos los precios deben cumplir con los requisitos y las restricciones comerciales. El nivel de StopLevel, por ejemplo, puede ser mayor que el tamaño de la orden de stop.

 

Por favor, indíqueme por qué es así.

Hay tres condiciones (en negrita), cuando se ejecutan simultáneamente, una orden se abre con éxito.

int inicio()

{

int ot = PedidosTotal();

int index=iHighest(NULL,0,MODE_HIGH,20,1);
int index1=iLowest(NULL,0,MODE_HIGH,20,1);
int index3=iLowest(NULL,0,MODE_HIGH,40,20);

if(Low[index1]==Low[1])

if(High[index]==High[20])

if(Low[index3]==Low[40]

if ( Bid==Low[40])

si (ot==0)

OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1500*Point,Ask-300*Point, "jfh",123 )

PROBLEMA

Una vez que añado una cuarta condición (marcada en rojo), la orden se abre SÓLO cuando se cumple la cuarta condición.

Lastres condiciones anteriores son ignoradas por el programa.

He intentado escribir las condiciones a través de &&.... no funciona

Cómo hacer para que la orden se abra cuando se cumplan las cuatro condiciones simultáneamente.

Gracias.

 
solnce600:

Por favor, indíqueme por qué es así.

Hay tres condiciones (resaltadas en negrita) que, cuando se ejecutan al mismo tiempo, abren con éxito una orden.

int inicio()

{

int ot = PedidosTotal();

int index=iHighest(NULL,0,MODE_HIGH,20,1);
int index1=iLowest(NULL,0,MODE_HIGH,20,1);
int index3=iLowest(NULL,0,MODE_HIGH,40,20);

if(Low[index1]==Low[1])

if(High[index]==High[20])

if(Low[index3]==Low[40]

if ( Bid==Low[40])

si (ot==0)

OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1500*Point,Ask-300*Point, "jfh",123 )

PROBLEMA

En cuanto añado una cuarta condición (marcada en rojo), la orden se abre cuando se cumple la cuarta condición SOLO.

El programa ignoralas tres condiciones anteriores.

He intentado escribir las condiciones a través de &&.... no funciona

Cómo hacer para que la orden se abra de una vez la ejecución de las cuatro condiciones.

Gracias.

Expanda los corchetes ya que el algoritmo debería funcionar.
 
artmedia70:

En el caso de la compra, el stop y la toma se calculan a partir del precio de la oferta, que es uno.

En segundo lugar, si se calculan los precios de las órdenes de detención, es necesario normalizarlos. El hecho de que el SL y el TP se hayan normalizado antes no es un gran problema. A continuación, en la orden de negociación se sustituye el valor no normalizado de la expresión.

En tercer lugar, todos los precios deben cumplir los requisitos y las restricciones de las operaciones comerciales. El nivel de StopLevel, por ejemplo, puede ser mayor que el tamaño de la orden de stop.



en alpari desde ayer cambió a ejecución de mercado, es decir

Primero comprar/vender sl=0;tp=0; luego modificar sl=100;tp=300;

 
AlexeyVik:
Expanda los corchetes ya que el algoritmo debería funcionar.

Gracias.
 
pako:


en alpari desde ayer cambió a ejecución de mercado, es decir

primero compra/venta sl=0;tp=0; luego modificación sl=100;tp=300;

Esto también está en el mismo lugar. Por supuesto, una cosa no se contradice con la otra. Cuenta las órdenes de compra de Ask. No los normaliza. No comprueba el límite de distancia de StopLevel.

En resumen, una mezcolanza.

 
Genial, las preguntas se borran, genial.
 
pako:


Alpari ha cambiado a la ejecución de mercado desde ayer, es decir.

primero compra/venta sl=0;tp=0; luego modificación sl=100;tp=300;


Gracias por los consejos. Lo investigaré. ¿Significa el cambio a la ejecución a mercado que las órdenes pendientes también deben colocarse con stops y beneficios cero y luego modificarse?
Razón de la queja: