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 876

 
artmedia70:
O tamanho da matriz é zero. Não se esqueça do ArrayResize(), ou apenas defina o tamanho certo para a matriz
Obrigado, fiz diferente, encontrei oArrayMaximum() no indicador e passei o valor através doiCustom para o Expert Advisor :)
 
Olá a todos, eu tenho um script que usa chamadas de uma DLL externa, que conta especificamente citações e cria um arquivo com as probabilidades necessárias, existe alguma maneira de fazer o script ser executado em um cronograma? Preciso que ele funcione todos os dias a uma determinada hora?
 

Olá,

A foto mostra:

Primeira janela Indicador de volume, coloque o índice de fluxo de dinheiro(10) no topo.

Fiz umindicador separado, onde novamente pego Volume, recalculo a mutação com Volume e tento fazer como na primeira janela - 25%, 50%, 75%.

Eu tentei da maneira como o fiz, mas não me pareceu bem.

Caso alguém tenha tido problemas com isso, por favor, compartilhe suas sugestões.

Obrigado

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_minimum 0

#property indicator_width1 2
#property indicator_width2 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Yellow

extern int MAPeriod = 30;
double     volum[],ma[];
//+------------------------------------------------------------------+
int init(){
    int bars_count=WindowBarsPerChart(),volh;
    int bar=WindowFirstVisibleBar();
    volh = Volume[iHighest(Symbol(),0,MODE_VOLUME,bar,0)];
    SetIndexBuffer(0,volum);
    SetIndexBuffer(1,ma);
    SetIndexStyle(0,DRAW_HISTOGRAM);
    SetIndexStyle(1,DRAW_LINE);
    SetLevelValue (0,   volh*1.05); 
    SetLevelValue (1, ((volh*1.05)/100)*75.0); 
    SetLevelValue (2, ((volh*1.05)/100)*50.0);
    SetLevelValue (3, ((volh*1.05)/100)*25.0); 
    return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
/*int start(){
    int limit;
        limit = Bars-IndicatorCounted()-1;
    for(int i=limit;i>=0;i--){
        volum[i] = NormalizeDouble(Volume[i],0);
        ma[i]    = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0);
       }
   return(0);
  }*/
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
    int i=rates_total-prev_calculated-1;
    if(i<0)
       i=0; 
    while(i>=0){
      if(i<rates_total-1)
        volum[i] = NormalizeDouble(Volume[i],0);
        ma[i]    = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0);
        i--;
       }     
   return(rates_total);
  }
 
tara:
Ele estava falando sobre a segunda barra de menos. E o valor médio dos limites. Ele quer gozar de mim, eu acho. Eu diria a ele para ir se foder, você sabe o que eu quero dizer :)
O aluno da segunda série, sétimo ano, que ainda não sabe que não existe tal país - Belarus, veio para a primeira série e kochetsya. E em resposta a qualquer pergunta, ele apenas os envia ou os admoesta: eles devem aprender. Você deve ler cuidadosamente acima da porta em que ramo você está. Ainda estou apenas aprendendo o alfabeto, então não fique muito animado, eu não vou entender de qualquer forma.
 

E aoevillive e à artmedia70 um enorme obrigado. Por sua paciência e por seu tempo. Tenho certeza de que não é apenas a minha opinião sobre você. Todos que vêm a esta linha estão pedindo ajuda e obtendo-a principalmente de você. Obrigada.

 

Olá, caros profissionais, faz muito tempo que não entro em contato com vocês.

A questão é que existe um consultor especializado com 2 muwks e ninguém se preocupou em abrir um pedido.

comércio nulo()

{ double ma_fast=ma(Período_,Shift_,Método_MA_,Apply_to_,0), ma_slow=ma(Período__,Shift__,Método_MA__,Apply_to__,0);

if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance ||| (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))

{

if(sumSO>0 && !ClosePos(OP_SELL)) retornam;

if(MO(OP_BUY,GetLot(),GetComment())==-1) retorna;

if(!ModifyByTicket(T)) retorna;

NumbUp=0; NumbDn=0;

}

senão

e assim por diante...

isto é, se houver um cruzamento da distância, abrir uma ordem

Preciso de um código para encontrar a hora da última travessia ...

então do momento atual até o momento da história, procure uma ordem dentro de um certo período... e abra uma ordem se ela não encontrou uma

explorei o código de indicadores de rastreador para este fim, tudo parece estar claro lá

mas não sei como cronometrar a primeira barra após a travessia das curvas, então é a barra mais à direita

Eu sinto que é necessário um operador forte, mas não posso formulá-lo

 
evillive:

Esta não é a maneira de fazer isso. Chame o iCustom para os 3 buffers, escreva cada valor em sua própria variável e depois faça o que quiser com estes valores.

Para as tiras de Bollinger, para a segunda barra, de acordo com o exemplo na ajuda, não é necessário desmarcá-la:

Obrigado.

Mas, devido ao meu analfabetismo, tenho que consultar meu manual o tempo todo e descobri o seguinte: um indicador personalizado é um programa escrito de acordo com o algoritmo do autor. E o tutorial diz que o iCustomretorna o valor do indicador personalizado especificado.

Mas eu não utilizo nenhum indicador personalizado (ou seja, como eu entendo - desenvolvido por mim).

Preciso recuperar os valores do padrão, se assim posso chamá-los, indicadores: Média Móvel, Bandas de Bollinger e Oscilador Estocástico com os parâmetros que especifiquei. É claro que o faço "por intuição" - a primeira coisa que encontrei será aplicada, mas a variante que você sugeriu também não me convém.

Não há solução sem utilizar todos esses amortecedores, arrays e loops? Sou como uma rocha no mar neles - afundo de uma vez.

 
sannin:

Olá, caros profissionais, há muito tempo que não os contactava.

A questão é que existe um consultor especializado com 2 muwks e ninguém se preocupou em abrir um pedido.

comércio nulo()

{ double ma_fast=ma(Período_,Shift_,Método_MA_,Apply_to_,0), ma_slow=ma(Período__,Shift__,Método_MA__,Apply_to__,0);

if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance ||| (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))

{

if(sumSO>0 && !ClosePos(OP_SELL)) retornam;

if(MO(OP_BUY,GetLot(),GetComment())==-1) retorna;

if(!ModifyByTicket(T)) retorna;

NumbUp=0; NumbDn=0;

}

senão

e assim por diante...

isto é, se houver um cruzamento da distância, abrir uma ordem

Preciso de um código para encontrar a hora da última travessia ...

então do momento atual até o momento da história, procure uma ordem dentro de um certo período... e abra uma ordem se ela não encontrou uma

explorei o código de indicadores de rastreador para este fim, tudo parece estar claro lá

mas não sei como cronometrar a primeira barra após a travessia das curvas, então é a barra mais à direita

Eu sinto que é necessário um operador forte, mas não posso formulá-lo

Este Expert Advisor não trabalha por interseção. O critério é o seguinte: se o rápido МА for mais alto que o lento por X pips e não houver uma posição aberta, abra-o no mercado.

Para encontrar a travessia, deve-se sempre tomar dois valores - o "fast/slow MA" antes da travessia e o "fast/slow MA" DEPOIS da travessia para descobrir quando eles trocam de lugar, por assim dizer. Em outras palavras

if(FastMA_2<SlowMA_2 && FastMA_1>SlowMA_1) - fast МА cruzou a lenta de baixo para cima entre a 1ª e 2ª barras.

Em um loop infinito, olhe desde a barra zero até a detecção da travessia, será X+1 barra, e você precisa do tempo da barra X, ou seja, a barra mais recente após a travessia.

 
rapid_minus:

Obrigado.

Mas, devido ao meu analfabetismo, tenho que escavar o livro de texto o tempo todo e isto é o que eu descobri: um indicador personalizado é um programa..., escrito de acordo com o algoritmo do autor. E o tutorial diz que o iCustomretorna o valor do indicador personalizado especificado.

Mas eu não utilizo nenhum indicador personalizado (ou seja, como eu entendo - desenvolvido por mim).

Preciso recuperar os valores do padrão, se assim posso chamá-los, indicadores: Média Móvel, Bandas de Bollinger e Oscilador Estocástico com os parâmetros que especifiquei. É claro que o faço "por intuição" - a primeira coisa que encontrei será aplicada. Mas sua variante sugerida não me parece tão adequada também.

Não há solução sem utilizar todos esses amortecedores, arrays e loops? Sou como uma rocha no mar neles - afundo de uma vez.

Certo, ao usar as Bandas Bollinger, você não precisa ligar para iCustom, mas as iBands devem ser chamadas separadamente para cada linha indicadora. A maneira alternativa sem chamar o indicador ("sem usar buffers, arrays, loops") é implementar no Expert Advisor o algoritmo de cálculo deste indicador e ler o valor desejado quando necessário (você pode ler apenas o valor desejado, por exemplo, apenas o resultado final). Mas completamente sem loops e arrays, mesmo assim, não vai funcionar.
 
sannin:

Olá, caros profissionais, há muito tempo que não os contactava.

A questão é que existe um consultor especializado com 2 muwks e ninguém se preocupou em abrir um pedido.

comércio nulo()

{ double ma_fast=ma(Período_,Shift_,Método_MA_,Apply_to_,0), ma_slow=ma(Período__,Shift__,Método_MA__,Apply_to__,0);

if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance ||| (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))

{

if(sumSO>0 && !ClosePos(OP_SELL)) retornam;

if(MO(OP_BUY,GetLot(),GetComment())==-1) retorna;

if(!ModifyByTicket(T)) retorna;

NumbUp=0; NumbDn=0;

}

senão

e assim por diante...

isto é, se houver um cruzamento da distância, abrir uma ordem

Preciso de um código para encontrar a hora da última travessia ...

então do momento atual até o momento da história, procure uma ordem dentro de um certo período... e abra uma ordem se ela não encontrou uma

explorei o código de indicadores de rastreador para este fim, tudo parece estar claro lá

mas não sei como cronometrar a primeira barra após a travessia das curvas, então é a barra mais à direita

Eu sinto que é necessário um operador forte, mas não posso formulá-lo

Aqui está um exemplo, onde mostrei como medir uma barra após atravessar 2 muves.
datetime TimeStart = 0;
//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){return(0);}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int f;
   bool     cu1     = false;
   bool     cu2     = false;
   double   ma_1    = iMA(NULL,0,31,0,MODE_SMA,PRICE_OPEN,0);
   double   ma1     = iMA(NULL,0,11,0,MODE_SMA,PRICE_OPEN,0);
   double   ma_2    = iMA(NULL,0,31,0,MODE_SMA,PRICE_OPEN,1);
   double   ma2     = iMA(NULL,0,11,0,MODE_SMA,PRICE_OPEN,1);

   if(ma2<ma_2 && ma1>ma_1)
      TimeStart=Time[0]; 
   if(ma2>ma_2 && ma1<ma_1)
      TimeStart=Time[0];
   if(ma1>ma_1)
      cu1=true;
   if(ma1<ma_1)
      cu2=true;

   if(cu1==true || cu2==true)  
      int b1=iBarShift(Symbol(), PERIOD_H1, TimeStart);      
      int b2=iBarShift(Symbol(), PERIOD_H1, TimeCurrent());

    for(int j=b2;j<=b1;j++){
         f=b1-b2;
      }
       
   return(0);
  }
Razão: