Aiuto per la codifica - pagina 777

 
Algo_W:

Non sono sicuro di come implementare IMaOnArray per questo. Penso che questa sia la soluzione? Qualcuno può aiutarmi a ottenere la media mobile dell'ADX per l'istogramma?

Grazie a voi

#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:

Ciao Naguisa!

Confido nel tuo bene?

Voglio apprezzare e ringraziarti per aver messo a punto l'indcatore mtf BB. Posso dirti che funziona a meraviglia.


Naguisa! Solo per indagare ulteriormente se posso, questo indicatore può essere modificabile in modo che uno possa vedere diversi time-fames personalizzati come i numeri di Fibonacci o qualsiasi time-frames pari e dispari e non necessariamente quelli per MT4 solo. è possibile, gentilmente?

 

aiuto di codifica per favore.

come si può codificare

un raggio destro ad un punto finale ma?

 
guner:

aiuto di codifica per favore.

come si può codificare

aggiungere il raggio destro a un punto finale della MA?

Disegna l'oggetto trend con i valori PRICE1 e PRICE2 uguali al valore della tua MA scelta sulla barra 0 e TIME1 uguale al tempo della barra 0 mentre TIME2 è da qualche parte nel futuro. Adogni tick ricalcola la MA e imposta PRICE1 e PRICE2 di conseguenza e ad ogni nuova barra imposta un nuovo TIME1.

 

Ciao a tutti,


Sto studiando il libro "Volatility illuminated" di Mark Whistler e sono interessato ad approfondire gli indicatori che ha costruito, in particolare il WAVE-PM
Whistler ha pubblicato il codice mq4 sul libro e c'è una copia anche qui http://fxcodebase.com/code/viewtopic.php?f=38&t=64011

Tuttavia la mia intenzione è quella di portare l'indicatore su tradingview dato che è la mia principale piattaforma grafica, conosco un po' di pinescript di base ma trovo davvero difficile leggere il codice C dello script originale
Qualcuno può dare un'occhiata al codice e dirmi approssimativamente solo la logica di ciò che fa?

Sul libro Whistler non dice molto sull'indicatore, solo che "identifica visivamente la 'compressione' della distribuzione a breve termine all'interno della distribuzione più grande".



Per quello che ho capito l'oscillatore rappresenta la differenza tra le bande superiore e inferiore di una banda di bollinger, poi il valore viene normalizzato in un range di 0-1 e tracciato lungo il tempo

Nel codice vedo che vengono creati due oscillatori (ShortBandsPeriod e LongBandsPeriod) ma poi mi perdo nei cicli for...posso solo vedere che ci sono alcuni calcoli matematici (un quadrato, unapotenzaesponenziale, e una tangente?) ma purtroppo non riesco a capire perché e come vengono fatti

.
.
.
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);
                                
                   //}
   }
.
.
.


Quindi qualsiasi aiuto, suggerimento o consiglio è apprezzato, grazie!

File:
WAVE-PM.mq4  5 kb
 

Ciao ragazzi, qualche codificatore potrebbe aiutarmi a modificare questo indicatore Fisher.

Sì, è un indicatore molto vecchio e repaint, tuttavia ha alcune informazioni preziose. voglio analizzare lo stato dell'indicatore quando ogni candela chiusa.

Non cambiamo la funzione di repaint, aggiungiamo solo l'auto-refresh.Make l'indicatore aggiorna e registra lo stato quando ogni candela chiusa, ma non si aggiorna durante l'inizio della prossima candela.

Scusate per il mio cattivo inglese, grazie in anticipo.

File:
fisher1.mq4  3 kb
 

Ciao ragazzi!

Confido che stiate tutti bene?

Ho trovato questi indicatori nel forum della zona dinamica, ma non funzionano come tali e se qualche generoso codificatore può correggerli, li apprezzerei molto.

Li sto allegando qui,

Il mio sincero apprezzamento in anticipo.

 
Mkurugenzi:

Ciao ragazzi!

Confido che stiate tutti bene?

Ho trovato questi indicatori nel forum della zona dinamica, ma non funzionano come tali e se qualche generoso codificatore può correggerli, li apprezzerei molto.

Li sto allegando qui,

Il mio sincero apprezzamento in anticipo.

@Naguisa Unada


Mi fido del tuo bene?


Gentilmente, sei in grado di visualizzare il mio ultimo post sopra e vedere se sei in grado di at-least ritoccare alcuni se non tutti gli indicatori di lavorare?


il tuo sforzo e tempo e risorsa è apprezzato in anticipo.

 

Ehi, codificatori! Qualcuno può aiutarmi a modificare questo EA?

Questo è un semplice EA di acquisto basso e vendita alta che butta fuori ordini limite ogni x minuti che durano x minuti/ore.


Quello che penso lo migliorerebbe è aggiungere un filtro. Diciamo stocastico o RSI.

Così quando lo stocastico è inferiore a 40 = lancia i limiti di acquisto

E quando lo stocastico è superiore a 60 = lanciare i limiti di vendita

E nel mezzo non lancia nulla



È possibile? Grazie in anticipo.

Allego l'EA


Ho usato l'EA "manualmente" decidendo di farlo girare a lungo o a corto con buoni risultati.

File:
WIDE_HARD.mq4  8 kb
EA-FXblue.png  68 kb
 
Salve. Mi scuso immediatamente per il mio cattivo inglese. Se non è difficile, per favore aiutatemi con il codice del consulente. Vale a dire, per correggere le condizioni di apertura e chiusura delle posizioni. Un po 'sul robot, il robot apre e chiude le posizioni al giro dell'indicatore zig zag.
Questo sistema dovrebbe funzionare indipendentemente dal fatto che ci sia o meno un indicatore zig zag in 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);
  }
//+------------------------------------------------------------------+

apertura vendite

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])

vendite di chiusura

      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])
              

apertura acquisto

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])
     

chiusura acquisto

 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])