Un asesor que seguiría la tasa en un gráfico de cinco minutos con condiciones después del lanzamiento: - página 7

 
int start()
{
if(OrdersTotal() !=0) return;

//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //El precio ha caído más que los puntos Delta
........


 
zhuki:
if(OrdersTotal ()!=0) return;

¿Qué pasa con las órdenes de otras personas (que utilizan otros símbolos y magos)? En el probador, funcionará, pero si hay algo más en la cuenta además de este EA, la forma correcta es la siguiente

bool NmbrOfOpened(int Magic){
 
   int  _OrdersTotal=OrdersTotal();
 
   if (_OrdersTotal>0) {
       for (int i=0; i<_OrdersTotal; i++) {    
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if (OrderMagicNumber()==Magic && OrderSymbol()==Symbol()) {
            return(true);  break; 
         }
       }
   }
   else return(false); 
 return(false);
}

La función devolverá false si no hay ninguna posición abierta por el símbolo actual con el mago especificado (pasado a él).

 
Vas a engañar al tipo, y no puede leer las descripciones.
Imagínate lo confundido que estará, por eso lo escribí de manera que lo entendiera mejor.
 
Muy bien, le estoy cogiendo el tranquillo :))
Ambos casos están al día, muchas gracias.
 
Sólo con el Asesor Experto todavía no entiendo cómo funciona la función Delta
Las operaciones no se activan bajo mis condiciones
Delta=30
Significa que quiero que mi Asesor Experto abra la posición +-30 en pips. Pero se abre a 5-10 pips arriba y abajo, no es claro....
 
La función Delta realmente no sabe cómo funciona :(
¿Tal vez haya alguna otra solución sencilla?
He encontrado una función
Distancia=30 // Distancia del precio actual al precio de la orden pendiente
¿Se puede implementar no sólo para las órdenes pendientes?
La idea es la misma: mantener un registro de la barra actual, su precio de apertura y si durante una barra de 5 minutos su precio aumenta o disminuye en, digamos, 30 pips desde el mercado abierto de esa barra de 5 minutos, sólo entonces abrir una posición......
Mi estrategia no funciona con órdenes pendientes.....

 

Y publicarías todo tu código aquí. Y ver por qué Delta no funciona...

 
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
#include <WinUser32.mqh>
#include <stdlib.mqh>
extern double StopLoss=30;                        // Stop Loss
extern double TakeProfit=3;                       // Take Profit
extern double Lots=0.5;                           // Объем сделки в %
extern double Slippage =3;                        // Максимальное отклонение от запрошенной цены
extern double MagicNumber=0;                      // Order ID
int  ticket;
int Delta=30;                                     // Сигнал приказа в пунктах
int TimeForSleep = 10;                            // Время для отдыха после сделки

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(OrdersTotal()!=0)  return; //Выполнять только одну сделку.

//----
if (iOpen(NULL,0,0)-Ask>=Delta*Point) //Цена упала больше или = Delta пунктов
//Null-тек инструмент, 0-тек.график, 0-слежка за тек баром
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);

}
if (iOpen(NULL,0,0)-Bid<=Delta*Point) //Цена выросла больше или = Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}




//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

Aquí está el código completo.....
 

Sí, claro. Delta.... no funciona

Aparentemente, aquí es necesario con signos (polaridad) de un Delta para entender en la compra y en la venta, "para" en el código de arriba, por ejemplo, en la compra de valor(iOpen(NULL,0,0)-Ask todo el tiempo será negativo. Y la operación se abre al precio de apertura de la barra (iOpen(NULL,0,0)-Ask>=Delta...

Si lo intentas de esta manera (compra) -

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов
 
es decir, eventualmente tenemos que probar esta variante:

int start()
{
if(OrdersTotal()!=0) return; //Sigue sólo una operación.

//----
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //El precio ha caído menos o = puntos Delta
//Instrumento de tek nulo, gráfico de tek 0, barra de tek de seguimiento 0
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Buy",MagicNumber,11111,Green);

}
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //El precio subió más o = puntos Delta
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green);
}
//----
return(0);
}
¿Estoy adivinando correctamente o he confundido Ask con Bid en las líneas:
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов