[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 283

 
Shniperson:

Hola, ¿podríais decirme cómo hacer un bucle en la comprobación de la barra arriba/abajo? Es decir, ¿cómo puedo describir esta condición "más corta"?

Close[0]>Open[0]&& Close[1]>Open[1]&& Close[2]>Open[2]&& Close[3]>Open[3]&&& Close[4]>Open[4]&& Close[5]>Open[5]&& Close[6]>Open[6]&& Close[7]>Open[7]

bool Res=true;
for(int i=0;i<8;i++) Res = Res && Close[i]>Open[i];

Gracias de antemano.


Podrías hacerlo, pero no es probable que sea más rápido. Hay que ampliar un poco las condiciones
 

No sé cómo convertir esto en una vida, ¿es posible hacerlo?

Mi estrategia es idealmente abierta manualmente a las 8:00 en la terminal, si el beneficio, entonces hasta el día siguiente. Si el beneficio no va en mi dirección, entonces en la pérdida invierto la posición + - no importa, no abro más posiciones este día y espero hasta las 8 de la mañana. Es decir, debe haber un máximo de dos pedidos y no más. Si no alcanzamos el beneficio, pero la red de arrastre se mueve hasta el punto de equilibrio, también hacemos un rollover. Por supuesto, podemos ocuparnos de todo, pero nuestro trabajo no nos permite controlar las posiciones. Sería mejor colocar una orden y dejar que el EA siga la posición. Adjunté el RSI sólo para probarlo en el Probador de Estrategias.

Esto es todo lo que necesitaba.

extern int Hour_To_Open = 08; //час открытия (-1 - не задано), терминальное время
extern int Minute_To_Open = 00; //минута открытия (-1 - не задано), терминальное время
extern double TakeProfit = 50;
extern double StopLoss = 30;
extern double Lot = 0.1;
extern int MagicNumber = 655433;


//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open)) 
{ //если настало время открытия сделок
int total = OrdersTotal();
for (int i = 0; i < total; i++) 
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
return(0);
}
} 
int ticket=1;
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>iRSI(NULL,0,14,PR ICE_CLOSE,1))
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid - StopLoss * Point,Bid + TakeProfit * Point,"My order #",MagicNumber,0,Blue);
if(ticket<0)
{
Sleep(30000);
}
}
else
{
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask + StopLoss * Point,Ask - TakeProfit * Point,"My order #",MagicNumber,0,Red);
if(ticket<0)
{
Sleep(30000);
}
}
} //end if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open))
//----
return(0);
}
//+------------------------------------------------------------------+

Tengo este trailing stop, lo tomé de otro EA pero no me funciona

extern bool UseTrailing = true; //включение/выключение T-SL
extern int TrailingStop = 50; // Фиксированный размер трала
extern int TrailingStep = 1; // Шаг трала

//+-------------------------------------------------------------------------------------------------------------------+
//| трейлинг стоп лосс |
void T_SL() {
int i=0;
for(i=0; i<OrdersTotal(); i++) {
if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if(OrderSymbol() != Symbol()) continue; 

if(OrderType()==OP_BUY) {
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits)) {
if(NormalizeDouble(OrderStopLoss(),Digits)<Normali zeDouble(Bid-(TrailingStop+TrailingStep-1)*Point,Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid-TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits))
} //end if(OrderType()==OP_BUY)

if(OrderType()==OP_SELL) {
if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its)) {
if(NormalizeDouble(OrderStopLoss(),Digits)>Normali zeDouble(Ask+(TrailingStop+TrailingStep-1)*Point,Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask+TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its))
} //end if(OrderType()==OP_SELL)
} //end for(i=0; i<OrdersTotal(); i++)
} //end void T_SL()
//| трейлинг стоп лосс |
//+-------------------------------------------------------------------------------------------------------------------+

¿Cómo lo adjunto? Y la inversión, debería funcionar sólo una vez después de la apertura de la posición

 

El reverso debe estar buscando en algún lugar por aquí, ¿lo tomo o no?

bool OrdenarCerrarPor(int ticket, int opposite, color Color=CLR_NONE)
Cerrar una posición abierta con otra posición abierta en el mismo instrumento, pero en sentido contrario. Devuelve TRUE si la función se completa con éxito. Devuelve FALSE cuando la función falla. Para obtener información sobre el error, llame a la función GetLastError().
Parámetros:
billete - Número de serie único de la orden que se va a cerrar.
frente a - El número de secuencia único de la orden opuesta.
Color - Color de la flecha de cierre en el gráfico. Si falta el parámetro o su valor es CLR_NONE, la flecha no se muestra en el gráfico.
Ejemplo:
 if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderCloseBy(order_id,opposite_id); return(0); }

 
