Indicatore Domanda - pagina 8

 
heelflip43:

Credo che il tuo problema sia che non hai resettato val1 e val2. Quindi una volta che hai trovato il massimo e l'ultimo minimo devi resettarli:

Speriamo che questo aiuti.
Ahhh, lo proverò una volta che avrò avviato windows più tardi in giornata, grazie

Pensavo che se la prima if(statement) fosse stata vera, allora avrebbe riavviato lo start() di nuovo e resettato dall'inizio del codice e quindi resettato val1 e val2 di nuovo

Beh, il modo in cui ci stavo pensando era - if(first statement) true quindi stampa, e poi passa al testo il prossimo if(second) probabilmente false quindi torna di nuovo all'inizio dello start e resetta val1 e val2

Sto ottenendo le stampe e i valori corretti ma stampa solo continuamente.

Ora che ci penso non l'ho mai capito per nessun if(statement) anche la più semplice delle croci EMA produce stampe continue

Proverò il tuo codice che hai postato ma sarei sorpreso se aggiungessi le dichiarazioni di stampa per stampare quelle variabili e non stampasse continuamente anche

Lo proverò in giornata

Grazie
 
Ok, sì, resettare val1 e val2 mi restituisce A high, ma continua a stampare tutto continuamente, non così tanti come prima.
Sono sicuro di dover fare qualcosa con currentTime e iTime per sistemare la cosa, dovrò rivederla ancora un po'.

Sembra che ci dovrebbe essere già uno schema ABCD nella base di codice da cui imparare, ma questo sembra essere qualcosa che non è disponibile tranne che sulla base di ZigZag che sto rivedendo ora per vedere se questo mi dà qualche indizio. Ma di nuovo questo è anche un indicatore

Comunque se aggiungo && macd o qualcosa del genere li stampa solo una volta, il che mi sta davvero buttando fuori
 
Penso di averlo, dopo averci pensato ancora un po' e averci lavorato un po' di più

Che ne dite di questo:

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;

double val1;
double val2;
bool traded = false;
bool A = false;

