Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1098
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
Rapazes, eu já estou com a cabeça no lugar. Como faço para que a EA faça pedidos pendentes em altas e baixas, por exemplo, 8 velas, com um take profit de 1/4.
Eu faço algo assim:
duplo Vhod1=iHighest(Symbol(),0,MODE_HIGH,8,0);
duplo Vhod2=iLowest(Symbol(),0,MODE_LOW,8,0);
duplo TP=((Vhod1-Vhod2)/4)+Vhod1;
Tentei mudar os parâmetros, mas continuo a fazer paradas erradas ou a fixar o preço em 7.00000; não está claro de onde vem
iHighest, iLowest dará o endereço da vela, não o preço.
É isso mesmo. Precisamos de
duplo Vhod1=iHigh(Symbol(), 0, iHighest(Symbol(),0,MODE_HIGH,8,0)));
duplo Vhod2=iLow(Symbol(), 0, iLowest(Symbol(),0,MODE_LOW,8,0)));
Coloquei mal, mas mesmo assim não teria funcionado bem porque... Porque...) De qualquer forma, deveria ser assim:
1) criar uma variável AllowNewOrders no inite (se ela não existir)
2) Criar uma nova ordem, até que feche, OnTick deste símbolo está ocioso, mas irá executar OnTick de outro símbolo
3) Executar a etapa 2 para os outros símbolos até que o limite de MaxOpenOrders seja alcançado
4) quando o pedido terminar, se estiver perdendo ou tiver valor zero, proibir a abertura de novos pedidos para todas as cópias através de AllowNewOrders
[aqui está o problema imediato - quando a série perdedora terminar, AllowNewOrders=1, mas e se MaxOpenOrders>1 e houver várias dessas sessões?]
5) Se o ponto 4 não for cumprido, então você poderá abrir novos pedidos.
O programa DEVE funcionar quando MaxOpenOrders=1. Talvez haja um problema se proibirmos novos pedidos após uma ordem não lucrativa AllowNewOrders=0 e o próximo OrderSend, por alguma razão, não abrir o pedido. Escreverei abaixo como me protejo para este caso...
Escreverei abaixo como me protejo para esta eventualidade...
Se a solução de erro for adequadamente prevista, a taxa de sucesso da abertura de um pedido aumenta.
Como o código abaixo pode mudar sob tais condições?
for(cnt=OrdersTotal()-1;cnt>=0;cnt--){
if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continua;
if(OrderSymbol()!=Symbol()) continua; if(OrderMagicNumber() < startMagicNumber || OrderMagicNumber() >= startMagicNumber + MaxTrades) continua;
Eu coloquei o código para gerar um magik ao abrir as primeiras encomendas de uma série, mas aqui está o problema ao abrir novas encomendas na mesma série.
O próprio código para gerar a magia do post://+
+
// obter a próxima magia na série
int getNextMagicNumber(){ int magic = VAZIO;
if (OrderTotal() == 0) {
return(startMagicNumber);
}
para (int i = startMagicNumber; i < startMagicNumber + MaxTrades; i++){
magic = checkMarketByMagic(i);
if (magic != EMPTY) break;
}
if (magic === EMPTY){
magic = startMagicNumber; // primeiro na série
} else {
magic++; // próximo na série
}
return(magic);
}
//+
+ // keekkenen: verifique uma ordem no mercado com uma determinada magia
int checkMarketByMagic(int magic){
for(int i = 0; i < OrderTotal(); i++){
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continua;
if(OrderSymbol() != Symbol()) continua;
if(OrderMagicNumber() == magic) return(magic);
}
return(EMPTY);
}
//+------------------------------------------------------------------+
desculpem se confundi os fios, mas não encontrei o lugar correto para postar o TEMA, então não me dêem pontapés.
Às vezes, enquanto navegava na Internet para novos Expert Advisors, me deparei com um que não prestava atenção, porque sua descrição era padrão, do qual há muito, mas não prestava atenção a seu nome.
Se eu não o tivesse visto ou lido, por favor, me dê o nome, e o google fará seu trabalho ou, se eu tiver um, eu o aceitarei como um presente. Talvez exista um assessor similar que realize ações similares.
Descreverei o significado do Expert Advisor (não há nada muito sofisticado, o que eu preciso agora).
Grosso modo, o trabalho seria parecido com o seguinte:
1. Abrir uma posição manualmente, por exemplo, comprar.
2. O Expert Advisor define o Stop Loss e Take Profit de acordo com as configurações.
3. O pedido é fechado no takeprofit - a EA abre imediatamente outra compra e estabelece o mesmo stoploss e takeprofit até pegar o primeiro stoploss ou se houver um takeprofit final.
4. Se a posição é fechada por Stop Loss, o robô não faz mais nada. O Expert Advisor espera que o próximo pedido seja aberto manualmente.
Isso é tudo.
Eu ficaria muito grato.
Inseri-o mal, mas mesmo assim não funcionaria como deveria porque... Porque...) De qualquer forma, é assim:
1) criar uma variável AllowNewOrders no initem (se ela não existir)
2) Criar uma nova ordem até que feche OnTick deste símbolo está ocioso, mas OnTick do outro símbolo irá funcionar
3) Executar a etapa 2 para os outros símbolos até que o limite de MaxOpenOrders seja alcançado
4) quando o pedido terminar, se estiver perdendo ou tiver valor zero, proibir a abertura de novos pedidos para todas as cópias através de AllowNewOrders
[aqui está o problema imediato - quando a série perdedora terminar, AllowNewOrders=1, mas e se MaxOpenOrders>1 e houver várias dessas sessões?]
5) Se o ponto 4 não for cumprido, então você poderá abrir novos pedidos.
O programa DEVE funcionar quando MaxOpenOrders=1. Talvez haja um problema se proibirmos novos pedidos após uma ordem não lucrativa AllowNewOrders=0 e o próximo OrderSend, por alguma razão, não abrir o pedido. Escreverei abaixo como estou me protegendo para este caso.
Obrigado Alexander, vou verificar isso amanhã. [daí o problema imediatamente - quando a série perdida termina, AllowNewOrders=1, mas se MaxOpenOrders>1 e houver mais de uma sessão?] Se MaxOpenOrders>1 por algum valor, então na idéia AllowNewOrders=1 também deveria ser maior pelo mesmo valor. Mas não preciso me preocupar com isso por enquanto e o MaxOpenOrders deve ser omitido completamente, porque nesta versão do programa não está planejada mais de uma série de qualquer forma.
Olá a todos!
Aqui está um objeto gráfico sobre um gráfico.
Seus parâmetros são tempo, valor, código. O valor corresponde ao preço ao qual o objeto está localizado.
Existe alguma forma de obter seu tempo e valor (através de uma função ou outra coisa)?
\\\\\
Ou, num contexto mais amplo, existem objetos (além das linhas de tendência, linhas Fibonacci, Gannets) que nos permitem obter seu tempo e preço instantaneamente?
Preciso colocar alguns marcadores na tabela e obter informações a partir deles. Desenho de linhas de tendência, fibo, etc... - É muito pesado e lento...
Obrigado pelas respostas!
PS Acaba de começar a estudar...
Olá a todos!
Aqui está um objeto gráfico sobre um gráfico.
Seus parâmetros são tempo, valor, código. O valor corresponde ao preço ao qual o objeto está localizado.
Existe alguma forma de obter seu tempo e valor (através de uma função ou outra coisa)?
\\\\\
Ou, num contexto mais amplo, existem objetos (além das linhas de tendência, linhas Fibonacci, Gannets) que podem ser imediatamente derivados no tempo e no preço?
Preciso colocar algumas marcas na tabela e obter informações a partir delas. Desenho de linhas de tendência, fibo, etc... - É muito pesado e lento...
Obrigado pelas respostas!
PS Acaba de começar a estudar...
https://docs.mql4.com/ru/objects/objectgetinteger