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

 

Amigos, ¿podéis decirme qué tengo que hacer para emitir un precio de 5 dígitos? Por ejemplo, estoy escribiendo un caso como este:

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

E imprime el precio con cuatro decimales.

Gracias de antemano))

 
rid >> :

¿Y en qué lugar del código pones esta función?

Estoy en las primeras etapas de escribir mi código... Así que no hay ningún lugar para ponerlo en ....

¿Puedes explicarme infantilmente cómo calcular el número de pedidos con el número mágico)?


 
Alex5757000 писал(а) >>

Amigos, ¿podéis decirme qué tengo que hacer para emitir un precio de 5 dígitos? Por ejemplo, estoy escribiendo un caso como este:

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

E imprime el precio con cuatro decimales.

Gracias de antemano))

¿Has probado con DoubleToStr()?

 
ArtY0m писал(а) >>

Estoy en las primeras etapas de escribir mi código... Así que no hay ningún lugar para ponerlo en ....

¿Puedes explicarme infantilmente cómo calcular el número de pedidos con el número mágico)?


La forma más fácil es mirar aquí https://book.mql4.com/ru/

 

Por favor, ayúdame. No entiendo nada.

Si durante la prueba visual del EA 1.mq4 (adjunto) pongo un indicador 3-cci (adjunto) en el gráfico, entonces, como parece, con exactamente los mismos parámetros de las señales calculadas del indicador cci y el cci real (texto del objeto en la esquina superior derecha) no coinciden.

¿POR QUÉ?

Y por alguna razón las alertas de este indicador no funcionan.

Archivos adjuntos:
pack_1.rar  2 kb
 
No puedo encontrar una referencia a un indicador que dibuje una vela de marco temporal alto en un gráfico de marco temporal bajo (es decir, ambas velas al mismo tiempo). ¿Quién puede decírmelo?
 
ArtY0m >> :

Estoy en las primeras etapas de escribir mi código... Así que no hay ningún lugar para ponerlo en ....

¿Puedes explicarme infantilmente cómo calcular el número de pedidos con número mágico)?


Un Asesor Experto (en su forma más sencilla) consta de varias partes.

En primer lugar, se establecen los parámetros externos y las variables globales.

Después suelen venir las funciones de inicialización y desinicialización.

A continuación, se ejecuta la función START, en la que se establece el algoritmo principal de trabajo del Asesor Experto.

En segundo lugar, vienen las funciones auxiliares definidas por el usuario.

Estas funciones definidas por el usuario se utilizan (se llaman) en la función START según sea necesario.

Esto es algo así:

//+------------------------------------------------------------------+
//|                                                    ZZ expert.mq4 |
//|                                        Copyright © 2008, Rid     |
//|                                            Rid                   |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Rid ."
#property link      "Rid "

extern string     _  = "---- ОБЩИЕ ПАРАМЕТРЫ -----"; 
extern int       MAGIC = 777;
extern double    lots=0.1;

extern string     __  = "---- ПАРАМЕТРЫ BUY -----"; 
extern int       StopLossBuy=110;
extern int       TakeProfitBuy=55;

extern string     ___  = "---- ПАРАМЕТРЫ SELL -----"; 
extern int       StopLossSell=110;
extern int       TakeProfitSell=55;

extern string    _____= "Параметры функции ТРЕЙЛИНГ СТОП";
extern bool   UseTrailing = true;//Выключатель трейлинг стопа
extern int    MinProfit = 25;    //порог включения трейлин стопа
extern int    TrailingStop = 25;// величина трейлинг стопа
extern int    TrailingStep = 5; // шаг трейлинг стопа


int ticket;
bool  gbDisabled  = False;             // Флаг блокировки советника
bool  gbNoInit    = False;             // Флаг неудачной инициализации
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>

//+------------------------------------------------------------------+
//| initialization function                                          |
//+------------------------------------------------------------------+
int init()
  {
gbNoInit= False;  
if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit= True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit= True; return;
  }
  }

//жжжжжжжжжжжжж ФУНКЦИЯ СТАРТ жжжжжжжжжжжжжжжжжж+

int start()
  {
//Отображаем на графике число открытых позиций
// с задааным магиком "MAGIC"
Comment("Число бай позиций = ", NumberOfPositions(NULL,OP_BUY, MAGIC), "\n",
"Число селл позиций = ", NumberOfPositions(NULL,OP_SELL, MAGIC),"\n",
"Хи-Хи, тра-ля-ля");

if ( UseTrailing) TrailPositions(); // выключатель трейлинг стопа 
  
//-------- открываем позиции 
if ( NumberOfPositions(NULL, OP_BUY, MAGIC)< 1){//если нет открытыз бай-поз
//открываем позицию бай:
ticket=OrderSend(Symbol(),OP_BUY, lots,Ask,3,Ask-Point* StopLossBuy,
Ask+Point* TakeProfitBuy,"Хи-Хи, тра-ля-ля", MAGIC,0,Blue);
                                             } 
//--------------------------------------------------------------
    return(0);//конец функции int start()
  }
//жжжжжжжжжжж КОНЕЦ ФУНКЦИИ СТАРТ жжжжжжжжжжжжжжжж+


//жжжжжжж ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ жжжжжжжжжжжжжжж+
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++)                                    {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES))      {
      if (OrderSymbol()== sy || sy=="")                   {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op)                   {
            if ( mn<0 || OrderMagicNumber()== mn) kp++;
          }}}}}  return( kp);}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
void TrailPositions() // функция трейлинг стоп
{
  int Orders = OrdersTotal();
  for (int i=0; i< Orders; i++) {
    if (!(OrderSelect( i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;    
     if (OrderType() == OP_BUY && OrderMagicNumber()== MAGIC)  {
      if (Bid-OrderOpenPrice() > MinProfit*Point) {
        if (OrderStopLoss() < Bid-( TrailingStop+ TrailingStep-1)*Point) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid- TrailingStop*Point,
                                                     OrderTakeProfit(), 0, Blue);
        } } }
    if (OrderType() == OP_SELL && OrderMagicNumber()== MAGIC)  {
      if (OrderOpenPrice()-Ask > MinProfit*Point) {
        if (OrderStopLoss() > Ask+( TrailingStop+ TrailingStep-1)*Point 
                                                       || OrderStopLoss() == 0) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+ TrailingStop*Point,
                                                      OrderTakeProfit(), 0, Blue);
        } } }      } }

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment( m);
  if (StringLen( m)>0) Print( m);
}        

Espero que ahora no tengas ninguna pregunta de este tipo.

 

Una pregunta más: ¿es posible colocar una orden pendiente desde una posición abierta y no desde el precio actual?

Gracias de antemano)

 

Por supuesto que sí. Sólo tenemos que asegurarnos de que esta orden pendiente se coloque a una distancia tal del precio actual para cumplir con los niveles de parada establecidos por las empresas de corretaje.

Por ejemplo, si una orden pendiente se coloca a 100 pips del último precio de apertura de la orden, pero se acerca demasiado al precio actual, el registro devolverá un error 130 para abrir la orden.

 
rid >> :

Por supuesto que sí. Sólo tenemos que asegurarnos de que esta orden pendiente se coloque a una distancia tal del precio actual para cumplir con los niveles de parada establecidos por las empresas de corretaje.

Por ejemplo, si la orden se establece a la distancia de 100 puntos del precio de apertura de la última posición, pero se acerca demasiado al precio actual, el registro devolverá un error 130 para abrir la orden.

¿Cómo, si no es un secreto?