Señores profesionales, ¿podrían decirme si es posible ejecutar un script desde la barra de herramientas? Por el momento, el script escrito tiene que ser ejecutado desde el navegador, o con una combinación preestablecida de teclas (que por alguna razón sólo funciona de vez en cuando). Pregunta - ¿Es posible, por ejemplo, asignar al icono del panel "herramientas gráficas" una nueva función y ejecutar el script desde la barra de herramientas? ¿Tal vez haya otras opciones?
 

Buenas tardes.

¿Puede decirme dónde puedo ver el código original de la función OrderSend()?

Gracias de antemano.

 
kon12:
Sr. Experto, aconséjeme, ¿es posible ejecutar el script desde la barra de herramientas? Por el momento, el script tiene que ser ejecutado desde el navegador, o usando una combinación preestablecida de teclas (que de alguna manera sólo funciona una vez). Pregunta: ¿es posible, por ejemplo, asignar una nueva función al icono del panel de "herramientas gráficas" y ejecutar el script desde la barra de herramientas? ¿Hay otras opciones?

No, pero se puede utilizar la función de arrastrar y soltar el objeto de la etiqueta como un ejemplo ...

Descargar , extraer a la terminal con el reemplazo, permitir la importación de dll en la configuración de la terminal, adjunto Asesor de Expertos a los expertos, introduzca el nombre de la secuencia de comandos para ser lanzado reiniciar la terminal o compilar.

El Asesor Experto implementa - carga el script en el gráfico especificado por su nombre al arrastrar el objeto en el gráfico.

      ServiceLoadScript(WindowHandle(Symbol(), Period()), "ZZ_All_Quotings 4.10425", /*<---- Имя загружаемого скрипта.*/  false);
Archivos adjuntos:
trade_1.mq4  2 kb
 

¡¡¡Buenas tardes!!!

Por favor, avisa. Estoy escribiendo un EA que funciona en la ruptura del canal, poniendo dos pendientes detrás del canal. Cuando uno de ellos se dispara, otro debe ser eliminado. ¿Cómo implementarlo en el código?

 
Parn25:

¡¡¡Buenas tardes!!!

Por favor, avisa. Estoy escribiendo un EA que funciona en la ruptura del canal, poniendo dos pendientes detrás del canal. Cuando uno de ellos se dispara, el otro debe ser eliminado. ¿Cómo implementarlo en el código?


Tal vez esto sería una buena idea - no lo he hecho yo mismo - si su EA permite sólo una orden de mercado (de 2 pendientes que fueron colocadas previamente), entonces monitoree (siga) la disponibilidad de su orden (de mercado) en el mercado y tan pronto como aparezca, elimine la pendiente. Eso es todo. Si quieres eliminar una orden pendiente, busca en Google algo como "eliminar órdenes site:mql4.com".
 

¡Hola!

Ejecutando el EA en el probador. El servidor tiene cuatro dígitos. Al colocar la orden de compra o venta en el registro dice

2011.10.23 15:27:26 2010.12.16 06:16 test_sovetnik GBPUSD,H1: open #1 buy 0.10 GBPUSD at 1.5551 sl: 1.4551 tp: 1.5586 ok

¡Pero abre a 1.55512 ! A los cinco dígitos. Entonces las órdenes pendientes se colocan a cuatro dígitos y se activan a cuatro dígitos también. Pero OP_SELL y OP_BUY se abren sólo con cinco dígitos.

Hago NormalizeDouble(Ask,Digits);

Nada funciona. Por favor, aconséjeme cómo resolver este problema.

Por supuesto, puedes ignorar el último dígito. El error no se produce, pero en aras de la pureza del experimento, necesito que todas mis operaciones se realicen con cuatro dígitos.

 
ZZZEROXXX:
Por favor, aconseje cómo arreglar un EA, por ejemplo, promedios móviles estándar, para convertirlo en un script con el fin de ejecutarlo en un marco de tiempo no estándar.


UP. Te agradecería que me dijeras cómo convertir un EA en un script en pocas palabras