Ajuda na codificação - página 777

 
Algo_W:

Não tenho certeza de como implementar o IMaOnArray para isto. Acho que essa é a solução? Alguém pode me ajudar a obter a média móvel do ADX para o histograma?

Obrigado.

#property indicator_type1 DRAW_LINE

#property indicator_type1 DRAW_LINE
for(int i = limit-1; i >= 0; i--)
   Buffer1[i] = iADX(NULL, PERIOD_CURRENT, 14, PRICE_CLOSE, MODE_MAIN, i);
   
for(i = limit-1; i >= 0; i--)   
   Buffer2[i] = iMAOnArray(Buffer1, 0, 5, 0, MODE_SMA, i);
 
Naguisa Unada:

Olá Naguisa!

Confio em seu poço?

Quero apreciar e agradecer-lhe por ajustar o indcator mtf BB. Posso dizer-lhe que funciona como um encanto.


Naguisa! Só para saber mais se posso, este indicador pode ser quinzenal para que se possa ver diferentes prazos personalizados como os números Fibonacci ou qualquer prazo ímpar e uniforme e não necessariamente os de MT4. isso é possível, por favor?

 

ajuda na codificação, por favor.

como pode ı codificar

raio direito para um ponto final ma?

 
guner:

ajuda na codificação, por favor.

como pode ı codificar

raio direito para um ponto final ma?

Desenhe objeto de tendência com valores PREÇO1 e PREÇO2 iguais ao valor de sua MA escolhida na barra 0 e TIME1 igual ao tempo da barra 0 enquanto TIME2 está em algum lugar no futuro. Emcada tick recalcule MA e defina PREÇO1 & PREÇO2 de acordo e em cada nova barra defina novo TIME1.

 

Olá a todos,


Estou estudando o livro "Volatilidade iluminada" de Mark Whistler e estou interessado em aprofundar os indicadores que ele construiu, especialmente o WAVE-PM
Whistler publicou o código mq4 no livro e há uma cópia também aqui http://fxcodebase.com/code/viewtopic.php?f=38&t=64011

No entanto, minha intenção é portar o indicador para o tradingview, já que é minha principal plataforma de gráficos, conheço um pouco de pinescript básico, mas acho muito difícil de ler no código tipo C do script original.
Alguém pode dar uma olhada no código e me dizer aproximadamente apenas a lógica do que ele faz?

No livro Whistler não diz muito sobre o indicador, apenas que "está identificando visualmente a 'compressão' da distribuição a curto prazo dentro da distribuição maior".



Pelo que entendi, o oscilador representa a diferença entre as bandas superior e inferior de uma banda de bollinger, então o valor é normalizado em uma faixa de 0-1 e plotado ao longo do tempo

No código vejo que dois osciladores são criados (ShortBandsPeriod e LongBandsPeriod), mas depois me perco nos ciclos... só posso ver que existem alguns cálculos matemáticos (um quadrado, umapotênciaexponentee uma tangente...), mas não consigo entender por que e como são feitos

.
.
.
for (i=limit; i>=0; i--){
   
             
                avg= iMA(NULL,0,ShortBandsPeriod,0,MODE_SMA,PRICE_CLOSE,i+ShortBandsShift);
                
                sum=0;
                
                for (j=ShortBandsPeriod-1; j>=0; j--){
                 temp = Close[i+j] - avg;
                 sum = sum + temp * temp;
                }
         
                ShortDev[i]= ShortBandsDeviations * MathSqrt(sum / ShortBandsPeriod);
        ShortDev1[i] = MathPow((ShortDev[i] / Point), 2);
                
                
                    //if  ( i < limit - Chars)
                        //{
         
                        
                          temp=0;
                                for (j=Chars-1; j>=0; j--){                             
                                 temp = temp + ShortDev1[i+j];
                                }
                        
            temp = MathSqrt(temp / Chars) * Point;
            if (temp != 0)
                        {
                temp = ShortDev[i] / temp;
            }

                                
         
                        ShortOscillator[i] = MathTanh(temp);
                                
                   //}
   }
.
.
.


Portanto, qualquer ajuda, sugestão ou dica é apreciada, obrigado!

Arquivos anexados:
WAVE-PM.mq4  5 kb
 

Oi, pessoal, alguns codificadores poderiam ajudar a modificar este indicador de pesca.

sim, é um indicador muito antigo e repaint,however tem algumas informações valiosas. quero analisar o estado do indicador quando cada vela fechar. serei apreciado.

Não mudamos a função de repintura, apenas acrescentamos o auto-refresco. Faça o indicador atualizar e registrar o estado quando cada vela fechar, mas não se atualize durante a próxima vela estiver começando.

Desculpe pelo meu mau inglês, obrigado antecipadamente.

Arquivos anexados:
fisher1.mq4  3 kb
 

Olá, pessoal!

Confio em todos vocês bem?

Encontrei estes indicadores no fórum da zona dinâmica, mas não funcionam como tal e se algum codificador generoso puder consertá-los, eu os apreciaria muito.

Estou anexando-os aqui,

Meu sincero apreço com antecedência.

 
Mkurugenzi:

Olá, pessoal!

Confio em todos vocês bem?

Encontrei estes indicadores no fórum da zona dinâmica, mas não funcionam como tal e se algum codificador generoso puder consertá-los, eu os apreciaria muito.

Estou anexando-os aqui,

Meu sincero apreço com antecedência.

@Naguisa Unada


Confio em seu poço?


Por favor, você está em condições de ver meu último posto acima e ver se você está em condições de retocar pelo menos alguns, se não todos os indicadores para trabalhar?


seu esforço, tempo e recursos são apreciados com antecedência.

 

Ei codificadores! Alguém pode me ajudar a modificar este EA?

Esta é uma simples compra baixa venda alta EA jogando fora Ordens limitadas sempre x minutos que duram x minutos/horas.


O que eu acho que melhoraria isto é adicionar um filtro a ele. Digamos estocásticos ou RSI...

Então, quando o estocástico é inferior a 40 = lançar os limites de compra

E quando o estocástico é superior a 60 = lançar os limites de venda

E, no meio não lança nada



Isto é possível? Agradecemos antecipadamente.

Eu anexei a EA


Eu usei a EA "manualmente", decidindo executá-la de forma longa ou curta com bons resultados.

Arquivos anexados:
WIDE_HARD.mq4  8 kb
EA-FXblue.png  68 kb
 
Olá. Peço desculpas imediatamente pelo meu inglês ruim. Se não for difícil, por favor, ajude com o código do conselheiro. Nomeadamente, para corrigir as condições de abertura e fechamento de posições. Um pouco sobre o robô, o robô abre e fecha posições na virada do indicador zig-zag.
Este sistema deve funcionar independentemente da existência ou não de um indicador zigue-zague no MT4.
//+------------------------------------------------------------------+
//|                                       Test advisor on ZigZag.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2010, MQL для тебя."
#property link "http://mql4you.ru"
#property strict
extern double lots = 0.01; //
extern int  TakeProfit=60; //
extern int  StopLoss=100; //
extern int Magic=111111111;
extern int Slippage=3;
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

datetime Today=0;
double SL,TP;
int ticket;
//±-----------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//±-----------------------------------------------------------------+
int deinit() {return(0);}
//±-----------------------------------------------------------------+
int start()
  {

   if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
   if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
                                    //:проверим открытие новой свечи
   if(Time[0]==Today) return(0);
   Today=Time[0];
//:получим значение ZigZag на предыдущей свече
   double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1);
   double lZZ_=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,0);
// открытие продаж

   if(CountSell()==0 && lZZ==Low[0] && lZZ_==Low[0])
     {
      SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
      TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
        {

         ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,SL,TP,"macd sample",Magic,0,Red);
         if(ticket>0)
           {
            // закрытие продаж
    //        if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                        if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на покупку !");
                    }
                 }
              }
           }
        }
     }
// открытие покупок

 //  if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
      SL = NormalizeDouble(Ask-StopLoss*Point, Digits);
        {
         ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,SL,TP,"macd sample",Magic,0,Green);
         if(ticket>0)
           {
            // закрытие покупок    
       //     if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                        if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+

abertura de vendas

if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])

fechamento das vendas

      if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              

comprainicial

if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     

compra final

 if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])