Tudo o que consegui foram estas funções, e decidi entender a lógica do programador. É por isso que eu estou fazendo perguntas. É para isso que serve este fórum.
Aqui vamos nós! Aí vêm funções mais interessantes! Por exemplo, retorna a distância em pips entre o mercado e a posição mais próxima. A seleção mais precisa das posições a serem verificadas é definida por parâmetros externos:
sy - Nome do instrumento. Se este parâmetro for definido, a função só verificará as posições do instrumento especificado. O "" ou NULL significa o símbolo atual.
op - Operação comercial, tipo de posição. Valores válidos: OP_BUY, OP_SELL ou -1. O valor padrão -1 significa qualquer posição.
mn - Identificador de posição (MagicNumber). O valor padrão de -1 significa qualquer MagicNumber.
satop:
A função DistMarketAndPos().
Aqui vamos nós! Vamos a funções mais interessantes! Por exemplo, retorna a distância, em pontos, entre o mercado e a posição mais próxima. A seleção mais precisa das posições a serem verificadas é definida por parâmetros externos:
sy - Nome do instrumento. Se este parâmetro for definido, a função só verificará as posições do instrumento especificado. O "" ou NULL significa o símbolo atual.
op - Operação comercial, tipo de posição. Valores válidos: OP_BUY, OP_SELL ou -1. O valor padrão -1 significa qualquer posição.
mn - Identificador de posição (MagicNumber). O valor padrão -1 significa qualquer MagicNumber.
Eutento fazer com que funcione para frente e para trás e abrir ordens para frente e para trás. Tenho um erro, ajude-me a consertá-lo.
Estoutentando fazer com que funcione para frente e para trás e abrir pedidos para frente e para trás com ele. Tenho um bug do qual não consigo me livrar, por favor, me ajude a consertá-lo.
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);
}
Alguém pode explicar por que você deve postar funções que não funcionam?
LevelWLoss' - identificador não declarado 'LevelProfit' - identificador não declarado 'ModifyOrder' - função não definida 'LevelWLoss' - identificador não declarado 'LevelProfit' - identificador não declarado 'ModifyOrder' - função não definida 6 erro(s), 0 aviso(s)
e isto está dentro da própria função
A função funciona, mas chama a função ModifyOrder, que deve ser adicionada ao código EA e também adicionar à EA as variáveis LevelWLoss e LevelProfit, algo como isto
Muito obrigado por este tópico do fórum. O maior agradecimento à lurii Tokman pelas características. Pessoalmente, estou quase pronto para equipará-lo ao Stroustrup. Obrigado!
Esta função retorna a soma de muitas posições em aberto. Uma seleção mais precisa das posições a serem levadas em conta é especificada por parâmetros externos:
sy - Nome do instrumento de mercado. Se este parâmetro for definido, a função considerará apenas as posições do símbolo especificado. O valor padrão "" significa qualquer instrumento de mercado. NULL significa o instrumento atual.
op - Operação comercial, tipo de posição. Valores válidos: OP_BUY, OP_SELL ou -1. O valor padrão -1 significa qualquer posição.
mn - Identificador de posição, MagicNumber. O valor padrão -1 significa qualquer identificador.
Não retorna!!!
não importa como eu o faça, zeros ou " função de manuseio de eventos não encontrada 4.mq4 1 1 "
Muito obrigado por este tópico do fórum. O maior agradecimento à lurii Tokman pelas características. Pessoalmente, estou quase pronto para equipará-lo ao Stroustrup. Obrigado!
Não se esqueça de agradecer também ao autor das características.
Função DistMarketAndPos().
Aqui vamos nós! Aí vêm funções mais interessantes! Por exemplo, retorna a distância em pips entre o mercado e a posição mais próxima. A seleção mais precisa das posições a serem verificadas é definida por parâmetros externos:
A função DistMarketAndPos().
Aqui vamos nós! Vamos a funções mais interessantes! Por exemplo, retorna a distância, em pontos, entre o mercado e a posição mais próxima. A seleção mais precisa das posições a serem verificadas é definida por parâmetros externos:
Eutento fazer com que funcione para frente e para trás e abrir ordens para frente e para trás. Tenho um erro, ajude-me a consertá-lo.
Exterior int TakeProfit = 150;
Lote duplo externo = 0,01;
MAGIC externo interno = 1234;
int start()
{
se (DistMarketAndPos()>150)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point)
}
retorno(0);
}
int DistMarketAndPos(string sy="", int op=OP_BUY, int mn=-1)
{
duplo 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, "")<0) p=0,00001; caso contrário p=0,01;
para (i=0; i<k; i++)
{
se(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
se ((OrderSymbol()==sy) && (op<0 || OrderType()==op))
{
se (mn<0 || OrderMagicNumber()==mn)
{
se (OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
se (r>d) r=NormalizarDuplo(d, 0);
}
se (OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
se (r>d) r=NormalizarDuplo(d, 0);
}
}
}
}
}
//----------------------------------------------------------------------------------------------------------------------------------------------
se (DistMarketAndPos()>150)
{
OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point);
}
retorno(0);
{
int DistMarketAndPos(string sy="", int op=OP_SELL, int mn=-1) //esta linha dá 1 erro,
// se esta linha for removida,
//é compila, mas então
//I não colocar op=OP_SELL,
// e, sem ele, o consultor especializado pensará,
// que a ordem a partir da qual você quer calcular
//distância é OP_BUY
if (sy===""" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
if (p==0) if (StringFind(sy, "")<0) p=0,00001; caso contrário p=0,01;
para (i=0; i<k; i++)
{
se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
se ((OrderSymbol()==sy) && (op<0 || OrderType()==op))
{
se (mn<0 || OrderMagicNumber()==mn)
{
se (OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
se (r>d) r=NormalizarDuplo(d, 0);
}
se (OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
se (r>d) r=NormalizarDuplo(d, 0);
}
}
}
}
}
retorno(r);
retorno(r);
}
}
//-------------------------------------------------------------------------------------------
OBRIGADO
Estoutentando fazer com que funcione para frente e para trás e abrir pedidos para frente e para trás com ele. Tenho um bug do qual não consigo me livrar, por favor, me ajude a consertá-lo.
OBRIGADO
Você deveria tentar:
E com perguntas aqui...
Função MovingInWL().
Alguém pode explicar por que você deve postar funções que não funcionam?
LevelWLoss' - identificador não declarado
'LevelProfit' - identificador não declarado
'ModifyOrder' - função não definida
'LevelWLoss' - identificador não declarado
'LevelProfit' - identificador não declarado
'ModifyOrder' - função não definida
6 erro(s), 0 aviso(s)
e isto dentro da própria função
Alguém pode explicar por que você deve postar funções que não funcionam?
LevelWLoss' - identificador não declarado
'LevelProfit' - identificador não declarado
'ModifyOrder' - função não definida
'LevelWLoss' - identificador não declarado
'LevelProfit' - identificador não declarado
'ModifyOrder' - função não definida
6 erro(s), 0 aviso(s)
e isto está dentro da própria função
A função funciona, mas chama a função ModifyOrder, que deve ser adicionada ao código EA e também adicionar à EA as variáveis LevelWLoss e LevelProfit, algo como isto
Exterior int LevelProfit = 1000;
Exterior int LevelWLoss = 50;
Muito obrigado por este tópico do fórum. O maior agradecimento à lurii Tokman pelas características. Pessoalmente, estou quase pronto para equipará-lo ao Stroustrup.
Obrigado!
A função GetAmountLotFromOpenPos().
Esta função retorna a soma de muitas posições em aberto. Uma seleção mais precisa das posições a serem levadas em conta é especificada por parâmetros externos:
Não retorna!!!
não importa como eu o faça, zeros ou " função de manuseio de eventos não encontrada 4.mq4 1 1
"
Muito obrigado por este tópico do fórum. O maior agradecimento à lurii Tokman pelas características. Pessoalmente, estou quase pronto para equipará-lo ao Stroustrup.
Obrigado!