Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1133
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
prıvet .podzajajajte pojalusta pogu na demo schete ne mogu otkrıt zdelkı
el comercio es disablet .oshıbka
No hay pecados, qué jura.
Cuáles son los errores del compilador
¡Algo que ver con el hecho de que la función debe ser global y esperar comas en lugares donde no tiene sentido ponerlas! Por ejemplo, en el separador entre la información sobre el corredor y el par negociado
Un consejo para un tonto. ¿Cómo puedo abrir una cuenta real?
¿Qué quiere decir con "ninguno"? Ordenar por ticket - siempre habrá un orden y no hay contradicción con la documentación, dice de ordenar por número de serie, no por ticket, son cosas diferentes.
Tenemos esta lista de pedidos en un momento dado (por ticket)
- Comprar #1
- Comprar #2
- BuyStop #3
- Venta #4
El orden de las entradas en la lista es: #1,#2,#3,#4Después de BuyStop #3, ¿qué orden tendrán las entradas en la lista?
¿Es el #1,#2,#4,#3?
Así que las entradas tampoco garantizan el orden.
Otro problema con el que me he encontrado. No juzgues, he estado estudiando el idioma durante 2 o 3 semanas, ¡quizás sea tonto!
La tarea del Asesor Experto es notificar al comerciante por correo electrónico cada 4 horas, si el margen libre en la cuenta ha añadido un cierto valor.
En el asunto del mensaje tienes que escribir el nombre del broker y el par negociado, y en el cuerpo del mensaje "¡Peligro! La detracción está por encima del límite. Adopte las medidas necesarias".
El compilador está funcionando mal, no soy bueno en inglés y no puedo averiguar cuál es el error.
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Tal vez en general hay una solución más fácil para este tipo de problema, pero hasta ahora lo veo sólo de esta manera)
//| exTestSendMail.mq4 |
//| Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
input double MessageMail = 50.0;
//---
double Sag=0;
string MailSubject="";
datetime PrevTime=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
MailSubject="Mail from EA "+MQLInfoString(MQL_PROGRAM_NAME);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
//--- Находим процент просадки и округляем до 1 знака
Sag=NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_MARGIN_FREE)/AccountInfoDouble(ACCOUNT_BALANCE)),1);
//--- Если открыт новый бар на H4
if(iTime(Symbol(),PERIOD_H4,0) !=PrevTime) {
//--- если просадка больше заданного
if(Sag>MessageMail) {
Alert(Symbol(), ": Просадка = ", DoubleToString(Sag,1), " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
string MailText=AccountInfoString(ACCOUNT_COMPANY)+" > Опасность! Просадка ("+DoubleToString(Sag,1)+"%) привысила допустимое значение. Примите необходимые меры.";
SendMail(MailSubject,MailText);
}
PrevTime=iTime(Symbol(),PERIOD_H4,0);
}
}
//+------------------------------------------------------------------+
Gracias. Prepara el envío de cartas.
cómo arreglarel valor de retorno '' OrderClose debe ser comprobado??????????????????????????????
Estimados programadores, por favor ayuden a un novato en este negocio.
El EA está abriendo órdenes de compra y venta secuencialmente después de un cierto período de tiempo. Quiero que modifique todas las órdenes anteriores (en concreto, que todas las anteriores se cierren con el Take Profit de la última. Es decir, si la última orden de compra y la orden de venta anterior, entonces el stop loss de la orden anterior se establece en el nivel de take profit de la última,
Si la compra anterior compra, entonces su TakeProfit se fijará en el nivel del último TakeProfit. Bueno, etc. La cuestión es que cuando llega la toma de beneficios de la última orden, todas las órdenes deben estar cerradas).
Espero haberlo explicado con claridad, aunque es difícil entender cómo debe aplicarse. Gracias de antemano.
Entiendo que podemos pasar por todos los pedidos abiertos y modificarlos, pero ¿cómo podemos saltarnos el último pedido?