//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 


     
     if(val1 > 0 && traded == false && val2==0)
      { 
      // in the absence of an && indicator above I get continous print statements
      // also does not print A high this is not desired
      // with indicator added && indicator above, then it prints A and B once as it should ???
      // I need to work this out so it won't print all the time aka trade all the time
      // A and B first values seems to initialize the whole block
      // just a reminder that they time stamps coordinate after this FYI
      // now work on C retrace and possibly signals
      // add options for user to select some candle patterns
      // add options to select indicators
      // add bells and whistles to make things fun
      // alerts,sounds,maybe poppup video animation or something
      
      double B = val1;
      Print(B, " B high");
         if(val2==0)
            {
            for (i=0; val2==0; i++)
               {
               val2=iFractals(NULL, 0, MODE_LOWER, i);
               double A = val2;
                  if(A!=0)
                     {
                     Print(A, " A low");
                     }
               }
             }  
      traded=true;
      }
     
     val1=iFractals(NULL, 0, MODE_UPPER,3);
     val2=iFractals(NULL, 0, MODE_LOWER,3); 
     
     if(val2 > 0 && traded == true && val1 == 0)
      {
      B = val2;
      Print(B, " B low");
         if(val1==0)
            {
            for (i=0; val1==0; i++)
               {
               val1=iFractals(NULL, 0, MODE_UPPER, i);
               A = val1;
                  if(A!=0)
                     {
                     Print(A, " A high");
                     }
               }
             }  
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+


      

Questo viene stampato solo una volta quando si aggiunge

if(val1 > 0 && traded == false && val2==0)

e

if(val2 > 0 && traded == true && val1 == 0)


Così mi sto avvicinando un po' di più e posso valutarlo ancora un po'.

Grazie per l'aiuto a tutti, questo è stato un aiuto gigantesco perché mi ha giocato le idee per risolvere questo e ha ampliato la mia conoscenza un po' di più su come resettare le cose.
Devo tenerlo nella mia tasca posteriore

Grazie

 

Non ricevo il problema la maggior parte delle volte. Sembra che succeda solo quando c'è un frattale superiore e inferiore nella stessa barra, il che succede nei mercati incerti a volte. L'unico modo per aggirare questo problema è eseguire il calcolo solo una volta per barra:

static datetime currTime;
if(Time[0]!=currTime){
currTime = Time[0];
// Rest of code
}

Questo dovrebbe significare che non otterrà falsi scambi su frattali che vanno in entrambe le direzioni.

 
Ora posso iniziare a lavorare sul resto, vorrei solo essere abbastanza esperto da capire la conversione di un indicatore iCustom in un EA, allora probabilmente l'avrei già risolto molto tempo fa.

Il modo in cui lo sto facendo ora sarà più complicato perché devo ancora aggiungere indicatori iCustom insieme alla mia logica di codice; e tutte le campane e i fischietti invece di usare un indicatore iCustomer già funzionante come mia logica di codice

Comunque, grazie ancora una volta, una grande notizia per il giorno.
 
Oppure anche la tua soluzione funzionerebbe, ero nel mezzo della prova della mia teoria e non ho visto il tuo post.
 
heelflip43:

Non ricevo il problema la maggior parte delle volte. Sembra che succeda solo quando c'è un frattale superiore e inferiore nella stessa barra, il che succede nei mercati incerti a volte. L'unico modo per aggirare questo problema è eseguire il calcolo solo una volta per barra:

Questo dovrebbe significare che non otterrà falsi scambi su frattali che vanno in entrambe le direzioni.

Ho bisogno di imparare come funziona questa parte un po' meglio, l'ho vista prima e altre versioni simili, ma l'ho capita solo in parte.

Ho bisogno di studiarlo ancora un po'. Questo potrebbe essere il punto in cui sto perdendo la maggior parte dei miei codici a causa delle continue dichiarazioni di stampa durante i test.

Sono sicuro che ci sono altri modi per aggirarlo e tuttavia ho intenzione di creare anche l'indicatore per questo e disegnare le linee da AtoB ecc.

Studierò un po' di più
 
Ecco alcuni progressi che ho fatto finora

Forse qualcuno può farne buon uso, sono sicuro che può essere rivisto meglio da un guru

Comunque sta stampando quello che voglio e ho aggiunto alcuni valori esterni per i livelli di fibo in modo che gli utenti possano selezionare i livelli che vogliono

Il mio primo contributo di codice al forum LOL

Qualcuno ha un modo migliore per portare a termine questo compito, io già prevedo di raddoppiare il codice a causa dell'aggiunta di indicatori iCustom per mostrare cosa sta facendo il mio codice, ma questo significa una sorta di doppia codifica per un array buffer ecc. e poi usare iCustom

Comunque ecco cosa ho ottenuto

//+------------------------------------------------------------------+
//|                                          Unfinished_POS_slate.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS slate by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;
extern double fibo_retrace=0.500; //this is C retracement level
extern double fibo_extension=1.618;  // coming soon, D extention 


double val1;
double val2;
bool traded = false;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 

     
     if(val1 > 0 && val2 == 0 && traded == false)
      { 
      double B = val1;
      Print(B, " B high");
      if(val2==0)
         {
         for (i=0; val2==0; i++)
            {
            val2=iFractals(NULL, 0, MODE_LOWER, i);
            double A = val2;
            if(A!=0)
              {
              Print(A, " A low");
              }
            }
          }
       double C = B-(B-A)*fibo_retrace; //retrace 50% no fractal
       Print(C, " UP ABC retrace level");
       if(Bid <= C)
         {
         Print (Bid, " UP ABC C Retrace Hit");
         }  
      
      
      traded=true;
      }
     
     //val1=iFractals(NULL, 0, MODE_UPPER,3); been suggested I might need to reset these here
     //val2=iFractals(NULL, 0, MODE_LOWER,3); I'll investigate this some more
     
     
     if(val2 > 0 && val1 == 0 && traded == true)
      {
      B = val2;
      Print(B, " B low");
      if(val1==0)
        {
        for (i=0; val1==0; i++)
           {
           val1=iFractals(NULL, 0, MODE_UPPER, i);
           A = val1;
           if(A!=0)
             {
              Print(A, " A high");
             }
           }
        }        
             
        C = B+(A-B)*fibo_retrace; //retrace 50% no fractal  //recheck my math on this one
        Print(C, " DOWN ABC retrace level");
        if(Bid <= C)
           {
           Print (Bid, " DOWN ABC C Retrace Hit");
           } 
                 
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+
Con la mia limitata conoscenza ed esperienza questo è tutto quello che ho potuto trovare per uno schema ABCD

Ci lavorerò di più per permettere all'utente di cambiare gli A e i B a livelli che non violino gli A e i B precedenti per rimanere veramente all'interno di una tendenza ecc.

Spero che qualcuno possa usare questo o forse possa aggiungerlo con qualche idea migliore

Ora lavorerò su modelli di candele e indicatori da aggiungere ad esso o qualcosa del genere, e avvisi popup, forse suoni e qualche video popup potrebbe essere divertente

Grazie per l'aiuto a tutti.

 

Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я являюсь трейдером компании "Инстафорекс"

Помогите в поиске нужного скрипта! Скрипт нужен для сетки отложенных ордеров.

 
GERICH:

Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я являюсь трейдером компании "Инстафорекс"

Помогите в поиске нужного скрипта! Скрипт нужен для сетки отложенных ордеров.

Amico, non sono interessato a InstaForex e se volete uno script per la griglia, per favore postate un progetto nella sezione coders for hire
E per favore postate in inglese

Buon trading
Motivazione: