O primeiro pedido tem um preço aberto de1.2900 e um TP de 1.300. O segundo pedido tem um preço aberto de1.2800 e um TP de 1.290. Estes são parâmetros diferentes. A primeira éBAY, a segunda éBAY_STOP. Estes também são parâmetros diferentes.
Você está errado porque simplesmente não entende o ponto. E funciona, e tudo funciona perfeitamente da maneira que eu preciso. Talvez o código pudesse ser simplificado, mas agora não é mais uma questão de gordura... Só preciso terminar a EA inteira e já olhar para o retorno da idéia comercial que ela contém....
Não estou interessado em programar por causa da programação...
Acho que é exatamente isso que você tem - programação por programação. sua função não faz nada além de sobrecarregar a CPU.
Comecei a programar após cinco anos de estudo do mercado, desenvolvendo e experimentando várias estratégias, quando percebi que a estratégia comercial (bem sucedida) desenvolvida por mim e testada manualmente 20 vezes na história, primeiro, não tem análogos, que podem ser encontrados no kodobase, e segundo, mesmo com configurações próximas aos limites das capacidades técnicas, ela estabelece exigências que são impossíveis para os seres humanos, e que podem ser facilmente atendidas mesmo pelo computador mais fraco (por exemplo, ficar com seu computador por uma semana ou mais).
OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0,arrow_color=CLR_NONE)
A função básica usada para abrir uma posição ou definir uma ordem pendente. Devolve o número do bilhete que é atribuído ao pedido pelo servidor comercial ou -1 em caso de falha. Para obter mais informações sobre o erro, ligue para GetLastError(). Notas. Ao abrir uma ordem de mercado (OP_SELL ou OP_BUY), somente os últimos preços Bid (para venda) ou Ask (para compra) podem ser usados como preço de abertura. Se a operação for realizada para um instrumento financeiro, diferente do atual, então para obter as últimas cotações para este instrumento, você deve usar a função MarketInfo() com o parâmetro MODE_BID ou MODE_ASK. Você não pode usar um preço estimado ou não-normalizado. Se o preço de abertura solicitado não estava no fluxo de preços ou o preço solicitado não está normalizado de acordo com o número de casas decimais, será gerado o erro 129 (ERR_INVALID_PRICE). Se o preço de abertura solicitado estiver severamente desatualizado, será gerado um erro 138 (ERR_REQUOTE), independentemente do valor do parâmetro de escorregamento. Se o preço solicitado estiver desatualizado mas ainda estiver presente no fluxo de preços, a posição será aberta ao preço atual e somente se o preço atual cair dentro da faixa preço+deslizamento.
Os preços da StopLoss e TakeProfit podem não estar muito próximos do mercado. A distância mínima de parada em pips pode ser obtida usando a função MarketInfo() com o parâmetro MODE_STOPLEVEL. O erro 130 (ERR_INVALID_STOPS) é gerado em caso de paradas errôneas ou não normalizadas.
Ao fazer um pedido pendente, o preço de abertura não pode estar muito próximo do mercado. A distância mínima do preço pendente do preço de mercado atual em pontos também pode ser obtida usando a função MarketInfo() com o parâmetro MODE_STOPLEVEL. Se o preço pendente do pedido aberto estiver incorreto, será gerado o erro 130 (ERR_INVALID_STOPS).
Em alguns servidores comerciais, pode ser estabelecida uma proibição de expiração de ordens pendentes. Neste caso, um erro 147 (ERR_TRADE_EXPIRATION_DENIED) será gerado ao tentar definir um valor não zero no parâmetro de expiração.
Em alguns servidores comerciais pode ser definido um limite para o número total de ordens abertas e pendentes. Se este limite for ultrapassado, uma nova posição não será aberta (nenhuma ordem pendente será definida) e o servidor comercial retornará o erro 148 (ERR_TRADE_TOO_MANY_ORDERS).
Parâmetros:
símbolo
-
Nome do instrumento financeiro, com o qual a operação comercial é executada.
cmd
-
Operação comercial. Pode ser qualquer um dos valores comerciais.
volume
-
Número de lotes.
preço
-
Preço de abertura.
escorregamento
-
Deslize de preço máximo permitido para ordens de mercado (ordens de compra ou venda).
stoploss
-
O preço de fechamento de uma posição quando a perda é atingida (0 se não houver perda).
takeprofit
-
O preço fechado de uma posição quando o nível de rentabilidade é alcançado (0 se não houver nível de rentabilidade).
comentário
-
Encomendar texto de comentário. A última parte do comentário pode ser alterada pelo servidor comercial.
mágica
-
Número mágico do pedido. Pode ser usado como um identificador definido pelo usuário.
expiração
-
Tempo de expiração da ordem pendente.
arrow_color
-
Cor da seta de abertura na tabela. Se o parâmetro estiver faltando ou seu valor for CLR_NONE, a seta de abertura não é mostrada no gráfico.
Exemplo:
int ticket; if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25) { ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-25*Point,Ask+25*Point, "My order #"+counter,16384,0,Green); if(ticket<0) { Print("OrderSend failed with error #",GetLastError()); return(0); } }
e mesmo que seu código tenha dado 24 erros no compilador!!! ainda assim, obrigado até mesmo pela ajuda descuidada.... para a idéia... (agora funciona - embora eu tenha basicamente tentado fazer isso, mas a pontuação falhou)
Eu não tentei compilá-lo, eu apenas coloquei os parênteses! Caso contrário, não funcionariam de forma alguma. Eu mostrei como eles devem ser. O resto da lógica ainda não está clara. Eu me lembro, colocando cada bandeira seguinte, você, perguntou se, ao contrário da condição anterior, enquanto verificava se a bandeira era verdadeira...
Na verdade, meu primeiro comentário o incitou a reconsiderar o que escreveu, verificando a referência.
Sim, eu fiz como você escreveu. E não se compila.
Obviamente, eu fiz algo errado, mas o que exatamente não entendo. Você poderia passar por ela passo a passo.
O primeiro pedido tem um preço aberto de1.2900 e um TP de 1.300. O segundo pedido tem um preço aberto de1.2800 e um TP de 1.290. Estes são parâmetros diferentes. A primeira éBAY, a segunda éBAY_STOP. Estes também são parâmetros diferentes.
Você está errado porque simplesmente não entende o ponto. E funciona, e tudo funciona perfeitamente da maneira que eu preciso. Talvez o código pudesse ser simplificado, mas agora não é mais uma questão de gordura... Só preciso terminar a EA inteira e já olhar para o retorno da idéia comercial que ela contém....
Não estou interessado em programar por causa da programação...
Acho que é exatamente isso que você tem - programação por programação. sua função não faz nada além de sobrecarregar a CPU.
Comecei a programar após cinco anos de estudo do mercado, desenvolvendo e experimentando várias estratégias, quando percebi que a estratégia comercial (bem sucedida) desenvolvida por mim e testada manualmente 20 vezes na história, primeiro, não tem análogos, que podem ser encontrados no kodobase, e segundo, mesmo com configurações próximas aos limites das capacidades técnicas, ela estabelece exigências que são impossíveis para os seres humanos, e que podem ser facilmente atendidas mesmo pelo computador mais fraco (por exemplo, ficar com seu computador por uma semana ou mais).
Mas você entendeu o ponto?
Basta colocar um pedido pendente com os parâmetros que você deseja.
P.S. No EA -- logo após a abertura do pedido.
Basta colocar um pedido pendente com os parâmetros que você deseja.
P.S. No EA -- logo após a abertura do pedido.
Qual é o código?
Devolve o número do bilhete que é atribuído ao pedido pelo servidor comercial ou -1 em caso de falha. Para obter mais informações sobre o erro, ligue para GetLastError().
Notas.
Ao abrir uma ordem de mercado (OP_SELL ou OP_BUY), somente os últimos preços Bid (para venda) ou Ask (para compra) podem ser usados como preço de abertura. Se a operação for realizada para um instrumento financeiro, diferente do atual, então para obter as últimas cotações para este instrumento, você deve usar a função MarketInfo() com o parâmetro MODE_BID ou MODE_ASK. Você não pode usar um preço estimado ou não-normalizado. Se o preço de abertura solicitado não estava no fluxo de preços ou o preço solicitado não está normalizado de acordo com o número de casas decimais, será gerado o erro 129 (ERR_INVALID_PRICE). Se o preço de abertura solicitado estiver severamente desatualizado, será gerado um erro 138 (ERR_REQUOTE), independentemente do valor do parâmetro de escorregamento. Se o preço solicitado estiver desatualizado mas ainda estiver presente no fluxo de preços, a posição será aberta ao preço atual e somente se o preço atual cair dentro da faixa preço+deslizamento.
Os preços da StopLoss e TakeProfit podem não estar muito próximos do mercado. A distância mínima de parada em pips pode ser obtida usando a função MarketInfo() com o parâmetro MODE_STOPLEVEL. O erro 130 (ERR_INVALID_STOPS) é gerado em caso de paradas errôneas ou não normalizadas.
Ao fazer um pedido pendente, o preço de abertura não pode estar muito próximo do mercado. A distância mínima do preço pendente do preço de mercado atual em pontos também pode ser obtida usando a função MarketInfo() com o parâmetro MODE_STOPLEVEL. Se o preço pendente do pedido aberto estiver incorreto, será gerado o erro 130 (ERR_INVALID_STOPS).
Em alguns servidores comerciais, pode ser estabelecida uma proibição de expiração de ordens pendentes. Neste caso, um erro 147 (ERR_TRADE_EXPIRATION_DENIED) será gerado ao tentar definir um valor não zero no parâmetro de expiração.
Em alguns servidores comerciais pode ser definido um limite para o número total de ordens abertas e pendentes. Se este limite for ultrapassado, uma nova posição não será aberta (nenhuma ordem pendente será definida) e o servidor comercial retornará o erro 148 (ERR_TRADE_TOO_MANY_ORDERS).
int ticket; if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25) { ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-25*Point,Ask+25*Point, "My order #"+counter,16384,0,Green); if(ticket<0) { Print("OrderSend failed with error #",GetLastError()); return(0); } }e mesmo que seu código tenha dado 24 erros no compilador!!! ainda assim, obrigado até mesmo pela ajuda descuidada.... para a idéia... (agora funciona - embora eu tenha basicamente tentado fazer isso, mas a pontuação falhou)
Eu não tentei compilá-lo, eu apenas coloquei os parênteses! Caso contrário, não funcionariam de forma alguma. Eu mostrei como eles devem ser. O resto da lógica ainda não está clara. Eu me lembro, colocando cada bandeira seguinte, você, perguntou se, ao contrário da condição anterior, enquanto verificava se a bandeira era verdadeira...
Na verdade, meu primeiro comentário o incitou a reconsiderar o que escreveu, verificando a referência.
quaisquer dicas para o novato!!!! o conselheiro é desativado no terminal, mas o batente é acionado é possível ?
É claro que sim.
quaisquer dicas para o novato!!!! o conselheiro é desativado no terminal, mas o batente é acionado é possível ?
Não é possível, é uma obrigação. O Stop Loss está no servidor e não depende da operação de seu terminal, ao contrário do Stop Trailing.