[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 298

 
El archivo contiene dos indicadores y el Asesor Experto en el que estoy trabajando (test-cifr), los indicadores funcionan por sí mismos, pero no puedo pegarlos en el Asesor Experto (el único propósito del Asesor Experto es la salida de valores), por favor ayúdeme a entender por qué no lo hacen y cómo pegarlos.
Archivos adjuntos:
 
Gracias y buena suerte para ti artmedia70
 
palomnik:
Gracias y buena suerte para ti artmedia70
Bien... Salud: es un recurso no renovable. Gracias :)
 
ed3sss:

Hola.

Cómo puedo mostrar en el gráfico la inscripción en el instrumento actual Ganancias/pérdidas de las órdenes abiertas.

Es difícil comprobar en el Asesor Experto si ha abierto posiciones o no (terminal on/off) y recoger el volumen del último lote antes de cerrar el terminal.

Gracias.


Hola, ¿no hay nadie que lo sepa?
 

Si he realizado alguna operación en el pasado, entonces uso la función orderprofit y luego sumo todo el historial de las operaciones.

Me pregunto si alguien tiene alguna respuesta a mi pregunta.

 
artmedia70:

Hay un fallo en ese código. Aquí, sacado de contexto:


La cuestión es que la expresión

Por lo tanto, el valor del lote se redondeará a un decimal.


Siga leyendo, puede que le ayude.



Desde luego, eso espero. Gracias. Voy a leer el hilo anterior para reforzar este punto. No quiero dejar ningún hueco.
 
ed3sss:

Hola, ¿hay alguien que sepa?


Bueno, a mi entender todo es elemental. Todo lo que necesitas es un conocimiento elemental.

1. Haces un exceso de pedidos.

2. Comprueba que la orden está abierta, es decir, que la hora de cierre de la orden es relativa a cero.

3. Si la orden está abierta, muestra sus datos necesarios, beneficio, tipo, etc.

 
palomnik:

Si he realizado alguna operación en el pasado, entonces uso la función orderprofit y luego sumo todo el historial de las operaciones.

Me pregunto si alguien tiene respuestas a mi pregunta.

Copie todo el código en su Asesor Experto

así

//+------------------------------------------------------------------+
//|                                                        Xrust.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


extern int    TimeFrame=0;//Если=0, то текуший
extern string FrApNam="Ap";//Имя линии соотв.Фракталу вверх
extern string FrDnNam="Dn";//Имя линии соотв.Фракталу вниз
extern color  ClAp=Blue;//Цвет линии соотв.Фракталу вверх
extern color  ClDn=Red;//Цвет линии соотв.Фракталу вниз
//-----------------------------------------------------------------------------+
double FrApPrise,FrDnPrise;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  if(TimeFrame==0){TimeFrame=Period();}
  IndicatorShortName("Factal_Level_Xrust"+TimeFrame);
  FrApNam=StringConcatenate(FrApNam,TimeFrame);
  FrDnNam=StringConcatenate(FrDnNam,TimeFrame); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  ObjectDelete(FrDnNam);
  ObjectDelete(FrApNam);
  Comment(" ");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   LineAp();
   LineDn();
   
   int diap=MathRound((FrApPrise-FrDnPrise)/Point);
   
   Comment("\n"," LineDn  = ",FrDnPrise,
           "\n", " LineAp  = ",FrApPrise,
           "\n"," diap  = ",diap );

//----
   return(0);
  }
//+------------------------------------------------------------------+
//-----------------------------------------------------------------------------+
// Ищет горизонтальную линию по имени перерисовывает если изменилась цена      |   
//-----------------------------------------------------------------------------+
   void  LineDn(){
   FrDnPrise=0;
   double  FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
   FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
   //Comment(FrPrise);
   if(ObjectFind(FrDnNam)==0){
     if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
   FrDnPrise=FrPrise;  
   ObjectDelete(FrDnNam);
   SetHLine(ClDn,FrDnNam,FrDnPrise,0,1);
   WindowRedraw();
   return;} 
//-----------------------------------------------------------------------------+
// Ищет горизонтальную линию по имени перерисовывает если изменилась цена      | 
//-----------------------------------------------------------------------------+
   void  LineAp(){
   FrApPrise=0;
   double FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
   FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
   if(ObjectFind(FrApNam)==0){
     if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}}
   FrApPrise=FrPrise; 
   ObjectDelete(FrApNam); 
   SetHLine(ClAp,FrApNam,FrApPrise,0,1);
   WindowRedraw();
   return;}
//-----------------------------------------------------------------------------+   
//   Киму Респект и уважуха !!!                                                |       
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень.         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy   - наименование инструмента      ("" или NULL - текущий символ)     |
//|    tf   - таймфрейм                     (    0       - текущий ТФ)         |
//|    mode - тип фрактала                  (MODE_LOWER|MODE_UPPER)            |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int    d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.03.2008                                                     |
//|  Описание : Установка объекта OBJ_HLINE горизонтальная линия               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    st - стиль линии                (0  - простая линия)                    |
//|    wd - ширина линии               (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (p1<=0) p1=Bid;
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_COLOR , cl);
  ObjectSet(nm, OBJPROP_STYLE , st);
  ObjectSet(nm, OBJPROP_WIDTH , wd);
}

o

o utilizar las funciones

int ObjectFind( string name) //Поиск объекта с указанным именем

double ObjectGet( string name, int prop_id) //Функция возвращает значение указанного свойства объекта

para buscar un objeto. No hay otra manera.
 
No, se inserta, pero el valor es completamente fuera de lo común.
 
palomnik:
No, funciona, pero el valor viene del techo


Intenta eliminar la configuración del indicador en el código del EA. A continuación, los ajustes se tomarán del código prescrito en el indicador.

A mí también me han salido valores de la izquierda, he quitado la configuración del código y está bien.

Razón de la queja: