[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 142

 
E_mc2 >> :

Si le preocupa quedarse dormido, cambie esta línea

\ si ( WarningMode>0 ) PlaySound(soundfile); \N - si

indicador a este

\ if ( WarningMode>0 && shift==0) GlobalVariableSet("Alarm",1); \ if

y crear un indicador como este

int start()
{if(GlobalVariableGet("Будильник"))PlaySound("news.wav");
return(0);
}

Y cuando te quedas dormido no sólo pones el indicador principal sino también el despertador.

El despertador puede desconectarse manualmente cambiando el valor 0 de la variable Despertador mediante la tecla F3.

 
Urain >> :

¿Para qué lo necesitas? Cuéntame más sobre esto, tal vez haya una solución, y no sabes cómo hacer las preguntas correctas para que la gente lo entienda.

Tengo dos soluciones para lo que has escrito, me llevará demasiado tiempo escribir dos a la vez :)

..

Por cierto, es mejor adjuntar esos códigos largos como un archivo.

Y para el código hay un botón especial SRC

Sí, lo necesito para no perder la señal). Una vez que sólo suena una alerta, es fácil que se pierda, especialmente por la noche((( ¿Qué significa la alarma? ¿Qué pasará?

He cambiado la línea... He creado un nuevo indicador Alarm..... pero no lo entiendo... funciona todo el tiempo independientemente de que el indicador dé señal o no... Aunque no haya señal del indicador, el despertador pita continuamente)))) No hay señal, pero el despertador funciona...

 
E_mc2 >> :

Lo necesito para no perder la señal)) Sólo suena una vez la alerta, fácil de perder especialmente por la noche((( ¿Y qué significa - alarma??? ¿Qué pasará?

Cambie la línea en su indicador como se ha descrito anteriormente.

Compilar y ejecutar el indicador adjunto.

Sonará en cada tic, hasta que desactive el indicador o restablezca la variable global "Alarma"

Archivos adjuntos:
wxinptvxq.mq4  1 kb
 

Asesor experto en medias móviles .

He insertado las funciones KimIV para abrir una orden (GetSizeLot() OpenPosition CorrectTF(int TimeFrame=0) GetNameOP(int op) ModifyOrder() ExistPositions() Message()). Todavía no había llegado al cierre. He creado su propia función de datos del indicador void Indicat_Var(), para tener los datos del indicador en un solo lugar y poder utilizarlos en cualquier lugar del programa.

Cuando se accede con la función CheckForOpen() a Indicat_Var() todo va bien, pero cuando se accede con la función CheckForClose() a Indicat_Var() las órdenes no se cierran no entiendo por qué

También creo que las funciones CalculateCurrentOrders(string symbol) y ExistPositions() se duplican entre sí.

Por favor, ayúdenme a entender

Archivos adjuntos:
magkimiv.mq4  15 kb
 

La función de cálculo de lotes se proporcionó originalmente en la EA. Si ha añadido otro (GetSizeLot()), entonces (al menos) elimine el original - LotsOptimized()

//------------------------------------------------

Sí, es cierto. Las funciones que determinan la presencia de posiciones abiertas se duplican entre sí.

Uno de ellos puede ser eliminado. (Aprenda en qué se diferencian y cuál necesita más)

//--------------------------------------------

Ver https://www.mql5.com/ru/articles/1385

Ahí, justo ahí, hay una modificación de este EA con comentarios rusos en el código.

Modificación, - Exactamente, por cierre.

 

¿Marcamos los PUNTOS DE APERTURA y CIERRE en el gráfico?

Pregunta a los profesionales: ¿existe un indicador o guión de este tipo?

que dibuja los puntos de apertura y cierre en el gráfico?

de una orden? Los conecta con una línea,

El rojo es una pérdida. Útil para analizar los errores de la historia.

 

Creo que ya le han hecho esta pregunta.

Puede arrastrar una operación directamente desde el historial de la cuenta al gráfico correspondiente con el ratón.

Y obtendrá lo que busca.

He visto el guión en alguna parte. Creo que I. Kim tenía un guión así.

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=32

 

Pidiendo ayuda a los conocedores del Cursor con un precio,

Gracias.

 

Por favor, ayúdenme a entender por qué mis órdenes abiertas no se cierran cuando la tendencia cambia (condiciones de apertura). ¿Y cómo puedo solucionar este error?

El código es así para mí:

extern int TP=40;            //уровень Take Profit
extern int SL=0;              //уровень Stop Loss
extern double Lots1=0.2;      //лот основной сделки
extern double Lots2=0.1;      //лот вспомогательных сделок 
extern int slippage=2;        //проскальзование
int MagicNumber1=5345; //магическое число сделки BUY
int MagicNumber2=1612; //магическое число сделки SELL
// переменная для пятизнаков
int BrokerDecimal = 1;
// и просто нужные переменные (типа флажки)
double ticketbuy;
double ticketsell;



int init()
  {
  // Если брокер дает котировки по валюте с точностью в пять или три знака - пипс будет меньше стандартного в 10 раз - вводим множитель   
  if(Digits==3 || Digits==5) BrokerDecimal=10; 
  // Перемножить все уровни в пипсах на множитель
  SL           = SL * BrokerDecimal; 
  TP           = TP * BrokerDecimal;
  return(0);
  }

int start()
  {
  // Рассчеты и анализ индикаторов
  double jaw=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORJAW,1); //синяя линия (челюсть)
  double teen=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORTEETH,1);//красная линия (зубы)
  double lips=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORLIPS,1);//зеленая линия (губы)
  
  double lastClose=iClose(NULL,0,1);
  
  
  // Собственно тело программы  
  if((OrderSelect( ticketbuy, SELECT_BY_TICKET, MODE_TRADES) == false || OrderCloseTime() > 0 )
    && lips> jaw && lastClose> lips) // условие выставления ордеров БАЙ
    SEND_BUY(); // вынесем "модуль" выставления ордера бай - добавить внизу
  
  if((OrderSelect( ticketsell, SELECT_BY_TICKET, MODE_TRADES) == false || OrderCloseTime() > 0 )
    && jaw> lips && lastClose< jaw) // условие выставления ордеров СЕЛЛ
    SEND_SELL(); // вынесем "модуль" выставления ордера сэлл - добавить внизу
  
  if (OrdersTotal()>=1)
      {
        if(OrderSelect(0, SELECT_BY_POS, MODE_TRADES))
          {
            if(OrderType()==OP_BUY)
              {
                if(( lips== jaw || lips== teen) && lastClose== lips) // условия закрытия сделки БАЙ
                  while(OrdersTotal()>0)
                    {
                      CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");
                    }
              }
            if(OrderType()==OP_SELL)
              {
                if(( jaw== lips || jaw== teen) && lastClose== jaw) // условия закрытия сделки СЕЛЛ
                  while(OrdersTotal()>0)
                    {
                      CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");
                    }
              }
          }
        else
          {
            Print("ОШИБКА в Start()(блок закрытия при обратном движении) :OrderSelect() - ",GetLastError());
            return(-1);
          }
      }
         
  return(0);
  }

// "модуль" выставления ордера бай
void SEND_BUY()
  {
  double sl_buy;
  if(! SL)
  { 
  sl_buy=0;
  }
    else
    {
    sl_buy=Ask- SL*Point;
    }
    ticketbuy=OrderSend(Symbol(),OP_BUY, Lots1,Ask, slippage, sl_buy,Ask+ TP*Point,"take_trend", MagicNumber1,0,Blue);
          if( ticketbuy == -1)
          {
          Alert(Symbol(),"ошибка:бай", GetLastError());
          return(-1);
          }
            if( ticketbuy > 1)
            Alert (Symbol(),"бай - ок !");
  }

// "модуль" выставления ордера сэлл
void SEND_SELL()
  {
  double sl_sell;
  if(! SL)
  { 
  sl_sell=0;
  }
   else
   {
   sl_sell=Bid+ SL*Point;
   }
   ticketsell=OrderSend(Symbol(),OP_SELL, Lots1,Bid, slippage, sl_sell,Bid- TP*Point,"take_trend", MagicNumber2,0,Red);
         if( ticketsell == -1)
         {
         Alert(Symbol(),"ошибка:сэлл", GetLastError());
         return(-1);
         }
           if( ticketsell > 1)
           Alert (Symbol(),"сэлл - ок !");
   }

// МОДУЛЬ ЗАКРЫТИЯ СДЕЛОК ПРИ СМЕНЕ ТРЕНДА 
void CloseDirect(int cntr, string comm)
  {
    double closeprice;
    if(OrderSelect( cntr, SELECT_BY_POS, MODE_TRADES))
      {
        RefreshRates();
        if (OrderType()==OP_BUY)
          closeprice=Bid;
        else
          closeprice=Ask;
        if (OrderClose(OrderTicket(),OrderLots(), closeprice,10,Green))
        {
          Print( comm, OrderTicket());
        }
        else
          {
            Print("ОШИБКА в CloseDirect():OrderClose() - ",GetLastError());
          }
      }
    else
      {
        Print("ОШИБКА в CloseDirect():OrderSelect() - ",GetLastError());
      }
  }
 

¿Me pueden decir cómo obtener una señal de un rsi suavizado? (MA => RSI).