[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 163
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Hola a todos...
¿Podría decirme cómo construir la ruta de acceso a los archivos del historial de MetaTrader 4? ¿Como "c:archivos de programametatrader 4historiaalpari-clásico"?
Muchas gracias, sergeev, creo que lo he encontrado...
Print("Terminal path: ", TerminalPath() + "\\history\\" + AccountServer() + "\\");
Esta línea da salida a la ruta correcta aunque el editor se equivoque en los colores... Probablemente deberías escribir el código en el bloc de notas. Es una broma.
Buenas noches a todos.
En el tutorial de Sergey Kovalev encontré un experto - trailing stop. Lo copié en MetaEditor, lo compilé, pero el programa no funciona. Por favor, indíqueme cuál es el motivo. Quizá esté haciendo algo mal.
¿está escrito en mql?)
sólo dame el código.
//-------------------------------------------------------------------- // modifystoploss.mq4 // Diseñado para ser usado como ejemplo en el tutorial de MQL4. //-------------------------------------------------------------------- extern int Tral_Stop=10; // Dist. pursuit //--------------------------------------------------------------- 1 -- int start() // Función especial start { string Symb=Symbol(); // Fin. ¡tool //--------------------------------------------------------------- 2 -- for(int i=1; i<=OrdersTotal(); i++) // Bucle de pedido { if (OrderSelect(i-1,SELECT_BY_POS)==true) // Si hay un siguiente { // Análisis del pedido: int Tip=OrderType(); // Tipo de pedido if(OrderSymbol()!=Symb||Tip>1)continue;// No es nuestra orden double SL=OrderStopLoss(); // SL de la orden seleccionada //------------------------------------------------------ 3 -- while(true) // Bucle de modificación { double TS=Tral_Stop; // Valor inicial int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Distancia mínima. if (TS<Min_Dist) // Si hay menos del valor permitido para la orden, entonces la orden se ejecutará. TS=Min_Dist; // Nuevo valor de TS //--------------------------------------------------- 4 -- bool Modify=false; // No se asigna a modificar switch(Tip) // Por tipo de orden { case 0 : // Orden de compra if (NormalizeDouble(SL,Digits)< // Si se desea menor. NormalizeDouble(Bid-TS*Point,Digits)) { SL=Bid-TS*Point; // entonces modifícalo cadena Text="Buy "; // texto para Buy Modify=true; // asignado para modificar } break; // salir si caso 1 : // Orden de venta si (NormalizeDouble(SL,Digits)> // si se pide arriba. NormalizeDouble(Ask+TS*Point,Digits)|| NormalizeDouble(SL,Digits)==0)/o igual a cero { SL=Ask+TS*Point; // entonces modifíquelo Text="Sell "; // Modify=true; // asignado para modificar } } // End switch if (Modify==false) // si no se modifica break; // exit while //--------------------------------------------------- 5 -- double TP =OrderTakeProfit(); // TP de la orden seleccionada. double Price =OrderOpenPrice(); // Precio de la orden seleccionada. int Ticket=OrderTicket(); // Número de la orden seleccionada. Alert ("Modificar ",Text,Ticket,". Esperando respuesta..."); bool Ans=OrderModify(Ticket,Price,SL,TP,0);/¡Modificarlo! //--------------------------------------------------- 6 -- if (Ans==true) // Ha funcionado :) { Alert ("Pedido ",Text,Ticket," modificado:)"); break; // Desde el bucle modificar. } //--------------------------------------------------- 7 -- int Error=GetLastError(); // Ha fallado :( switch(Error) // Supera los errores { case 130:Alert("Paradas erróneas. Inténtelo de nuevo."); RefreshRates(); // Refresca los datos continue; // En la siguiente iteración case 136:Alert("No hay precio. Esperando un nuevo tick..."); while(RefreshRates()==false) // Hasta el nuevo tick Sleep(1); // Retraso en el bucle continue; // Siguiente iteración case 146:Alert("El subsistema de negociación está ocupado.Inténtelo de nuevo"); Sleep(500); // Solución sencilla RefreshRates(); // Actualizar datos continue; // Siguiente iteración // Errores críticos case 2 : Alert("Error general."); break; // Exit switch case 5 : Alert("Versión antigua del terminal cliente."); break; // Exit switch case 64 : Alert("Cuenta bloqueada."); break; // Salir switch case 133:Alert("Trading prohibited"); break; // Salir switch default: Alert("Error ",Error);//Error } break; // Fin del bucle de modificación } // Fin del bucle de modificación //------------------------------------------------------ 8 -- } // Fin del análisis de la orden //--------------------------------------------------------------- 9 -- return; // Salir start() } //-------------------------------------------------------------- 10 --Buenas noches a todos.
En el tutorial de Sergey Kovalev encontré un experto - trailing stop. Lo copié en MetaEditor, lo compilé, pero el programa no funciona. Por favor, indíqueme cuál es el motivo. Quizá esté haciendo algo mal.
Usa esto:
En las variables de usuario escribimos:
En EA Start escribe:
// ----------------------------- Тралим ордера ------------------------------------ TrailingRyn_b(TrailingStop,TrailingStep,Proskalz,MAGIC,WaitProfit,false);Después de iniciar en los subprogramas personalizados escribir:
Funciones como ModifError() son mis funciones personalizadas - sólo muestran un mensaje de error. Escribe tus propios mensajes en su lugar.
https://docs.mql4.com/ru/indicators/iBands