[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 304

 
pigvin:

O problema é que a EA reabre constantemente os pedidos, ou seja, há um sinal de compra - ela abre um pedido, depois o fecha com lucro, e as condições ainda são preservadas, ela o abre novamente.

Pensei que poderia ser resolvido com o contador tradicional de compra e venda - se a ordem de compra abrisse o contador +1 e uma nova compra não pudesse ser aberta até que o contador estivesse acima de 0 e o contador fosse reiniciado somente após a venda.

Ou seja, há um sinal em uma barra, mas já foi usado?

Você poderia fazer isso assim

datetime save_time; 
int tf=0;
старт
...
if(total<1)//проверка количества ордеров 
   {
         if(save_time!=iTime(0,tf, iBarShift(0,tf,Time[0])))
            save_time =iTime(0,tf, iBarShift(0,tf,Time[0]));
         else return;


  ...
 if(ticket>0)
                      {
                         if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("открыта позиция BUY : ",OrderOpenPrice());
      
                         else Print("Ошибка при открытии BUY позиции : ",GetLastError()); 
                        }else{ save_time =0;}// так как ошибка запретим ретурн (см. выше)
 
Operr:

Experimente assim.

if (OrderOpenTime()+2*1440*60  > Time[0])   //т.е. последнее время текушего графика а не локальное

Deve funcionar nos dois sentidos.

Faz mais sentido para mim.

if (Time[0]-OrderOpenTime() >= 2*1440*60 )   
 

Olá a todos!

Desculpe pelo fora do tópico, o tópico é procurado, é por isso que estou escrevendo aqui, você pode me dar uma dica? Emperrado.

Como, utilizando apenas operações elementares (+-*/%), realizar a exponenciação (incluindo real) de um número real? Por exemplo, a calculadora de vento, quando aplicada à potência de 1,2, dá o resultado 1,2445647472073939777218169154111826. Interessado no algoritmo, o idioma não importa, nenhum. Eu mesmo a traduzirei.

ZS. Quantos testes de programação não foram feitos, vejo tal problema pela primeira vez, embora possa ser trivial para alguém?

 

Boa tarde a todos!

Procurei muitos fóruns e artigos no google , mas não encontrei uma resposta.

Decidi escrever um EA para negociar em duas encomendas opostas em М1

A idéia é simples: colocar duas ordens opostas com TP pequeno, então, quando o TP de um deles para o segundo timer ativado for o número de barras (digamos 5), ele será SL temporário. O cálculo é que se a moeda se moverá na mesma direção, as perdas quando a segunda ordem aciona o SL temporário serão mínimas, se o gráfico se inverter, estaremos no preto em duas posições.

Não sei como escrever um fragmento de código com"quando um TP de um deles aciona, o cronômetro do segundo liga como um número de barras".

atualmente só tenho um timer para dois pedidos ao mesmo tempo, mas não consigo tirar muito proveito disso

PS Eu não resolvo este problema há um mês, por favor me ajude com conselhos ou código:)

aqui está o código do assessor

extern int SL=100;

extern int TP=100;

extern double StartLot=0.1;

extern double StopLot=1.0;

extern int bar_time=20;


double Lot()

{

double lt;

if(OrdersHistoryTotal()==0) return (StartLot);

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderProfit()<0)

{

lt=OrderLots()*2;

if(lt>StopLot) return (StartLot);

else return (lt);

}

else

return (StartLot);

}

else

return (StartLot);

}

int start()

{

double lot;

if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

{

int order;

{

lot=Lot();

order=OrderSend(Symbol(),OP_BUY,lot,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);

order=OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green);

}

}

//вот здесь должно быть что-то что является решением проблемы и связующим звеном

{

int bars = iBarShift( Symbol(), PERIOD_M1, OrderOpenTime() ) ;

if ( iTime( Symbol(), PERIOD_M1, bars ) > OrderOpenTime() ) { bars ++; }

if ( bars >= bar_time )

OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5,White);

}

return(0);

}


Obrigado de antemão

 
Em princípio, não devemos abrir nesta tendência até que não haja sinal de uma inversão ou turbulência do mercado!
costy_:

Ou seja, há um sinal em uma barra, mas já foi usado?

