Ajuda na codificação - página 422

 
Mastercash:
Não quero que a ea abra mais de 5 ordens...... em um dado momento, por isso defini o parâmetro NumberofTrades como 5, nos parâmetros de entrada, mas ele ainda me atreverá, e aceitará mais de 5 ordens, ameaçando assim a minha gestão de dinheiro!

Mastercash

Este é o resultado de um teste:

Como você pode ver, nunca abriu mais de 5 pedidos para o mesmo símbolo e o mesmo número mágico ao mesmo tempo.

Arquivos anexados:
5_test.gif  87 kb
 

ok, eu posso ver...eu só não quero que sejam necessárias mais de 5 ordens para símbolos diferentes....e.g, digamos que haja um sinal de negociação de 10 símbolos nos últimos 20 minutos.... a ea deve levar apenas os primeiros 5 sinais de negociação, então quando qualquer uma dessas cinco ordens fechar, ele pode levar mais uma, certificando-se de que as ordens em execução atual através de vários símbolos não excedam 5.mas continue excedendo 5, não importa.....Algumas vezes são necessárias 5 ordens iguais do mesmo símbolo, o que também está errado.

mladen:
Mastercash

Isto é o resultado de um teste:

Como você pode ver, nunca abriu mais de 5 pedidos para o mesmo símbolo e o mesmo número mágico ao mesmo tempo.
 
Mastercash:
ok, eu posso ver...eu só não quero que sejam necessárias mais de 5 ordens para símbolos diferentes....e.g, digamos que haja um sinal de negociação de 10 símbolos nos últimos 20 minutos.... a ea deve levar apenas os primeiros 5 sinais de negociação, então quando qualquer uma dessas cinco ordens fechar, ele pode levar mais um, certificando-se de que as ordens em execução atual através de vários símbolos não excedam 5.mas ele continua excedendo 5, não importa.....Algumas vezes são necessárias 5 ordens iguais do mesmo símbolo, o que também está errado.

Se você quiser que ele tenha no máximo 5 pedidos sobre todos os símbolos, vá para a linha 144(if( OrderSymbol() != Symbol() ) continue;) e apague-o. E mantenha o número mágico para todas as instâncias em todos os símbolos iguais (para que ele possa contar as ordens abertas somente por aquela EA em todos os símbolos)

 

Olá Mladen

Eu tenho um bom índio que não é refrescante quando colocado em um TF mais alto.

Como você pode ver no gráfico quando eu não edito, ele permanece preso. Você poderia ajudar a resolver esse problema?

Eu adiciono o indicador e uma captura de tela

Arquivos anexados:
 
wolfsch:
Olá Mladen

Eu tenho um bom índio que não é refrescante quando colocado em um TF mais alto.

Como você pode ver no gráfico quando eu não edito, ele permanece preso. Você poderia ajudar a resolver esse problema?

Acrescento o indicador e uma captura de tela

wolfsch

Isso só pode acontecer no teste visual de retorno (que é um erro que o metatrader não corrigiu por no mínimo 7-8 meses, e é um erro do metatrader e não do indicador) e acontece com todos os indicadores de múltiplos períodos de tempo quando testados visualmente.

Em uso normal funciona bem (testado agora mesmo só por precaução, e tudo funciona como deveria funcionar em gráficos regulares)

 

Obrigado, vou trabalhar nisto e depois volto a falar convosco......

mladen:
Se você quiser que ele tenha no máximo 5 pedidos sobre todos os símbolos, vá para a linha 144(if( OrderSymbol() != Symbol() ) continue;) e apague-o. E mantenha o número mágico para todas as instâncias em todos os símbolos iguais (para que ele possa contar as ordens abertas somente por aquela EA em todos os símbolos)
 
mladen:
TFI

Buffer 3 é o correto (ou seja, o buffer de "tendência" que tem valores 1 para inclinação para cima e -1 para inclinação para baixo). Está usando os turnos 1 e 2, por isso está testando a 1ª barra fechada.

Comprar parte do código é OK.

Você deixou de fora a

if(trendc!=trendp)

da formiga da venda que pode estar lhe causando um problema

Olá Mladen,

muito obrigado pela sua ajuda. Eu mudei o código de acordo com

à sua sugestão, é um bom negócio, o cálculo da tubulação também é bom.

Mas agora não está mais abrindo negócios curtos (poderia ser também uma estratégia ;-)).

Está apenas fechando posições longas.

Você poderia aconselhar mais uma vez?

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

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

//| BUY |

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

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_BUY && OP_BUY<maxlongtrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==1 && (CCIFilter<80)) // code for buy

OpenBuy();

return(0);

}

openedOrders++;

}

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

//| SELL |

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

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_SELL && OP_SELL<maxshorttrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==-1 && (CCIFilter>80)) // code for sell

OpenSell();

return(0);

}

openedOrders++;

}

}

Por favor, veja a captura de tela em anexo para detalhes.

Agradecemos antecipadamente!

Com os melhores cumprimentos,

TFI

Arquivos anexados:
backtest.jpg  163 kb
 
tfi_markets:
Olá Mladen,

muito obrigado pela sua ajuda. Eu mudei o código de acordo com

à sua sugestão, é um bom negócio, o cálculo da tubulação também é bom.

Mas agora não está mais abrindo negócios curtos (poderia ser também uma estratégia ;-)).

Está apenas fechando posições longas.

Você poderia aconselhar mais uma vez?

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

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

//| BUY |

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

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_BUY && OP_BUY<maxlongtrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==1 && (CCIFilter<80)) // code for buy

OpenBuy();

return(0);

}

openedOrders++;

}

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

//| SELL |

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

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_SELL && OP_SELL<maxshorttrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==-1 && (CCIFilter>80)) // code for sell

OpenSell();

return(0);

}

openedOrders++;

}

}

Por favor, veja a captura de tela em anexo para detalhes.

Agradecemos antecipadamente!

Com os melhores cumprimentos,

TFI

TFI

Tente algo como isto :

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//-----------------------------------------------------

//

//-----------------------------------------------------

int clongs = 0;

int cshorts = 0;

for (i=OrdersTotal()-1;i>=0; i--)

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs < maxlongtrades && trendc== 1 && (CCIFilter<80)) OpenBuy();

if(cshorts 80)) OpenSell();

// Check the CCI condition

// it is not symetrical to buy condition

}

 

mladen,

Eu fiz a mudança no número 144 e unifiquei o número mágico, "MagicNumber" em todas as instâncias de símbolos.... Agora é necessário um máximo de 5 negociações de uma vez, mas agora repetem-se as negociações no mesmo símbolo ao mesmo tempo, por exemplo, se receber um sinal de venda no EURUSD , ele irá colocar a ordem de venda do EURUSD 5 vezes. Veja a imagem da ordem em tempo real que ela tomou dessa forma:

Mastercash:
Obrigado, vou trabalhar nisto, volto a lhe responder......
Arquivos anexados:
apcorrimage.png  39 kb
 
Mastercash:
mladen, eu fiz a mudança no número 144 e unifiquei o número mágico, "MagicNumber" através dos símbolos instâncias.... Agora são necessárias no máximo 5 negociações de uma vez, mas agora repetem-se as negociações no mesmo símbolo ao mesmo tempo, por exemplo, se receber um sinal de venda no EURUSD , ele irá colocar a ordem de venda do EURUSD 5 vezes. Veja a imagem da ordem em tempo real que ela tomou dessa forma:

Isso não depende dessa parte do código

Você tem que adicionar um cheque no resto do código para não abrir um pedido na mesma barra e no mesmo símbolo

Razão: