Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 849

 
gince:

¿Por qué se muestra el objeto equivocado? Debería serun triángulo apuntando a la izquierdahttps://docs.mql4.com/ru/constants/objectconstants/arrows código 3, pero aparece una flecha apuntando hacia arriba Wingdings código 241.

Código del programa (tengoObjectSet(objName, OBJPROP_ARROWCODE, 3);)

Léelo con más atención. No recuerdo en detalle, pero el código 3 no forma parte de Wingdings.


ps; Esto es lo que hay en la nota.

Loscódigos de flechas especiales no se pueden utilizar en los indicadores personalizados cuando se establece el valor de la flecha para las líneascon estilo DRAW_ARROW.

 
Es un EA.
AlexeyVik:

Léelo con atención. No recuerdo en detalle, pero el código 3 no forma parte de Wingdings.


ps; Esto es lo que hay en la nota

Los códigos de flechas especiales no pueden utilizarse en la visualización de flechas cuando se establece el valor de la flecha para las líneasque tienen un estilo DRAW_ARROW.

Esto es un EA y tiene una función.

 
gince:
Es el concejal.
No importa.
 
AlexeyVik:
No importa.

¿Cuándo puedo hacerlo?

 
gince:
Este es el Asesor Experto.

Hay una segunda función en el mismo asesor. Todo está bien allí. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)

void f_ArrowOpen(
                  datetime openTime,
                  int action,
                  double lots,
                  string symb,
                  double openPrice
                  )
{
   color c;
   string op="";
      if(action==1)
      {
         c=Blue;
         op="BUY";
      }
      else if(action==-1)
      {
         c=Red;
         op="SELL";
      }
   // order open arrow name:    #76840865 buy 0.05 EURUSDc at 1.30416

      string objName = StringConcatenate("#", TimeToString(openTime,TIME_DATE|TIME_MINUTES), " ", op, " ", lots, " ", symb, " at ", openPrice);
      ObjectCreate(objName, OBJ_ARROW, 0, openTime, openPrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 1);
      ObjectSetText(objName, "LOT: " + DoubleToStr(lots, 2));
}
//+------------------------------------------------------------------+ 
void f_ArrowClose(
                  datetime closeTime,
                  int action,          //íàïðàâëåíèå
                  double lots,
                  string symb,
                  double openPrice,
                  double closePrice,
                  double profit)
{
      color c;
      string op="";
      if(action==1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_BUY";
      }
      else if(action==-1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_SELL";
      }
      
      string objName = StringConcatenate("#", closeTime, " ", op, " ", lots, " ", symb, " at ", openPrice, " close at ", closePrice);
      ObjectCreate(objName, OBJ_ARROW, 0, closeTime, closePrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 3);
      //ObjectSetText(objName, StringConcatenate("Profit: ", profit));
}
 
Por favor, dígame. El Asesor Experto negocia basándose en las señales del indicador en cada barra. ¿Qué debo hacer para que se comprueben las condiciones de cada garrapata? Estas son las condiciones del indicador :
int limit, i;
int counted_bars=IndicatorCounted(); // Cuántas barras se han contado ya
if (counted_bars<0) return(-1); // Comprobar posible error
if (counted_bars>0) counted_bars--; // Cuenta la última barra cont ada
limit=Bars-counted_bars; // Comienza desde la última barra contada
// - 1 - ============================ Fin del bloque ===================================

// - 2 - ======================= Mostrar indicador en el historial ======================
for(i = límite; i >= 0; i--)
{
FastMA= iMA(NULL, 0, FastMAPeriod, FastMAShift, FastMAMethod, FastMAPrice, i);
SlowMA¡= iMA(NULL, 0, SlowMAPeriod, SlowMAShift, SlowMAMethod, SlowMAPrice, i);

}
// - 2 - ============================ Fin de bloque ===================================

// - 3 - ======================= Salida de señal ========================================
//if (LastBar != Time[0]) // Una vez por barra
//{
¿es esto?
 
gince:

Hay una segunda función en el mismo asesor. Todo está bien allí. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)

¿Crees que voy a convencerte de que has entendido algo mal? Es mejor que dediques tu tiempo a los experimentos y a tratar de entender lo que has escrito.
 

Buenas tardes a todos.

¿Puedes decirme qué condición añadir antes de OrderSend, para que la orden no se ejecute si la posición abierta anterior está en déficit? Para que no haya un promedio.

 
Craft:

Buenas tardes a todos.

¿Puedes decirme qué condición añadir antes de OrderSend, para que la orden no se ejecute si la posición abierta anterior está en déficit? Quiero evitar la media.

En general, la comprobación es así

OrderSelect(ticket,SELECT_BY_TICKET);

if(OrderProfit()<0) { }


Y puedes poner lo que quieras entre paréntesis. Yo, por ejemplo, lo utilizo así para que funcione el método "Martin")

 
Buenas noches, podrían decirme por favor cómo funciona el EA. Si escribo return directamente en la función principal Start, ¿el EA termina? Gracias de antemano.