Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 49

 
mila.com:

Grazie, è corretto?

label =ObjectGetInteger(0,nm,OBJPROP_COLOR,0);

if(label==Lime) BUY_ = true;

No, è così che si ottengono i dati del colore come tipo int.

Prova a vedere cosa c'è stampato nel commento.

Comment( ColorToString((color)ObjectGetInteger(0,"NaneOBJ",OBJPROP_COLOR,0), true) );

Leggi la conversione

 
Vitaly Muzichenko:

Leggi la conversione

Grazie, la condizione stessa è corretta?
 
mila.com:
Grazie, la condizione stessa è corretta?
string label = ColorToString((color)ObjectGetInteger(0,"MP140269",OBJPROP_COLOR,0), true);
if(label==Lime) BUY_ = true;

if(label==Red) BUY_ = false;
Probabilmente no. Se i dati sono di tipostringa, è necessario racchiuderli tra virgolette e scrivere una corrispondenza completa di colore carattere per carattere: "clrLime".
 
Vitaly Muzichenko:
Probabilmente no. Se i dati sono di tipostringa, è necessario racchiuderli tra virgolette e scrivere una corrispondenza completa di colore carattere per carattere: "clrLime".
Grazie, ha funzionato )
 
Vitaly Muzichenko:
Probabilmente no. Se i dati sono di tipostringa, dovete racchiuderli tra virgolette e scrivere la corrispondenza completa dei colori carattere per carattere: "clrLime".
No, non c'è bisogno di racchiuderlo tra virgolette - queste sono costanti. Cioè, dovrebbe essere così: if(label==clrLime) {}
 
Artyom Trishkin:
No, non ha bisogno di essere tra virgolette - queste sono costanti. Cioè, dovrebbe essere così: if(label==clrLime) {}

Grazie, funziona.

Potresti per favore dirmi come ottenere correttamente il livello dell'indicatore stocastico dal timeframe alto.

      int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
      int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
      double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
      double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
      double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
      double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
      
      if(sto2_0>55)
       {
      BufferUP[i]=low[i]-distance*MyPoint;
       }
      

Quando l'indicatore è impostato su un timeframe alto, tutto è corretto, la freccia è impostata quando la linea dell'indicatore è sopra 55.

Quando si passa a un grafico inferiore, il caos.

 
mila.com:

Grazie, funziona.

Potresti per favore dirmi come ottenere correttamente il livello dell'indicatore stocastico dal timeframe alto.

      int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
      int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
      double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
      double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
      double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
      double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
      
      if(sto2_0>55)
       {
      BufferUP[i]=low[i]-distance*MyPoint;
       }
      

Quando l'indicatore è impostato su un timeframe alto, tutto è corretto, la freccia è impostata quando la linea dell'indicatore è sopra 55.

Quando si passa a un grafico inferiore, il caos.

Se state parlando del ciclo dell'indicatore, allora per sapere quale barra del timeframe alto corrisponde alla barra indicata dall'indice del ciclo nel priceframe basso, dovete ottenere il tempo della barra i. Poi questo tempo è usato per identificare la barra dell'highframe che corrisponde a questo tempo. Per esempio: una barra di H4 corrisponde a quattro barre di H1. Di conseguenza, quattro valori dell'indice del ciclo i di H1 punteranno alla stessa barra su H4.

Dalle tue variabili (i loro nomi) non riesco a capire da quale barra prendi i valori. Quindi è difficile dire qualcosa di diverso dalla teoria.

 
Artyom Trishkin:

Se state parlando del ciclo dell'indicatore, per sapere quale barra del timeframe superiore corrisponde alla barra indicata dall'indice del ciclo nel tf inferiore, dovete ottenere il tempo della barra i. Poi questo tempo è usato per identificare la barra dell'highframe che corrisponde a questo tempo. Per esempio: una barra di H4 corrisponde a quattro barre di H1. Corrispondentemente, quattro valori dell'indice del ciclo i dal timeframe H1 punteranno alla stessa barra sul timeframe H4.

Dalle tue variabili (i loro nomi) non riesco a capire da quale barra prendi i valori. Perciò è difficile dire qualcosa di diverso dalla teoria.

L'indicatore è impostato su M1.

La condizione principale per la freccia al rialzo è la linea dell'indicatore su M5 sopra il livello 55.

Questa condizione non è soddisfatta, anche se la linea è sotto il livello 55 su M5, la freccia è ancora posizionata.

 

come scrivere la condizione "se il massimo di 1 barra è superiore al minimo di 3..." nel robot.

Il trigger non dovrebbe essere "OnTick()".

ma ogni volta che 0 bar diventa 1

 
trader781:

come scrivere la condizione "se il massimo di 1 barra è superiore al minimo di 3..." nel robot.

Il trigger non dovrebbe essere "OnTick()".

ma ogni volta che 0 bar diventa 1

Potresti fare quanto segue

//+------------------------------------------------------------------+
//|                                                       test03.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link      "https://www.mql5.com/ru/users/sergey1294"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CNevBar
  {
private:
   datetime          curbar;
   datetime          lastbar;
public:
                     CNevBar();
                    ~CNevBar();
   bool              new_bar(string symbol,ENUM_TIMEFRAMES period);
  };
//+------------------------------------------------------------------+
void CNevBar::CNevBar()
  {

  }
//+------------------------------------------------------------------+
void CNevBar::~CNevBar(void)
  {

  }
//+------------------------------------------------------------------+
bool CNevBar:: new_bar(string symbol,ENUM_TIMEFRAMES period)
  {
   curbar=(datetime) SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
   if(lastbar==0)lastbar=(datetime)SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
   if(lastbar!=curbar)
     {
      lastbar=curbar;
      return(true);
     }
   return(false);
  }

CNevBar newbar;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(newbar.new_bar(_Symbol,PERIOD_CURRENT))
     {
      if(High[1]>Low[3])
        {

        }
     }

  }
//+------------------------------------------------------------------+

...

Motivazione: