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

 
Ibiss >> :

¿Cómo programar correctamente una salida en un cruce inverso de las líneas principal y de señal? porque las señales vienen en intervalos cortos de tiempo... y las órdenes no se cierran donde deberían en la condición...

¡esta pregunta me ha estado molestando durante mucho tiempo! ¡AYUDA!

Esta es la condición de salida:


No soy un as pero

if(OrderMagicNumber()!= MAGICMA || OrderSymbol()!=Symbol()) continue;

si (OMN no es igual a OMN o OS no es igual a OS) {entonces sigue}


pero significa que la orden no pertenece al Asesor Experto

pruebe con

if(OrderMagicNumber()!= MAGICMA || OrderSymbol()!=Symbol()) break;
 
Ibiss >> :

¿Cómo programar correctamente una salida en un cruce inverso de las líneas principal y de señal? porque las señales vienen en intervalos cortos de tiempo... y las órdenes no se cierran donde deberían en la condición...

¡esta pregunta me ha estado molestando durante mucho tiempo! ¡POR FAVOR!

Esta es la condición de salida:


Snachala narusyj sebe blok shemy svoego algorutma, chtob tu vuzyalno vudel chto tu doesh y po kakum yslovuyam y tebya zakruvayutsya orders, a vse eto delo perevestu v kod eto yge delo tehnuku - ya tak dymayu.

 

Señores, podrían decirme si hay algo preparado para mostrar los comentarios en el gráfico de cada orden. Por ejemplo, una flecha en un gráfico y al lado un comentario con un motivo. Quiero que se dibuje en tester :)

Gracias.

 
AndBar >> :

Snachala narusyj sebe blok shemy svoego algorithm, chtob tu vuzyalno vudel chto tu doaesh y po kakum yslovuyam y tebya zakruvayutsya orders, a vse eto delo perevestu v kod eto yge delo tehnuku - ya tak dymayu.


Hey hombre puedes hablar así o así :) >> Me estoy rompiendo los ojos. :)
 

costy, no ha servido de nada, pero ¡gracias!

¿quien sabe como hacer el cruce y retroceso para abrir y cerrar órdenes opuestas?

esto necesita algo de magia...ahhh...

Ya ves la cantidad de compras y ventas diferentes que debe haber... y sólo hay un par de piezas...

¿cómo puedo solucionar este problema?

¡que no le importa mirar el código! ¡por favor!

Todo está en el código del EA, no en el indicador... creo...

y los drawdowns son como... no puedes desear el 96%... a quién le importa :)

debería ser así:


Archivos adjuntos:
itrend.mq4  5 kb
 

En fin, decidí rehacer el EA después de leer sobre las variables globales, y ¡¡¡eureka!!!

y también hubo un problema con las garrapatas...

las operaciones se abren en todos los cruces, pero un gran PERO... se abren engrandes pilas...

gente, ¿cómo puedo arreglar este problema? tengan piedad))

aquí hay una captura de pantalla:


"No es para los débiles de corazón".

Archivos adjuntos:
ggftest.mq4  3 kb
 
Ibiss >> :

costy, no ha servido de nada, pero ¡gracias!

¿Alguien puede saber cómo hacer que las órdenes opuestas se abran y cierren al cruzar y volver a cruzar?

esto necesita algo de magia...ahhh...

Ya ves la cantidad de compras y ventas diferentes que debe haber... y sólo hay un par de piezas...

¿cómo se puede arreglar este fallo?

¡que no le importa mirar el código! ¡por favor!

Todo está en el código del EA, no en el indicador... creo...

y los drawdowns son como... no puedes desear el 96%... a quién le importa :)

así es como debe ser:



La forma más fácil:

En cada tick inicializamos 4 variables indicadoras. Dos para la línea roja y dos para la verde. Y dos variables de señal de comercio, respectivamente.

En este caso, el código debería ser así:

// ------ Пользовательские переменные -------------------
extern bool CloseObr=true;// закрывать ли противоположный ордер при возникновении торгового сигнала
// ---------- Вспомогательные переменные ------------
double Green_1, Green_2, Red_1, Red_2;// значения индикатора на первой и второй свечках
bool SigBuy, SigSell;// торговые сигналы
int TICKET;

int start(){
  Green_1=iCustom(****);// зелёная на первой свече
  Green_2=iCustom(****);// зелёная на второй свече
  Red_1=iCustom(****);// красная на первой свече
  Red_2=iCustom(****);// красная на второй свече
  
  // ------- формируем торговые сигналы -------------
  
  SigBuy=false;
  SigSell=false;
  
  if( Green_2<= Red_2 && Green_1> Red_1){// зелёная пересекает красную снизу вверх
    SigBuy=true;
  }
  if( Green_2>= Red_2 && Green_1< Red_1){// зелёная пересекает красную сверху вниз
    SigSell=true;
  }
  
  // ------ Сигналы сформированы. Торгуем ------------------
  if( SigBuy){
    if( CloseObr){
      // то удаляем все Sell-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки лонга);
  }
  if( SigSell){
    if( CloseObr){
      // то удаляем все Buy-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки шорта);
  }
}
En general, así es como debería funcionar el EA. Puede que no sea la versión más perfecta del conjunto de códigos, pero ilustra bien la lógica de su construcción.
 

drknn, ¡gracias por la idea y por el código)!


¿sabe usted cómo lidiar con una multitud de pedidos?)

 
Ibiss >> :

En fin, decidí rehacer el EA después de leer sobre las variables globales, y ¡¡¡eureka!!!

y también hubo un problema con las garrapatas...

las operaciones se abren en todos los cruces, pero un gran PERO... se abren en grandes pilas...

gente, ¿cómo puedo arreglar este problema? tengan piedad))

aquí hay una captura de pantalla:


">> No es para los débiles de corazón.



Pues entonces puedes hacerlo así:

// ------ Пользовательские переменные -------------------
extern bool CloseObr=true;// закрывать ли противоположный ордер при возникновении торгового сигнала
extern int MAGIC=0;// у ордеров открытых вручную магик = 0
// ---------- Вспомогательные переменные ------------
double Green_1, Green_2, Red_1, Red_2;// значения индикатора на первой и второй свечках
bool SigBuy, SigSell;// торговые сигналы
int TICKET;

int start(){
  Green_1=iCustom(****);// зелёная на первой свече
  Green_2=iCustom(****);// зелёная на второй свече
  Red_1=iCustom(****);// красная на первой свече
  Red_2=iCustom(****);// красная на второй свече
  
  // ------- формируем торговые сигналы -------------
  
  SigBuy=false;
  SigSell=false;
  
  if( Green_2<= Red_2 && Green_1> Red_1){// зелёная пересекает красную снизу вверх
    SigBuy=true;
  }
  if( Green_2>= Red_2 && Green_1< Red_1){// зелёная пересекает красную сверху вниз
    SigSell=true;
  }
  
  // ------ Сигналы сформированы. Торгуем ------------------
  if( SigBuy && SchBuy( MAGIC)==0){
    if( CloseObr && SchSell( MAGIC)>0){
      // то удаляем все Sell-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки лонга);
  }
  if( SigSell && SchSell( MAGIC)==0){
    if( CloseObr && SchBuy( MAGIC)>0){
      // то удаляем все Buy-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки шорта);
  }
return(0);
}
// --------- Пользовательские подпрограммы -----------------

// ==========================================================================================================================
// ************************* Счётчики ордеров *******************************************************************************
// ==========================================================================================================================


//=========== SchBuy()  ===============================
//  Функция возвращает количество Buy-ордеров
//   SchBuy      - счётчик Buy ордеров
//-----------------------------------------------------------
int SchBuy(int MAGIC){
  string SMB=Symbol();
  int SchBuy=0;
  int i;
  for ( i=OrdersTotal()-1; i>=0; i--) {
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { WriteError( i);}
    else {
      if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGIC){ continue;}
      if(OrderType()==OP_BUY){ 
        SchBuy++;
      }  
    }
  }
  return( SchBuy);
}                  
//==================================================================================================


//=========== SchSell()  ===============================
//  Функция возвращает количество Sell-ордеров
//  SchSell  - счётчик Sell ордеров
//-----------------------------------------------------------
int SchSell(int MAGIC){
  string SMB=Symbol();
  int SchSell=0;
  int i;
  for ( i=OrdersTotal()-1; i>=0; i--){
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { WriteError( i);}
    else {
      if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGIC){ continue;} 
      if(OrderType()==OP_SELL){
        SchSell++;
      }
    }
  }
 return( SchSell);     
}                  
//==================================================================================================
 
Bond >> :

Señores, podrían decirme si hay algo preparado para mostrar los comentarios en el gráfico de cada orden. Por ejemplo, una flecha en un gráfico y al lado un comentario con un motivo. Quiero que se dibuje en el probador).

>> Gracias.


Si queremos que se dibuje incluso en el probador, tendremos que hacer el código de programación a mano.

En este caso, es mejor establecer las flechas en las funciones OrderSend() y OrderClose().

El comentario puede imprimirse de varias maneras. En cuanto a los ya hechos, puedo decir que se trata de una tarea bastante específica: es poco probable que se pueda encontrar un código ya hecho.

He publicado mi script aquí en MQL4 que muestra el historial de operaciones en los gráficos. Mi idea fue modificada posteriormente por otros programadores. Sólo tenía flechas y líneas que mostraban los puntos de apertura/cierre de las órdenes. Más tarde, los comentarios a las órdenes y la indicación de los precios de ejecución aparecieron en los guiones de otros programadores. Esto puede ser bueno para encontrar aquí.