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

 

Hola a todos,

por favor, aconsejar cómo averiguar el precio máximo que fue después de la formación de un fractal

 

Aquí está la función de negociación que abre posiciones:

//+-------------------------------------------------------------------------------------+
//| Открытие позиций                                                                    |
//+-------------------------------------------------------------------------------------+
bool Trade (int signal)
{
  double sl = 0, tp = 0;

  if(signal == SIGNAL_BUY && FindOrders() == 0)                                     // Если сигнал на покупку и открытых ордеров нет...
  {
    g_ticket = OpenBuy();                                                           // открываем лимитный ордер на покупку
  
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)  // Если ордер есть и он выбран..
    {
      if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
        sl = NormalizeDouble(OrderOpenPrice() - i_sl*Point,Digits);                 // Получаем значение стоп-лосса для выбранного ордера
      if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
        tp = NormalizeDouble(OrderOpenPrice() + i_tp*Point,Digits);                 // Получаем значение тейкпрофита для выбранного ордера
    }  
  }  
  else if(signal == SIGNAL_SELL && FindOrders() == 0)                               // Если сигнал на продажу и открытых ордеров нет..
  {
    g_ticket = OpenSell();                                                          // Открываем лимитный ордер на продажу
  
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)  // Если ордер есть и он выбран..
    {
      if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
         sl = NormalizeDouble(OrderOpenPrice() + i_sl*Point,Digits);                // Получаем значение стоп-лосса для выбранного ордера
      if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
         tp = NormalizeDouble(OrderOpenPrice() - i_tp*Point,Digits);                // Получаем значение тейкпрофита для выбранного ордера
    }
  }
  if(sl != 0 || tp != 0)                                                            // Если полученные значения sl и tp не равныы 0, то..
  {
    OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime);      // Модифицируем ордер
    return(true);
  }
  return(true);
}

Todo claro y conciso. El error 130 sigue apareciendo en el probador, aunque el Asesor Experto funciona, pero el error 130 sigue apareciendo. ¿Cuál es el motivo?

Esta función utiliza funciones de apertura de posiciones, aquí están:

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
int OpenBuy()
{
  g_ticket = -1;
  string myNote = "сов баянул";
         
  g_ticket = OrderSend(Symbol(),OP_BUYLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Blue);
  if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  
  return(g_ticket);
}
//+-------------------------------------------------------------------------------------+
//| Открытие короткой позиции                                                           |
//+-------------------------------------------------------------------------------------+
int OpenSell()
{
  g_ticket = -1;
  string myNote = "сов шортанул";

  g_ticket = OrderSend(Symbol(),OP_SELLLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Red);
  if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  
  return(g_ticket);
}

Pensé que tenía algo que ver con el nivel de parada, añadí comprobar, pero no es lo mismo. Lo he quitado por ahora ya que en Alpari este nivel es 0. Por favor, indique lo que hay que corregir para evitar este error.

 


 double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];

¿cómo grabar en formato 1.30320 para el EURUSD por ejemplo?
 
if(OrderTakeProfit()!=0&&OrderTakeProfit()!=OrderOpenPrice()+2*kio*Point&&Bid>OrderOpenPrice()+50*kio*Point)
               OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice()+2*kio*Point,0);
Hola a todos. ¿Podéis decirme qué pasa con el Error #1 cómo solucionarlo? Gracias.
 
rigonich:

Declare una variable de tipo datetime y asígnele el valorTime[0]. Una vez abierta la orden, si no es igual aTime[0], podrá abrir la siguiente orden y si es igual a Exit. En cuanto al criterio, no he mirado el código, pero parece que si es un estocástico, debería dispararse al cruzar en niveles de sobrecompra/sobreventa (normalmente >80 y <20%). Para mayor claridad, establezca los niveles al 20 y al 80 % en la configuración de los estocásticos
Rigonich:

Declare una variable de tipo datetime, asígnele el valorTime[0], después de abrir una orden, entonces si no es igual aTime[0, puede abrir la siguiente orden, si es igual a --salga del inicio. En cuanto al criterio, no he mirado el código, pero parece que si es un estocástico, debería dispararse al cruzar en niveles de sobrecompra/sobreventa (normalmente >80 y <20%). Para mayor claridad, establezca niveles de 20 y 80 % en los ajustes estocásticos.
Gracias)
 
Buenas tardes por favor ayuda, no puedo entender por qué se abren órdenes innecesarias ((, rodeadas en rojo en la captura de pantalla, aquí están los criterios
// Торговые критерии
   M_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  0);
   M_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  1);
   S_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,0);
   S_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,1);
 
   if (M_2 < S_2 && M_1>=S_1 ) 
      { 
       if (Total==1)
         {
          if (Vremya== Time [0]) 
          return; 
          T=Close_Order (Lts,Tip);
          Vremya= Time [0];
          if (T==true)
           { 
           Total=0;
           }
         } 
       if (Total==0)         
         { 
         if (Vremya== Time [0])  
         return;                                     
   
          Open_Order_B (Lts); 
          Vremya= Time [0];
            
         }                                      
      }
   if (M_2 > S_2 && M_1<=S_1 ) 
      { 
       if (Total==1)
          {
           if (Vremya== Time [0]) 
           return; 
           T=Close_Order (Lts,Tip); 
           Vremya= Time [0];
           if (T==true)
             {
             Total=0;
             }
          }
       if (Total==0)         
          {                                          
          if (Vremya== Time [0]) 
          return;                                     
          
          Open_Order_S (Lts); 
          Vremya= Time [0];                                              
          }
       }   
 
Equilibrium:
Buenas tardes, por favor, ayuda, no puedo entender por qué se abren órdenes no deseadas ((, en la captura de pantalla están rodeadas de rojo, aquí están los criterios

Intenta tomar los valores del indicador de 1 y 2 barras. Algo así.
 
i999i:

Hola a todos,

por favor, aconsejar cómo averiguar el precio máximo que fue después de la formación de un fractal


Siguiente fractal superior.
 

double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];

Buenas tardes, por favor, aconséjeme

¿Cómo puedo registrar 1,30320 para el EURUSD, por ejemplo?

 
hoz:

Aquí está la función de negociación que abre posiciones:

Todo claro y conciso. El error 130 sigue apareciendo en el probador, aunque el Asesor Experto funciona, pero el error 130 sigue apareciendo. ¿Cuál es el motivo?

Esta función utiliza funciones de apertura de posiciones, aquí están:

Pensé que tenía algo que ver con el nivel de parada, añadí comprobar, pero no es lo mismo. Lo he quitado por ahora ya que en Alpari este nivel es 0. Por favor, indique lo que hay que corregir para evitar este error.


Creo que se trata de la función GetPriceToInput().
Razón de la queja: