Ajuda na codificação - página 759

 
Caríssimos MLADEN

Quanto aos avisos quando compilados "enviar/selecionar, modificar, fechar" foram corrigidos adicionando (bool dummyResultado) anteriormente, mas agora eu vejo você usando simplesmente (bool dummy), está tudo bem para toda e qualquer situação ou o novo (bool dummy) para alguns indicadores e situações específicas ?

comentários
 
mntiwana:
Prezado MLADEN

Quanto aos avisos quando compilados "valor de retorno de ''enviar/selecionar, modificar, fechar'' foram corrigidos adicionando (bool dummyResultado) anteriormente, mas agora eu vejo você usando simplesmente (bool dummy), está tudo bem para toda e qualquer situação ou o novo (bool dummy) para alguns indicadores e situações específicas ?

diz respeito
Normalmente, essas advertências são benignas.

O que é usado para realmente verificar se a(s) operação(ões) do pedido está(ão) OK é GetLastError() (já que dá muito mais detalhes do que o simples retorno booleano que o retorno padrão das operações do pedido retorna) - então, sim, está OK, e então, se mais detalhes para um possível erro for necessário, então, por todos os meios, GetLastError() deve ser usado
 
wojtekpaul:

(o que faremos depois de 31 de janeiro?) :(

WojtekPaul,

O que você quer dizer com isso?

 
chrisstoff:

WojtekPaul,

O que você quer dizer com isso?

Ele quis dizer isto : https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated/page4#comment_1849089

Mas verifique este post também : https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated/page4#comment_1849089
 
mladen:
Normalmente, essas advertências são benignas.

O que é usado para realmente verificar se a(s) operação(ões) do pedido está(ão) OK é GetLastError() (já que dá muito mais detalhes do que o simples retorno booleano que o retorno padrão das operações do pedido retorna) - então, sim, está OK, e então, se mais detalhes para um possível erro for necessário, então, por todos os meios, GetLastError() deve ser usado
Caríssimos MLADEN

Obrigado pela orientação de ajuda.

cumprimentos
 
mladen:
Ele quis dizer o seguinte: https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated

Mas verifique também este post : https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated/page4#comment_1849089

Mladen,

Obrigado pela informação. Este é / foi meu um dos fóruns mais favoráveis, portanto é uma má notícia para mim também. No entanto, existem outros lugares com recursos de fórum e bate-papo prontos através da rede. (Eu coloquei um exemplo no tópico "Forex-TSD vai ser encerrado...").

 

Olá a todos,


Eu preciso de um codificador para colocar uma seta com alerta para esta extrategia. Manualmente, esta estratégia está dando 100% de vitória.


Abaixo está o link para a estratégia.

http://www.binaryoptionsedge.com/topic/1879-high-power-option-2015/page-2#entry108014

Posto #29

Obrigado.

 

Caro Mladen, é possível que as duas funções a seguir

iMA(NULL,0,MAPeriod,0,MODE_EMA,PRICE_HIGH,i);

and

iCustomMa(ma_ema,getPrice(pr_high,Open,Close,High,Low,i),MAPeriod,i,0);
(or iCustomMa(ma_ema,iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,i),MAPeriod,i,0); )
onde ma_ema é definido abaixo:
#define _maWorkBufferx1 1
#define _maWorkBufferx2 2
#define _maWorkBufferx3 3
#define _maWorkBufferx5 5
double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
   if (length<=1) return(price);
   int r = Bars-i-1;
   switch (mode)
   {
      // ...
      case ma_ema   : return(iEma(price,length,r,instanceNo));
      // ...
      default : return(0);
   }
}

double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
   if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
   //
   double alpha = 2.0 / (1.0+period);
          workEma[r][instanceNo] = workEma[r-1][instanceNo]+alpha*(price-workEma[r-1][instanceNo]);
   return(workEma[r][instanceNo]);
}
retornar valores diferentes (para o mesmo período MAP e i)? significaria
que o iEma funciona de forma ligeiramente diferente do EMA embutido?
 
wojtekpaul:

Caro Mladen, é possível que as duas funções a seguir

iMA(NULL,0,MAPeriod,0,MODE_EMA,PRICE_HIGH,i);

and

iCustomMa(ma_ema,getPrice(pr_high,Open,Close,High,Low,i),MAPeriod,i,0);
(or iCustomMa(ma_ema,iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,i),MAPeriod,i,0); )
onde
#define _maWorkBufferx1 1
#define _maWorkBufferx2 2
#define _maWorkBufferx3 3
#define _maWorkBufferx5 5
double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
   if (length<=1) return(price);
   int r = Bars-i-1;
   switch (mode)
   {
      // ...
      case ma_ema   : return(iEma(price,length,r,instanceNo));
      // ...
      default : return(0);
   }
}

double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
   if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
   //
   double alpha = 2.0 / (1.0+period);
          workEma[r][instanceNo] = workEma[r-1][instanceNo]+alpha*(price-workEma[r-1][instanceNo]);
   return(workEma[r][instanceNo]);
}
devolver valores diferentes (para o mesmo período MAP e i)? Significaria
que o iEma funciona de forma ligeiramente diferente do EMA embutido?
O EMA depende de valores anteriores. Se você calculou os valores em toda a série, eles devem retornar valores muito semelhantes. Caso contrário (se você tentou calcular apenas um valor), eles não serão os mesmos, pois o iMA() calculará, atrás das cortinas, a série inteira, enquanto o iCustomMa() calculará apenas os valores que você solicitou.

Faça o loop do iCustomMa() sobre toda a série, e os resultados devem ser os mesmos


PS: que o iEma() é obsoleto. A nova versão é assim (não vai mudar os valores, mas é "à prova de modo estrito")
double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
   if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
   //
  
   workEma[r][instanceNo] = price;
   if (r>0 && period>1)
          workEma[r][instanceNo] = workEma[r-1][instanceNo]+(2.0/(1.0+period))*(price-workEma[r-1][instanceNo]);
   return(workEma[r][instanceNo]);
}
 

Muito obrigado por sua resposta rápida! Você poderia por favor me dizer onde

Acho o código atual das médias móveis:

enum enMaTypes
{
   ma_sma,     // simple moving average - SMA
   ma_ema,     // exponential moving average - EMA
   ma_dsema,   // double smoothed exponential moving average - DSEMA
   ma_dema,    // double exponential moving average - DEMA
   ma_tema,    // tripple exponential moving average - TEMA
   ma_smma,    // smoothed moving average - SMMA
   ma_lwma,    // linear weighted moving average - LWMA
   ma_pwma,    // parabolic weighted moving average - PWMA
   ma_alxma,   // Alexander moving average - ALXMA
   ma_vwma,    // volume weighted moving average - VWMA
   ma_hull,    // Hull moving average
   ma_tma,     // triangular moving average
   ma_sine,    // sine weighted moving average
   ma_linr,    // linear regression value
   ma_ie2,     // IE/2
   ma_nlma,    // non lag moving average
   ma_zlma,    // zero lag moving average
   ma_lead,    // leader exponential moving average
   ma_ssm,     // super smoother
   ma_smoo     // smoother
};

Tanto quanto sei, esta é a última lista de médias móveis disponíveis como código aberto.

(outros MAs já estão no formato ex4).