Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 608

 

new-rena:
Ок. В каком месте? В конце месяца? Я по календарику проверял...

//+------------------------------------------------------------------+
//|                                                  WeekOfMonth.mq4 |
//|                                                         new-rena |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "new-rena"
#property link      ""
#property version   "1.00"
#property strict
//--------------------------
double DayOfMonth,WeekOfMonth;
int DayOfWeeks,MonthOfYear,PrevMonth,Delta=0,Show=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//--- 
PrevMonth=TimeMonth(TimeLocal());
DayOfMonth=TimeDay(TimeLocal());
if(DayOfMonth==1)
   {
      Delta=TimeDayOfWeek(TimeLocal());
      Show=1;
   }
//--- init
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//--- deinit
      return(0);   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {
//---   
MonthOfYear=TimeMonth(TimeLocal());
DayOfMonth=TimeDay(TimeLocal());
DayOfWeeks=TimeDayOfWeek(TimeLocal());
if(PrevMonth!=MonthOfYear && DayOfMonth==1)
   {
      Delta=DayOfWeeks;
      Show=1;
   }
if(Show==1)
   {
      WeekOfMonth=MathCeil((DayOfMonth+Delta)/7);      
      Print("DayOfMonth N "+DoubleToStr(DayOfMonth,0));
      Print("WeekOfMonth N "+DoubleToStr(WeekOfMonth,0));
   }

PrevMonth=MonthOfYear;
//--- start
      return(0);   
  }
//+------------------------------------------------------------------+

non divertente
 
pako:
non è divertente.

Hai pensato di rispondere così per 30 minuti?

Non è una risposta. Sii più specifico, Paco.

Sai che non è affatto divertente, ma la storia tace su questo...

 

Qualsiasi tester, deve includere le incertezze.

Non devo spiegartelo. 2 o 3 punti da eseguire. 0,1-1 punto di commissione e così via.

Ma, di nuovo, è inutile che vi spieghi che ci sono anche altri parametri.

Per esempio, supponiamo di aver trovato una tendenza. Per esempio, su EURUSD. Per il periodo da gennaio di quest'anno, per esempio, di nuovo! Allora quanti soldi abbiamo guadagnato finora? È facile da calcolare. Ma cosa? Se investiamo esattamente la stessa quantità di denaro. Otterremo esattamente lo stesso profitto in un paio di giorni? Questo è ciò che un trader dovrebbe sognare!!! Ora, andiamo al punto. Strategia? Se è possibile in codice macchina? Deve fare qualcosa di simile, o vicino alla strategia di un trader esperto.

In una parola, guardando la tua creazione! Cosa si può dire? Non posso dire nulla. Com'è brutto! Tutto è così sbagliato. Tutto è così lontano dalla vera direzione. Sto solo guardando la TV. Mi sto riposando, mi sto solo riposando!!!

Ma buona fortuna, comunque.

 
new-rena:

Hai pensato di rispondere così per 30 minuti?

Non è una risposta. Sii più specifico, Paco.

Sai che non è affatto divertente, ma la storia tace su questo...

nel carrello conta giusto :)))
 
pako:
nel carrello conta correttamente :)))

Ancora un'idea qui e l'ho data (so....):

if(PrevMonth!=MonthOfYear && DayOfMonth==1)    {       Delta=DayOfWeeks;       Show=1;    }

WeekOfMonth=MathCeil((DayOfMonth+Delta)/7); 

 
new-rena:

Dovremmo anche mettere quando il 1° del mese cade in un fine settimana, dato che il tester non gira i fine settimana... Non ho visto l'excel.

Bene, e per rotolare in inizializzazione da un paio di mesi fa E al mese corrente non sarebbe male, in modo da non aspettare la fine del calcolo del numero della settimana un mese intero. Ma queste sono tutte sfumature ....

Questo è ciò che rende MQL4 così attraente - il codice è breve e chiaro!

Non ho tempo adesso, ma Kim ha tutte le funzioni per cercare date e orari, c'è l'inizio del mese e il numero della settimana, in generale ho visto tutto, non ricordo dove l'ho visto, ma forse qui: https://forum.mql4.com/ru/38949
 
Dimitri ha già scritto da tempo tutto ciò che riguarda il tempo, giorni, settimane, mesi, anni... Stai reinventando la ruota?
 

Ah. Anni, mesi, giorni o settimane. Ore? 15 minuti? Ah. 5 minuti di lavoro e Ah. Ah quanti soldi. O venti? E poi ancora. Ah.

 
Karputov Vladimir:

Quando un indicatore deve essere aggiunto alla finestra principale

int OnInit() 
  { 
   
//--- Создание кнопки 
  if( !ObjectCreate( 0, "Add_Indicator", OBJ_BUTTON, 0, 0, 0 ) )
  {
  
    Print( "Кнопка 'Добавить' не создана!" );
    return( INIT_FAILED );
  }
  else
  {
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_CORNER, CORNER_RIGHT_LOWER );
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_XDISTANCE, 200 );             
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_YDISTANCE, 500 );
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_XSIZE, 80 );
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_YSIZE, 20);

      ObjectSetInteger( 0, "Add_Indicator", OBJPROP_BGCOLOR, clrWhite );
      ObjectSetInteger( 0, "Add_Indicator", OBJPROP_STATE, true );
      ObjectSetString( 0, "Add_Indicator", OBJPROP_TEXT, "Добавить" );
     
  }
    
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",MA_Period,MA_Shift,MA_Method,PRICE_CLOSE);
   if(MA_handle==INVALID_HANDLE)
//--- попробуем добавить индикатор на график 
 Print(__FUNCTION__,", first_start = ",first_start);
//return(INIT_FAILED);
   return(INIT_SUCCEEDED);
  } 
//+------------------------------------------------------------------+
//| Обработка события нажатия кнопок                                 |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события   
                  const long& lparam,   // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam  // параметр события типа string 
                  )                
  {
   long b_state;
   //---
   if(id==CHARTEVENT_OBJECT_CLICK) // НАЖАТ ГРАФИЧЕСКИЙ ОБЪЕКТ       
         if ( sparam == "Add_Indicator" )// Нажата кнопка
         {
      if ( ObjectGetInteger( 0, "Add_Indicator", OBJPROP_STATE, 0, b_state ) )
      {
        if ( b_state == 1 )
        {
          first_start=false;
          ObjectSetInteger( 0, "Add_Indicator", OBJPROP_BGCOLOR,clrWhite );
          ObjectSetString( 0, "Add_Indicator", OBJPROP_TEXT, "Добавить" );
        }
   }
}
 return;
}

Ho anche preso il codice del pulsante dagli esempi, .... Come fare in modo che la pressione del pulsante non sia fissa, cioè che dopo l'esecuzione della sua funzione ritorni al suo stato iniziale...

 
new-rena:
Avete bisogno di un pannello di controllo personalizzato che vi permetta di aggiungere qualsiasi numero di indicatori da uno o più?

Non so come renderlo più semplice, se ne ho bisogno o no...

Ci penserò più tardi.