[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 537

 
chief2000:

Aqui vai uma pergunta.
Posso saber pelo código de um indicador personalizado se a janela em que ele está rodando está ou não ativa no momento?
Por exemplo, o mesmo Indicador está funcionando em duas janelas - você precisa dele para trabalhar apenas na janela cujo gráfico está ativo e inativo na segunda janela.

Obrigado!

Mais uma vez a biblioteca ajuda :-)
 
Zhunko:
Novamente a biblioteca ajuda :-)
Obrigado!
[Deleted]  
Boa noite! Comecei aqui um rápido capotamento do robô, e mesmo de repente sem erros procampados, e eis que de repente ele abre duas ordens ao mesmo tempo!!! Ou seja, uma ordem de cada vez, no primeiro e segundo tique. Aqui está o código, vou colá-lo abaixo. A variável COMPRA é o número de ordens de compra que já foram abertas e se estiver acima de zero, mesmo que exista uma ordem, então ela não deve abrir.
//+------------------------------------------------------------------+
//|                                                        антиб.mq4 |
//|                      Copyright © 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern double volume=0.01;extern double stoploss=12,takeprofit=12;extern int magic=50001,I=5;
int ticket;double volumee ; 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   volumee=volume;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
        
int start()
  {   int BUY;
  
//----

 for( int i=OrdersHistoryTotal() -1;i>=0;i--){
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); if (OrderMagicNumber( )== magic) { if(OrderSymbol()== Symbol()) {
      if(OrderType()==OP_BUY ) {   if ((OrderProfit( )-3*Point) <  OrderTakeProfit( ) && (OrderProfit( )+3*Point) >  OrderTakeProfit( ) ) { if( OrderTicket( ) == ticket ) {
               volumee = volumee+volumee;}}}}}}
if (volumee>volume*I){volumee=volume;}


              for ( i=OrdersTotal()-1;i>=0;i--)
   {
    if (OrderSelect(i, SELECT_BY_TICKET ) == true)    Alert ("Select error ", GetLastError( ) ) ;
     if(OrderMagicNumber( )== magic){
      if(OrderSymbol()== Symbol()) {
      if(OrderType()==OP_BUY ) {
                             BUY++;}}}}   
 if(BUY==0){

 ticket= OrderSend( Symbol(), OP_BUY, volumee, NormalizeDouble(( Ask),Digits),NormalizeDouble(( Point*3),Digits) , NormalizeDouble(( Ask-stoploss*Point),Digits), NormalizeDouble(( Ask+takeprofit*Point),Digits), NULL,  magic, 0, Red) ;}
 
 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
[Deleted]  
Aqui, dois mandados! !
[Deleted]  

Você sabe, talvez eu tenha estado mexendo com o loop, há uma ordem, eu menos uma a mais e a condição do loop não é cumprida de forma alguma. Sim, sim, parece que sim, e há exatamente dois pedidos abertos!

Pessoal, devo apagar meus últimos comentários?

Não, eu ainda tenho dois, e após o terceiro ou quarto sinal de alerta: Selecione o erro 4105 escreve,

Parece que a ordem não foi selecionada e não há erro no início... Isto é correto para( int i=0;i<=OrdersHistoryTotal();i++){

e assim for( int i=0;i<=OrdensTotal();i++){

E há duas ordens, todas iguais.

É isso aí, um. Phew. ;


[Deleted]  
Erro 4105 - ordem não selecionada - não desaparece, mas geralmente funciona adequadamente
 
Ivn:

Boa tarde como escrever um conselheiro padrão por outro período de tempo. Isto é, coloque este indicador no gráfico de 1 hora que mostrará o indicador de 4 horas.

пытался //+------------------------------------------------------------------+
//| vv às 4 horas.mq4 |
//| Copyright © 2012, MetaQuotes Software Corp. |
//| https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#direitos autorais "Copyright © 2012, MetaQuotes Software Corp."
#link da propriedade "https://www.metaquotes.net/"

#janela_do_cartão_indicador de propriedade
#property indicator_buffers 3
#indicador de propriedade_color1 LightSeaGreen
#indicador de propriedade_color2 LightSeaGreen
#indicador de propriedade_color3 LightSeaGreen
//---- parâmetros indicadores
Int. Ext. Período = 20;
bandas externas internasShift=0;
Faixas duplas externasDeviações=2,0;
//---- buffers
duplo MovingBuffer[];
duplo UpperBuffer[];
duplo LowerBuffer[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{
//---- indicadores
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MovingBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UpperBuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,LowerBuffer);
//----
SetIndexDrawBegin(0,BandsPeriod+BandsShift);
SetIndexDrawBegin(1,BandsPeriod+BandsShift);
SetIndexDrawBegin(2,BandsPeriod+BandsShift);
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Bandas de Bollinger |
//+------------------------------------------------------------------+
int start()
{
int i,k,counted_bars=IndicatorCounted();
duplo desvio;
soma dupla, oldval, newres;
int B=iBars( NULL,PERÍODO_H4);
duplo C=iClose(NULL,PERÍODO_H4,0);
//----
if(B <=BandsPeriod) return(0);
//---- inicial zero
if(counted_bars<1)
for(i=1;i<=BandsPeriod;i++)
{
MovingBuffer[B-i]=EMPTY_VALUE;
UpperBuffer[B-i]=EMPTY_VALUE;
LowerBuffer[B-i]=EMPTY_VALUE;
}
//----
int limit=B-counted_bars;
if(counted_bars>0) limit++;
para(i=0; i<limite; i++)
MovingBuffer[i]=iMA(NULL,PERÍODO_H4,PERÍODO_H4,PERÍODO_Bandas,Mudança de Bandas,MODE_SMA,PREÇO_CLOSE,i);
//----
i=B-B-BandsPeriod+1;
if(counted_bars>BandsPeriod-1) i=B-counted_bars-1;
while(i>=0)
{
soma=0,0;
k=i+BandsPeriod-1;
oldval=MovingBuffer[i];
while(k>==i)
{
newres=C[k]-oldval;
sum+=newres*newres;
k--;
}
desvio=Deviações de Banda*MathSqrt(soma/Período de Banda);
UpperBuffer[i]=oldval+deviation;
LowerBuffer[i]=oldval-deviation;
i--;
}
//----
retorno(0);
}
//+------------------------------------------------------------------+

não funcionou

este novores=C[k]-oldval;- '[' - ficha inesperada

O indicador Bollinger Bands.


Ao invés de C[k] inserir iClose(NULL,PERÍODO_H4,k);

Entretanto, obtive uma maneira de exibir o gráfico da 1 hora e a linha das 4 horas de uma maneira mais natural.
Quando traduzo este código para um gráfico, vejo o preço saindo do canal; parece que o gráfico Bollinger Band às 4 horas não está conectado à linha do tempo

obrigado de antemão

 

Pessoal, vocês podem me dizer por experiência própria... Escolheu uma empresa para alugar VPS para negociação via terminal de clientes MT4, interessado em saber quanto tráfego em média consome um terminal em funcionamento, por exemplo, com dez sops? Haverá vários terminais funcionando... Para que eu possa escolher o plano de dados apropriado entre os oferecidos:

P.S. Eles têm uma taxa baseada no tráfego total, ou seja, de entrada + saída.

 

Colegas, quem sabe a resposta:

Tenho um testador de estratégia no mesmo período de tempo (01.05.2011 - 27.01.2012), par de moedas EURUSD, em barras de hora (H1), de um CD (Alpari), e o mesmo assessor, mas em computadores diferentes (laptop, desktop) dá resultados opostos! No PC - $2000, no laptop +3000. E lá, e lá verificado 2-3 vezes.

Por favor, informe a causa e o que fazer e/ou me dê um link onde isso sobre o tópico possa ser lido.
 
Sersad:

Colegas, quem sabe a resposta:

Tenho um testador de estratégia no mesmo intervalo de tempo (01.05.2011 - 27.01.2012), o par de moedas EURUSD, nas barras horárias (H1), de um CD (Alpari), e o mesmo Expert Advisor, mas em computadores diferentes (laptop, desktop) dá resultados opostos! No PC - $2000, no laptop +3000. E lá, e lá verificado 2-3 vezes.

Por favor, informe a causa e o que fazer e/ou me dê um link onde isso sobre o tópico possa ser lido.


Eu mesmo já fui apanhado nisto uma vez... tinha um similar: O 1º terminal foi instalado com Metacquotes, o 2º terminal com Alparey, a história também foi assim, houve discrepâncias significativas ao testar a mesma coruja, não conseguiu descobrir o que estava errado por um longo tempo.

1. Faça o download dos terminais da Alpari. Faça o download do histórico de cotações do instrumento Alpari e esta janela irá aparecer:

Se ele não aparecer após pressionar F2 seguido de "Download", então você está baixando o histórico do instrumento. Se você não vir esta janela aparecendo depois de pressionar F2 seguido de "Download", você não estará baixando o histórico de preços da Alpari.

2. No Testador de Estratégia, todas as opções são iguais + verifique o spread clicando no botão "Symbol Properties" (Propriedades do símbolo). Verifique os valores de spread no testador de estratégia clicando no botão "Symbol properties" (propriedades do símbolo).

Antes de fazer isso - limpe e recarregue o histórico de cotações do instrumento que lhe interessa + verifique o período de teste: na captura de tela H4 - para que seja o mesmo nos dois casos.