¡Aquí vamos! ¡Aquí vienen más funciones interesantes! Por ejemplo, devuelve la distancia en pips entre el mercado y la posición más cercana. La selección más precisa de las posiciones a comprobar se establece mediante parámetros externos:
sy - Nombre del instrumento. Si se establece este parámetro, la función sólo comprobará las posiciones del instrumento especificado. El "" o NULL significa el símbolo actual.
op - Operación comercial, tipo de posición. Valores válidos: OP_BUY, OP_SELL o -1. El valor por defecto -1 significa cualquier posición.
mn - Identificador de posición (MagicNumber). El valor por defecto de -1 significa cualquier MagicNumber.
satop:
La función DistMarketAndPos().
¡Aquí vamos! ¡Pasemos a funciones más interesantes! Por ejemplo, devuelve la distancia, en puntos, entre el mercado y la posición más cercana. La selección más precisa de las posiciones a comprobar se establece mediante parámetros externos:
sy - Nombre del instrumento. Si se establece este parámetro, la función sólo comprobará las posiciones del instrumento especificado. El "" o NULL significa el símbolo actual.
op - Operación comercial, tipo de posición. Valores válidos: OP_BUY, OP_SELL o -1. El valor por defecto -1 significa cualquier posición.
mn - Identificador de posición (MagicNumber). El valor por defecto -1 significa cualquier MagicNumber.
Intento que funcione de un lado a otro y que se abran pedidos de un lado a otro. Tengo un error, ayúdenme a solucionarlo.
Estoyintentando que funcione de un lado a otro y abrir pedidos de un lado a otro con él. Tengo un fallo que no consigo eliminar, por favor ayúdenme a solucionarlo.
externint TakeProfit = 150;
externdouble Lot = 0.01;
externint MAGIC=1234;
//=====================================================================int start()
{
if (DistMarketAndPos(NULL,OP_BUY)>150)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point);
}
if (DistMarketAndPos(NULL,OP_SELL)>150)
{
OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point);
}
return(0);
}
//======================================================================== //+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает расстояние в пунктах между рынком и ближайшей |//| позицей |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| op - торговая операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
double d, p;
int i, k=OrdersTotal(), r=1000000;
if (sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) {
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
if (r>d) r=NormalizeDouble(d, 0);
}
if (OrderType()==OP_SELL) {
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
if (r>d) r=NormalizeDouble(d, 0);
}
}
}
}
}
return(r);
}
¿Puede alguien explicar por qué hay que publicar funciones que no funcionan?
'LevelWLoss' - identificador no declarado 'LevelProfit' - identificador no declarado 'ModifyOrder' - función no definida 'LevelWLoss' - identificador no declarado 'LevelProfit' - identificador no declarado 'ModifyOrder' - función no definida 6 error(es), 0 warning(s)
y esto es dentro de la propia función
La función funciona, pero llama a la función ModifyOrder, que debería añadirse al código del EA y también añadir al EA las variables LevelWLoss y LevelProfit, algo así
Muchas gracias por este hilo del foro. El mayor agradecimiento a lurii Tokman por las características. Personalmente, estoy casi dispuesto a equipararlo a Stroustrup. Gracias.
Esta función devuelve la suma de los lotes de las posiciones abiertas. Una selección más precisa de las posiciones a tener en cuenta se especifica mediante parámetros externos:
sy - Nombre del instrumento de mercado. Si se establece este parámetro, la función sólo tendrá en cuenta las posiciones del símbolo especificado. El valor por defecto "" significa cualquier instrumento de mercado. NULL significa el instrumento actual.
op - Operación comercial, tipo de posición. Valores válidos: OP_BUY, OP_SELL o -1. El valor por defecto -1 significa cualquier posición.
mn - Identificador de posición, MagicNumber. El valor por defecto -1 significa cualquier identificador.
¡¡¡No vuelve!!!
no importa cómo lo haga, o bien ceros o " función de manejo de eventos no encontrada 4.mq4 1 1 "
Muchas gracias por este hilo del foro. El mayor agradecimiento a lurii Tokman por las características. Personalmente, estoy casi dispuesto a equipararlo a Stroustrup. Gracias.
No te olvides de dar las gracias también al autor de los artículos.
Función DistMarketAndPos().
¡Aquí vamos! ¡Aquí vienen más funciones interesantes! Por ejemplo, devuelve la distancia en pips entre el mercado y la posición más cercana. La selección más precisa de las posiciones a comprobar se establece mediante parámetros externos:
La función DistMarketAndPos().
¡Aquí vamos! ¡Pasemos a funciones más interesantes! Por ejemplo, devuelve la distancia, en puntos, entre el mercado y la posición más cercana. La selección más precisa de las posiciones a comprobar se establece mediante parámetros externos:
Intento que funcione de un lado a otro y que se abran pedidos de un lado a otro. Tengo un error, ayúdenme a solucionarlo.
extern int TomaDeBeneficio = 150;
extern double Lote = 0,01;
extern inttern MAGIC = 1234;
int inicio()
{
si (DistMarketAndPos()>150)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point)
}
return(0);
}
int DistMarketAndPos(string sy="", int op=OP_BUY, int mn=-1)
{
doble d, p;
int i, k=Total de pedidos(), r=1000000;
if (sy=="" | sy=="0") sy=Símbolo();
p=MarketInfo(sy, MODE_POINT);
si (p==0) si (StringFind(sy, "")<0) p=0,00001; si no p=0,01;
for (i=0; i<k; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
si ((OrderSymbol()==sy) && (op<0 || OrderType()==op))
{
if (mn<0 || OrderMagicNumber()==mn)
{
if (OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
si (r>d) r=NormalizeDouble(d, 0);
}
if (OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
si (r>d) r=NormalizeDouble(d, 0);
}
}
}
}
}
//----------------------------------------------------------------------------------------------------------------------------------------------
si (DistMarketAndPos()>150)
{
OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point);
}
return(0);
{
int DistMarketAndPos(string sy="", int op=OP_SELL, int mn=-1) //esta línea da 1 error,
//si se elimina esta línea,
//compila, pero entonces
//No pongo op=OP_SELL,
//y sin ella, el Asesor Experto pensará,
//que el orden a partir del cual se quiere calcular
//la distancia es OP_BUY
if (sy=="" | sy=="0") sy=Símbolo();
p=MarketInfo(sy, MODE_POINT);
si (p==0) si (StringFind(sy, "")<0) p=0,00001; si no p=0,01;
for (i=0; i<k; i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
si ((OrderSymbol()==sy) && (op<0 || OrderType()==op))
{
if (mn<0 || OrderMagicNumber()==mn)
{
if (OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
si (r>d) r=NormalizeDouble(d, 0);
}
if (OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
si (r>d) r=NormalizeDouble(d, 0);
}
}
}
}
}
return(r);
return(r);
}
}
//-------------------------------------------------------------------------------------------
GRACIAS
Estoyintentando que funcione de un lado a otro y abrir pedidos de un lado a otro con él. Tengo un fallo que no consigo eliminar, por favor ayúdenme a solucionarlo.
GRACIAS
Deberías probarlo:
Y con preguntas aquí...
Función MovingInWL().
¿Puede alguien explicar por qué hay que publicar funciones que no funcionan?
'LevelWLoss' - identificador no declarado
'LevelProfit' - identificador no declarado
'ModifyOrder' - función no definida
'LevelWLoss' - identificador no declarado
'LevelProfit' - identificador no declarado
'ModifyOrder' - función no definida
6 error(es), 0 warning(s)
y esto dentro de la propia función
¿Puede alguien explicar por qué hay que publicar funciones que no funcionan?
'LevelWLoss' - identificador no declarado
'LevelProfit' - identificador no declarado
'ModifyOrder' - función no definida
'LevelWLoss' - identificador no declarado
'LevelProfit' - identificador no declarado
'ModifyOrder' - función no definida
6 error(es), 0 warning(s)
y esto es dentro de la propia función
La función funciona, pero llama a la función ModifyOrder, que debería añadirse al código del EA y también añadir al EA las variables LevelWLoss y LevelProfit, algo así
extern int BeneficioNivel = 1000;
extern int NivelPérdida = 50;
Muchas gracias por este hilo del foro. El mayor agradecimiento a lurii Tokman por las características. Personalmente, estoy casi dispuesto a equipararlo a Stroustrup.
Gracias.
La función GetAmountLotFromOpenPos().
Esta función devuelve la suma de los lotes de las posiciones abiertas. Una selección más precisa de las posiciones a tener en cuenta se especifica mediante parámetros externos:
¡¡¡No vuelve!!!
no importa cómo lo haga, o bien ceros o " función de manejo de eventos no encontrada 4.mq4 1 1
"
Muchas gracias por este hilo del foro. El mayor agradecimiento a lurii Tokman por las características. Personalmente, estoy casi dispuesto a equipararlo a Stroustrup.
Gracias.