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

 
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
               
               //SELL
               
               //EMA – период 10 пересекает с верху в низ EMA – период 200 , CCI пересекает уровень
 0,100 или-100 с вверху в низ; Свеча закрывается или находится ниже LMA – период 100
 
 bool CCInapravlenie=false;
 if(( CCI_50S>100&&CCI_50<100) ||(CCI_50S>0&&CCI_50<0)||( CCI_50S>-100&&CCI_50<-100 ) )CCInapravlenie=true;
 if(EMA_10S>EMA_20S&&EMA_10<EMA_20&&CCInapravlenie&&LMA_100<Ask&&!sellistavili){
 
 RefreshRates();   
           tocket=OrderSend (Symbol( ), OP_SELL,   lot , NormalizeDouble (Bid, Digits), 5 ,
 NormalizeDouble( Bid+ (stoploss*Point),Digits),   NormalizeDouble( Bid-( teykprofit*Point),Digits),   NULL, 450, 0, CLR_NONE);
           Error=GetLastError();if (Error==0){  
           Sleep(2000); RefreshRates();  
           tecket=OrderSend (Symbol( ), OP_SELL,  lot ,NormalizeDouble(Bid, Digits), 5,
 NormalizeDouble( Bid+ (stoploss*Point),Digits),   0, NULL, 450, 0, CLR_NONE); 
           if (Error==0){ profitsell = NormalizeDouble( Bid-( teykprofit*Point),Digits); tsenasell=Bid;  
           sellistavili= true; perenossell= false;  }}}
           
           if (Error!=0){  errorcomment = "Ошибка открытия  ордера OP_SELL"  + " " + Symbol() +  " " + ErrorDescript(Error); 
           Print (errorcomment);}
 
 
 if(tsenasell-30*Point>Bid&&!perenossell){Print ("третямодифи    " );
 OrderSelect( tocket, SELECT_BY_TICKET ); 
Posicionamiento
 
Dimka-novitsek:

¡Buenas noches! Lo siento, creo que ya le he hecho una pregunta en alguna parte. Uno con un takeprofit, y un trailing stop debería funcionar para el otro.

En cuanto uno toma ganancias, un trailing stop empieza a funcionar para el otro. Pues bien, ¡empieza a funcionar inmediatamente cuando se hacen los dos pedidos!

¿Cómo y qué selecciona OrderSelect, si el pedido con el ticket no está todavía en el historial?

En el bucle, recorre el historialOrderSelect(index, SELECT_BY_POS , MODE_HISTORY), comparando el valor de tocket con el ticket del pedido que se está seleccionando.

El OrderSelect(tocket, SELECT_BY_TICKET , MODE_HISTORY) devolverá true si el pedido con este ticket está presente en el terminal.

Pool - fuente de datos para la selección. Se utiliza cuando el parámetro select es igual a SELECT_BY_POS. Puede ser uno de los siguientes valores:

MODE_TRADES (por defecto) - la orden se selecciona entre las órdenes abiertas y pendientes,

MODE_HISTORY - la orden se selecciona entre las órdenes cerradas y borradas.

Y por si acaso, ponNormalizeDouble(Bid+treylingstop*Point, Digits)

 
¡¡¡Gracias!!! ¡Voy a trastear con mi código!
 
Qué Asesor Experto es el mejor para visualizar las operaciones. De nuevo, es deseable poder utilizar diferentes TFs al mismo tiempo. Gracias.
 

¡terminó el concejal! hace lo que quiere... pero...

La primera idea que me vino a la cabeza: ¿cómo funciona el probador con el historial comercial? Por ejemplo, si existe la condición "si 2 últimas barras fueron de pérdida - no comprar" . No sólo eso, sino que mi Asesor Experto ignora esta condición (tal vez un error - voy a pensar de nuevo). Pero, ¿qué ocurrirá cuando el probador abra sus propios tratos (que ya están ausentes en el historial de la terminal)? ¿A qué tickers se aplicará y en qué historial? el probador no parece asignar tickers a las operaciones. ¿el probador forma su propio historial de operaciones?

 
lottamer:

¡terminó el concejal! hace lo que quiere... pero...

La primera idea que me vino a la cabeza: ¿cómo funciona el probador con el historial comercial? Por ejemplo, si existe la condición "si 2 últimas barras fueron de pérdida - no comprar". No es suficiente que mi Asesor Experto ignore esta condición (puede ser un error - lo pensaré). Pero, ¿qué ocurrirá cuando el probador abra sus propios tratos (que ya están ausentes en el historial de la terminal)? ¿A qué tickers se aplicará y en qué historial? el probador no parece asignar tickers a las operaciones. ¿el probador forma su propio historial de operaciones?


todo está asignado - mira la pestaña "resultados". pero el probador no hace milagros - hay que saber usarlo
 
YOUNGA:

todo está asignado - mira la pestaña "resultados". pero el probador no hace milagros - hay que saber usarlo.

no hay un teletipo de varios dígitos como en la vida real. Hay un número de serie del acuerdo. ¿Lo decías en serio?
 
lottamer:

No hay un ticker multivalente como en el comercio real. Hay un número consecutivo de un acuerdo. ¿Lo decías en serio?


Si hubiera tantos pedidos en el probador como los que contabiliza el servidor, los datos también serían de varios dígitos.

El probador, al igual que el servidor, asigna a cada nueva orden un número de orden único (ticket), pero el servidor lo hace desde el momento en que se fundó la empresa de corretaje, para todos sus clientes y para todos los instrumentos.

 
int Count=0;
//+------------------------------------------------------------------+
//| función de inicialización experta|
//+------------------------------------------------------------------+
int init()
{
Alert ("La función init() ha fallado en el arranque");
return;
}
//+------------------------------------------------------------------+
//| función de arranque experto|
//+------------------------------------------------------------------+
int start()
{
double Price = Bid;
Count++;
Alert("New Tick ",Count," Price = ",Price);
return;
}
//+------------------------------------------------------------------+
int deinit()
{
Alert ("Deinit() triggered on unloading");
return;

}

Según tengo entendido, en este script a cada nuevo precio de oferta debería aparecer un mensaje ......, pero no es así ..... ¿qué pasa? ...¿qué hacer?

 
i999i:
int Count=0;
//+------------------------------------------------------------------+
//| función de inicialización experta|
//+------------------------------------------------------------------+
int init()
{
Alert ("La función init() ha fallado en el arranque");
return;
}
//+------------------------------------------------------------------+
//| función de arranque experto|
//+------------------------------------------------------------------+
int start()
{
double Price = Bid;
Count++;
Alert("New Tick ",Count," Price = ",Price);
return;
}
//+------------------------------------------------------------------+
int deinit()
{
Alert ("Deinit() triggered on unloading");
return;

}

Según tengo entendido, en este script a cada nuevo precio de oferta debería aparecer un mensaje ......, pero no es así ..... ¿qué pasa? ...¿qué hacer?

Probablemente active laopción "permitir que el EA opere" en la configuración del terminal.