Você poderia fazer isso

 
snail09:

Olá a todos!

Desculpe pelo fora do tópico, o tópico é procurado, é por isso que estou escrevendo aqui, você pode me dar uma dica? Emperrado.

Como, utilizando apenas operações elementares (+-*/%), realizar a exponenciação (incluindo real) de um número real? Por exemplo, a calculadora de vento, quando aplicada à potência de 1,2, dá o resultado 1,2445647472073939777218169154111826. Interessado no algoritmo, o idioma não importa, nenhum. Eu mesmo a traduzirei.

ZS. Quantos testes de programação eu ainda não fiz, esta é a primeira vez que vejo tal problema, embora possa ser trivial para algumas pessoas?

https://docs.mql4.com/ru/math/MathPow não? Ou operações elementares são uma condição do problema. Então a opção http://bpascal.ru/download/desc/436.php se você fizer tudo à mão, então implemente expoente e logaritmo com suas próprias funções.

 
индикаторcosty_:

Você usa while(i>=0), então quando uma nova vela aparece i=1 (para garantir que os dados da vela anterior sejam calculados uma vez sobre os dados fixos).

Por que entrar some_time=D'1971.01.11 00:00'; use Bars, IndicatorCounted não funciona para mim (bem, o erro é provavelmente por causa da primeira_t_bar).

Seu algoritmo e você deve consertá-lo.

"Sou novo na programação."Sou novo na programação desde 2007).


Mesmo assim, não entendo porque meu projeto funciona bem e o padrão não funciona. some_time=D'1971.01.11 00:00'; aqui ele é usado uma vez na inicialização. Então a data é alterada para outra, mas não tem nada a ver com isso, pois funciona em um caso e não em outro. Refazerei o indicador mais tarde. Esta é uma versão modificada de outro indicador. Obrigado pela resposta!

 
Sonne:

Boa tarde a todos!

Procurei muitos fóruns e artigos no google , mas não encontrei uma resposta.

Decidi escrever uma EA para negociar em duas encomendas opostas em М1

A idéia é simples: colocar duas ordens opostas com TP pequeno, então, quando o TP de um deles para o segundo timer ativado for o número de barras (digamos 5), ele será SL temporário. O cálculo é que se a moeda se moverá na mesma direção, as perdas quando a segunda ordem aciona o SL temporário serão mínimas, se o gráfico se inverter, estaremos no preto em duas posições.

Não sei como escrever um fragmento de código com"quando um TP de um deles aciona, o cronômetro do segundo liga como um número de barras".

atualmente só tenho um timer para dois pedidos ao mesmo tempo, mas não consigo tirar muito proveito disso

PS Eu não resolvo este problema há um mês, por favor me ajude com conselhos ou código:)

aqui está o código

................................................

Agradecemos antecipadamente

1. Se houver uma posição fechada em um Takei...

1.1 Se seu tipo for OP_BUY, ...

1.1.2 Se houver uma posição aberta OP_SELL, ...

1.1.3 Se o tempo da barra atual menos o tempo da barra que abre a posição de venda for maior ou igual ao número de barras para o atraso, ....

1.1.4 Nós fechamos a posição de Venda

1.2 Se seu tipo for OP_SELL, ...

1.2.2 Se houver uma posição aberta OP_BUY, ...

1.2.3 Se o tempo da barra atual menos o tempo da abertura da posição de compra for maior ou igual ao número de barras a segurar, ....

1.2.4 Fechar Posição de compra

 
Olá, você poderia informar onde obter uma história normal (sem buracos) e se a minuta da história do MT5 para o MT4?
 

Boa noite a todos, peço desculpas pela estúpida pergunta anterior)

Quero saber se é possível que uma EA onde há uma variável, digamos "A", receba um valor de preço no momento e que seja comercializada. Se quisermos mudar este valor para qualquer valor histórico, por exemplo, pegue qualquer valor mensal e obtenha o valor desejado da análise do histórico. Tentei fazer isso no testador de estratégia, mas tenho muitas dúvidas quanto à sua correção. Ou terei que refazê-lo e trabalhar com arrays! Obrigado a todos vocês.

p.s. Quero saber, já que não o encontrei no manual e tutorial da MQL.