Boa noite!
Estou pensando em combinar dois pares em um único EA. Já o fiz.
Mas de repente eu tive dúvidas. Eu o fiz assim:
extern bool GBP=true; extern bool EUR=true; - - - - - - - - - - - - - - - - - - - - int start() { double A = iRSI("GBPUSD", 0, .....); double B = iRSI("GBPUSD", 0, .....); double C = iRSI("EURUSD", 0, .....); double D = iRSI("EURUSD", 0, .....); //------------------------------------------------------ if (GBP) {//если есть разрешение true if (A<B) { double BID = MarketInfo("GBPUSD", MODE_BID); double ASK = MarketInfo("GBPUSD", MODE_ASK); double POINT =MarketInfo("GBPUSD",MODE_POINT); (ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...) }}} //---------------------------------------------------------- if (EUR) { //если есть разрешение true if (C>D) { double BID = MarketInfo("EURUSD", MODE____BID); double ASK = MarketInfo("EURUSD", MODE____ASK); double POINT =MarketInfo("EURUSD",MODE____POINT); (ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...) }}} //------------------------------------------------------------ return(0); }
Em linha e no Testador de Estratégia tudo funciona! Talvez esta não seja exatamente a maneira correta de fazê-lo:
extern bool GBP=true; extern bool EUR=true; - - - - - - - - - - - - - - - - - - - - int start() { //------------------------------------------------------ if (GBP) //если есть разрешение true{ double C = iRSI("GBPUSD", 0, .....); double D = iRSI("GBPUSD", 0, .....); if (A<B) { double BID = MarketInfo("GBPUSD", MODE_BID); double ASK = MarketInfo("GBPUSD", MODE_ASK); double POINT =MarketInfo("GBPUSD",MODE_POINT); (ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...) }}} //---------------------------------------------------------- if (EUR) { //если есть разрешение true double C = iRSI("EURUSD", 0, .....); double D = iRSI("EURUSD", 0, .....); if (C>D) { double BID = MarketInfo("EURUSD", MODE____BID); double ASK = MarketInfo("EURUSD", MODE____ASK); double POINT =MarketInfo("EURUSD",MODE____POINT); (ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...) }}} //------------------------------------------------------------ return(0); }A segunda opção também parece funcionar no testador.
Mas qual é a melhor maneira de fazer isso?
Costumo calcular todos os valores indicadores no início, ou seja, a variante 1, é mais fácil, não se confunde e o código é mais estruturado.
Obrigado! Para a resposta. Uma pergunta a mais. As paradas de trilha não querem funcionar. Eles trabalham individualmente no testador!
Mas online, funciona para um par. Mas para outro gera erro - logo após anexar o Expert Advisor.
Mas os negócios vão - somente sem rede de arrasto no segundo par.
Erro 130 modificando SL
int start() { РАСЧЁТ ИНДИКАТОРОВ { ПОКУПКА/ПРОДАЖА } for (int j=0; j<OrdersTotal(); j++) { if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1) { ИДЕТ КОД 1 ТРЕЙЛИНГА. } for (int r=0; r<OrdersTotal(); r++) { if (OrderSelect(r, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2) { ИДЕТ КОД 2 ТРЕЙЛИНГА } return(0); }Os códigos de rastreamento são os mesmos, mas as variáveis externas e internas têm caracteres diferentes.
Eu não consigo entender o que está errado. Talvez alguém me diga?
int start() { //РАСЧЁТ ИНДИКАТОРОВ //ПОКУПКА/ПРОДАЖА for (int j=0; j<OrdersTotal(); j++) { if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1) { ИДЕТ КОД 1 ТРЕЙЛИНГА. } if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2) { ИДЕТ КОД 2 ТРЕЙЛИНГА } } } return(0); }
Vou tentar, obrigado.
Parece estar funcionando!
Nenhum erro ainda. Esperando lucros para verificar a rede de arrasto.
Mais perguntas. Se você não se importa.
Em nenhum dos exemplos mais simples de experimentos com várias moedas. E onde eles estão disponíveis, não são para a mente fraca. É muito complicado para entender tudo.
Há um em meu código:
double BID = MarketInfo("GBPUSD", MODE_BID); double ASK = MarketInfo("GBPUSD", MODE_ASK); double POINT =MarketInfo("GBPUSD",MODE_POINT); //-------Проверяем условие на покупку------------- if (
No entanto, nos raros exemplos neste site quando um bloco semelhante está presente, há uma linha:
RefreshRates(); double BID = MarketInfo("GBPUSD", MODE_BID); double ASK = MarketInfo("GBPUSD", MODE_ASK); double POINT =MarketInfo("GBPUSD",MODE_POINT);
Eu também inseri esta linha. Ele compilou. Mas eu não noto nenhuma mudança no desempenho.
Quanto é necessário aqui? Talvez devesse ser deixado em minha EA. Funciona em todos os carrapatos. E utiliza um conjunto de valores -
//------заполняем массив значениями RSI GBPUSD ----------- double RSI_array[30]; int i=0; while (i<31) { RSI_array[i]=iRSI("GBPUSD",0,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i); i++;
1. no cálculo de indicadores para especificar moedas específicas e intervalos de tempo, por exemplo: iRSI("GBPUSD",60,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i); //mas aqui é um erro
2. obter preços, pontos, etc. usando MarketInfo.
3. usar iLow(...) em vez de Low[0], por exemplo
e se aplicam a todos os pares de moedas.
Boa sorte.
Erro! Em vez de "0" - eu coloco variáveis indicadoras para moedas - o cronograma no qual o Expert Advisor trabalha.
Meu consultor especializado parece funcionar sem problemas. E as redes de arrasto também funcionam.
E uma última pergunta, espero eu. Eu inseri mais um. Mas não é o indicador embutido, mas um indicador personalizado. No testador, este par funciona. Mas online, não vai! Mostra algo estranho: quase a cada segundo este indicador é colocado e apagado. ..... - algum conselho?
//***************************************************************
kLerk ! De todos os especialistas aqui esta semana, você é o único que respondeu à minha pergunta. E eu tive as respostas com as quais fiquei mais satisfeito. ( Exceto para perguntas sobre RefreshRates() )
Por favor, coloque seu endereço de e-mail aqui.
Como prova de minha gratidão, eu lhe enviarei um simples "Graal" comercial - EA! que foi inventado por meu bom amigo.(Concordo) Eu trabalho com ele com confirmação manual. Trabalho com ele como confirmação manual. Utilizo apenas dois Indicadores Induzidos incorporados.
Sem ironia, - que realmente é quase um "Graal" (em alguma habilidade de trabalhar com ele), - você verá depois de alguns minutos depois de recebê-lo! No entanto - que todos dêem uma olhada:
O símbolo ---------
Período 30 Minutos (M30) 2007.01.02 11:00 - 2007.08.15 00:00
Modelo Todos os carrapatos (baseado em todos os menores períodos disponíveis com interpolação fractal de cada carrapato)
Qualidade de modelagem 67,35%
Depósito inicial 10000,00
Lucro líquido 4009,24
Lucro total 6335.06 Perda total -2325.82
Rentabilidade 2,72 Pagamento previsto 21,44
Desembolso máximo 245,63 (2,18%) Desembolso relativo 2,18% (245. 63)
Total de comércios 187
Posições curtas (% ganho) 71 (80,28%)
Posições longas (% ganho) 116 (68,10%)
Ofícios rentáveis (% do total) 136 (72,73%)
Perdas comerciais (% do total) 51 (27,27%)
Maior comércio lucrativo 145,02, perdendo comércio -47. 77
Comércio lucrativo médio 46,58, perdendo comércio -45,60
Número máximo de ganhos contínuos (lucro) 9 (586. 96)
perdas (perdas) contínuas 4 (-189,99
E aqui está o gráfico de teste fora da amostra para novembro/dezembro do ano anterior de 2006:
Muito provavelmente, os parâmetros reais com os quais o indicador personalizado é chamado não correspondem aos parâmetros formais listados com a chave externa na listagem (número, ordem, tipo, ...). Um erro bastante comum.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Boa noite!
Estou pensando em combinar dois pares em um único EA. Já o fiz.
Mas de repente eu tive dúvidas. Eu o fiz assim:
Em linha e no Testador de Estratégia tudo funciona! Talvez esta não seja exatamente a maneira correta de fazê-lo:
A segunda opção também parece funcionar no testador.Mas qual é a melhor maneira de fazer isso?