Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 982
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Ontem eu escrevi o código, parece funcionar como deveria, mas somente quando eu chego ao valor máximo do array com o botão mais, ele reinicia para o início do array e se move para cima do array novamente. O que posso adicionar ou corrigir no código, para que quando ele atingir o valor superior da matriz, mais cliques no botão mais parem no índice superior e ele não seja reinicializado para a parte inferior da matriz? Ou o código pode ser simplificado de alguma outra forma para implementar esta idéia de clique de botão?
Provavelmente, sim.
Acho que sim.
Tentei isso também, funciona da mesma forma
Tentei isso também, funciona da mesma forma
Eu não percebi imediatamente, para que serve o ciclo?
Eu não percebi imediatamente, mas para que serve o loop?
Há alguma maneira de fazê-lo sem ele? Só não sei o que é melhor e só estou fazendo o que acho lógico.
Há alguma maneira de fazê-lo sem ele? Eu simplesmente não sei o que é melhor e faço o que penso ser lógico.
Bem, a lógica deve ser diferente. Ao pressionar o botão + aumenta o índice da matriz. Atingiu o máximo, não aumenta, mas permanece no máximo. Pressionado o botão - o índice diminuiu. Atingiu zero, não reage à pressão, permanece no índice 0.
Ou havia alguma outra idéia?
PS; E quem afixou o exemplo de trabalhar com bandeiras, em resposta a esta pergunta e a eliminou? Por que você o apagou? Afinal de contas, é uma solução muito boa para o homem. Por que ele precisaria de um conjunto limitado???Bem, a lógica deve ser diferente. Pressionando o botão + aumenta o índice da matriz. Atingiu o máximo, não aumenta, mas se mantém no máximo. Pressionado o botão - o índice diminuiu. Atingiu zero, não responde, permanece no índice 0.
Ou havia alguma outra idéia?
PS; E quem afixou o exemplo de trabalhar com bandeiras, em resposta a esta pergunta e a eliminou? Por que você o apagou? Afinal de contas, é uma solução muito boa para o homem. Por que ele precisaria de um conjunto limitado???Não, essa era exatamente a idéia. Eu realmente não sei como fazê-lo corretamente, por isso o fiz da maneira que o consegui. Mas notei que quando o loop está rodando no programa, desde que eu não clique nos botões do gráfico, todo o resto não funciona. É como se tudo estivesse pausado. Não entendo porque isso acontece, se houver variantes para implementar a idéia de forma diferente, eu apreciaria...
É isso aí. O problema é resolvido) sem matrizes e outras coisas. Acabou por ser muito mais simples))))
Surgiu a segunda pergunta. Como posso definir o nível de acionamento do Alerta no código com a seta de ajuste que aparece quando o Alerta é definido através do menu contextual com o mouse?
Por favor, ajude, plz, é possível adicionar uma função a esta EA, para que a EA definida na janela EURUSD abra um acordo com os mesmos parâmetros, ao mesmo tempo, mas para GBPUSD, e EURUSD não se abrirá.
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| Desenvolvedor: Minaev Andrey |
//| Conselheiro especialista: Stochastic.mq4 |
|| Website: safe-forex.|| Website: safe-forex. |
//| Correio:minaev.work@mail.ru |
//| Skype: ao vivo:minaev.trabalho |
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
#direitos de propriedade intelectual "Safe-Forex.ru
#link da propriedade "https://safe-forex.ru"
#propriedade rigorosa
bool exterior Uso_Símbolo1 = verdadeiro;
fio externo Símbolo1 = "USDJPY";
configurações da cadeia de entrada = ""; // Configurações do Expert Advisor
input int magic = 111; // input magic
volume de entradaVolume fixo duplo = 0,01; // Volume
input int takeProfit = 500; // Lucro
input int stopLoss = 500; //Loss
input int buyLevel = 100; // input int buy Level
input int sellLevel = 0; // 75 Nível de venda
período externo int ADXp = 15; // período ADX 15
ADXLevel int externo =1;
período externo int MAperiod =360; //MA period 80
período MA2 =360; //MA período 80
StochSettings = ""; // Configurações do indicador do oscilador estocástico
input int stochPeriodK = 5; //período %K
input int stochPeriodoD = 3; //periodo %D
input int stochSlowing = 3; // Abrandamento
entrada ENUM_STO_PRICE stochPrice = STO_LOWHIGH; // Preço
entrada ENUM_MA_METHOD stochMethod = MODE_SMA; // Método
data/hora newCandle; // vela nova na tabela atual
bool allowOpenBuy; // permissão para abrir posição de compra
allowOpenSell; // permissão para abrir posição de Sell
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
int OnInit(nulo)
{
retornar INIT_SUCCEED;
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
nulo OnTick(nulo)
{
if(newCandle!=Time[0]) CheckSignalExist(); newCandle=Time[0];
if(allowOpenBuy) OpenPosition(OP_BUY);
if(allowOpenSell) OpenPosition(OP_SELL);
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| Função abre posição a preço atual |
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
vazio OpenPosition(tipo int)
{
preço duplo = 0,0;
if(type===OP_BUY) price=Ask;
if(type===OP_SELL) price=Bid;
int ticket=OrderSend(_Symbol,type,fixVolume,price,0,0,",magic,0);
// int ticket=OrderSend(,type,fixVolume,preço,0,0,0,",magic,0);
Sleep(1000);
if(bilhete>0)
{
if(type===OP_BUY)
{
Imprimir ("Buy position opened, ticket: ",ticket);
allowOpenBuy=false;
// SetStopOrders(bilhete);
}
if(type===OP_SELL)
{
Imprimir("Vender posição aberta, ticket: ",ticket);
allowOpenSell=false;
// SetStopOrders(bilhete);
}
}
if(bilhete<0)
{
if(type===OP_BUY) Print("Buy position did not open, error: ",GetLastError()));
if(type===OP_SELL) Print("Sell position did not open, error: ",GetLastError()));
}
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
///| Parada dos conjuntos de funções |
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//vite SetStopOrders(int ticket)
//{
// duplo stopLevel=MarketInfo(_Symbol,MODE_STOPLEVEL),
// spread =MarketInfo(_Symbol,MODE_SPREAD),
// tp =takeProfit,
// sl =stopLoss;
// stopLevel+=spread;
// if(tp<stopLevel)
// {
// tp=stopLevel;
// Imprimir ("Distância mínima para o conjunto de lucros");
// }
// if(sl<stopLevel)
// {
// sl=stopLevel;
// Imprimir ("Distância mínima para o conjunto de perdas");
// }
// if(OrderSelect(ticket,SELECT_BY_TICKET))
// {
// int type=OrderType();
// dupla opp =OrderOpenPrice();
// if(type===OP_BUY) {tp=opp+tp*_Point; sl=opp-sl*_Point;}
// if(type===OP_SELL) {tp=topp-tp*_Point; sl=opp+sl*_Point;}
// if(OrderModify(ticket,opp,sl,tp,0))
// {
// if(type===OP_BUY) Print("P&L levels set for Buy position, ticket: ",ticket);
// if(type===OP_SELL) Print("Os níveis de P&L para a posição Sell foram definidos, ticket: ",ticket);
// }
// senão {
// if(type===OP_BUY) Print("Os níveis de P&L para a posição Comprar não foram definidos, ticket: ",ticket," erro: ",GetLastError()));
// if(type===OP_SELL) Print("Os níveis de P&L para a posição Sell não foram definidos; ticket: ",ticket," erro: ",GetLastError();
// }
// }
//}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| Verificações de função para presença de sinal |
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
CheckSignalExist(nulo)
{
duplo ADX1=iADX(Symbol(),Period(),ADXperiod,0,MODE_MAIN,1); ////////////////////////////
duplo ADX2=iADX(Symbol(),Period(),ADXperiod,0,MODE_MAIN,2);
duplo DPLUS=iADX(Symbol(),Period(),ADXperiod,0,MODE_PLUSDI,1);
duplo DMINUS=iADX(Symbol(),Period(),ADXperiod,0,MODE_MINUSDI,1);
duplo MA=iMA(Symbol(),Period(),MAperiod,0,MODE_SMA,0,1);
duplo MA_2=iMA(Symbol(),Period(),MAperiod_2,0,MODE_SMA,0,1);
//PERIOD_H1
linha principal dupla1=iStochastic(_Símbolo,PERÍODO_CURSO,stochPeriodK,stochPeriodD,stochSlowing,stochMétodo,stochPrice,MODE_MAIN,1),
mainLine2=iStochastic(_Símbolo,PERÍODO_CURSO,stochPeriodK,stochPeriodD,stochSlowing,stochMétodo,stochPrice,MODE_MAIN,2),
signLine1=iStochastic(_Symbol,PERIOD_CURRENT,stochPeriodK,stochPeriodD,stochSlowing,stochMethod,stochPrice,MODE_SIGNAL,1),
signLine2=iStochastic(_Symbol,PERIOD_CURRENT,stochPeriodK,stochPeriodD,stochSlowing,stochMethod,stochPrice,MODE_SIGNAL,2);
Comentário(" ", (Ask-Bid)/1,5," ",Bid-Close[1]," ", Ask-Close[1]);
// if(mainLine1>signLine1 && mainLine2<signLine2 && mainLine1<buyLevel && ADX1>ADXLevel && mainLine2<buyLevel
//& iClose(Symbol(),Period(),1)>MA& iClose(Symbol(),Period(),1)>MA_2 && signLine1<buyLevel && signLine2<buyLevel
if(mainLine1>signLine1 && mainLine2<signLine2 && mainLine1<buyLevel && ADX1>ADXLevel && mainLine2<buyLevel
//&Fechar[2]<MA&Fechar[2]<MA_2 && signLine1<buyLevel && signLine2<buyLevel
&&Fechar[10] > Fechar[1]-(Fechar[1]-Fechar[20])
&& Fechar[10]>Bid )
{
Imprimir ("Apareceu um sinal para abrir uma posição de compra");
if(GetPositionsNumber()==0)
{
// allowOpenSell=true;
{ allowOpenBuy=verdadeiro;
Sleep(1000);
Imprimir ("Permitido abrir posição de compra");
}
}
// if(mainLine1<signLine1 && mainLine2>signLine2 && mainLine1>sellLevel && ADX1>ADXLevel&&& mainLine2>sellLevel
//& iClose(Symbol(),Period(),1)<MA& iClose(Symbol(),Period(),1)<MA_2 && signLine1>sellLevel && signLine2>sellLevel
if(mainLine1>signLine1 && mainLine2<signLine2 && mainLine1<buyLevel && ADX1>ADXLevel && mainLine2<buyLevel
//&Fechar[2]>MA&Fechar[2]>MA_2 && signLine1<buyLevel && signLine2<buyLevel
&&Fechar[10] <Fechar[1]+(Fechar[20]-Fechar[1])
&& Close[10]<Ask )
{
Imprimir ("Apareceu um sinal para abrir uma posição de Venda");
if(GetPositionsNumber()==0)
{
// allowOpenBuy=verdadeiro;
allowOpenSell=true;
Sleep(1000);
Imprimir ("Permitido abrir posição de Venda");
}
}
}
/////////////////////////////////////////
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| A função retorna o número de posições em aberto |
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
int GetPositionsNumber(void)
{
int número=0;
for(int i=0; i<OrdersTotal(); i++)
if(OrderSelect(i,SELECT_BY_POS))
if(OrderSymbol()==_Symbol && OrderMagicNumber()==magic)
número++;
número de retorno;
}
//+---------------------------------------------------------------------------------------------------------------------------------
Ajuda, plz, é possível adicionar uma função a esta EA, de modo que a EA instalada na janela EURUSD abra uma negociação com os mesmos parâmetros de abertura, ao mesmo tempo, mas em GBPUSD, e não abra em EURUSD.
Desculpe-me, sua cabeça está bem? Você não só inseriu o código em um lugar errado, mas também deixou um grande número de linhas vazias.
Você não acha que deveria ter algum respeito por quem você está pedindo ajuda?