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

 
rriaz #:
Ci sono più punti. Papà dice anche che non conosce la password! ( Domani sarò a casa sua, posso fare degli screenshot o qualcosa del genere. Il software è installato solo sul telefono

Mi dispiace, è più probabile che si tratti di truffatori e bisogna rivolgersi alle forze dell'ordine.

 
Alexey Viktorov #:

Potrebbe essere questo il problema? Prova a cancellare periodicamente la risorsa

ma allora dovreste crearlo dinamicamente.

Cioè, prima cancella la risorsa, poi la ricrea. L'unico problema è che non so come funzionerebbe. O se funzionerà affatto. Dovrò provare...

Non ha funzionato. ResourceCreate crea solo un nuovo file per le immagini, quindi non vede l'indicatore. Ho capito che ha solo bisogno di cancellare la memoria periodicamente. Proverò qualcosa con ZeroMemory

 

Ciao a tutti. Il copione per impostare il modello giusto su tutti i grafici si è rivelato essere la seguente storia.

Ho aperto 8 grafici, tutti diversi su n1 con un modello di scalping qui sotto.

8 GRAFICI APERTI CON PATTERN DI SCALPING

Ho aggiunto uno script al grafico più a sinistra(AUD/USD) per tradurre tutti i grafici in d1 e un modello a medio termine, il codice qui sotto.

string tplName = "FIBOmAGIC СРЕДНЕСРОК.tpl";//ИМЯ ПОДГРУЖАЕМОГО ШАБЛОНА
void OnStart()
 {
  long prevChart = ChartFirst();
  while(prevChart >= 0)
   {
    if(ChartPeriod(prevChart) != PERIOD_D1)// ЕСЛИ ПЕРИОД ГРАФИКА НЕ Д1
      ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_D1); // УСТАНАВЛИВАЕМ ПЕРИОД ГРАФИКА КАК Д1
      ChartApplyTemplate(prevChart, tplName); // И УСТАНАВЛИВАЕМ НА ГРАФИК ШАБЛОН СРЕДНЕСРОКА
    prevChart = ChartNext(prevChart);
   }
 }/******************************************************************/
/*****************************End program****************************/


Ho cambiato il modello intermedio per tutti i grafici tranne il grafico di sinistra al quale ho aggiunto lo script.

Poi ho messo lo script sul grafico di sinistra per tradurre il grafico su n1 e il modello di scalping. Il codice dello script è qui sotto

+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
string tplName = "FIBOmAGIC СКАЛЬПИНГ.tpl";
void OnStart()
 {
  long prevChart = ChartFirst();
  while(prevChart >= 0 && IsStopped())
   {
    if(ChartPeriod(prevChart) != PERIOD_H1)
      ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_H1);
      ChartApplyTemplate(prevChart, tplName);
    prevChart = ChartNext(prevChart);
   }
 }/******************************************************************/
/*****************************End program****************************/

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

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


Sembra che tutto sia a posto, il modello di scalping è applicato a tutti i grafici. Ma c'è un problema: se collego lo stesso script al grafico più a sinistra due volte, 5 grafici su 8 diventano uno strumento aud/usd.

DOPO DUE USI SUCCESSIVI DELLO STESSO SCRIPT, PARTE DEI GRAFICI DIVENTANO DELLO STESSO STRUMENTO

Perché succede e come evitarlo se non con 2 passaggi successivi dello stesso script?

 
DanilaMactep #:

Ciao a tutti. Il copione per impostare il modello giusto su tutti i grafici si è rivelato essere la seguente storia.

Ho aperto 8 grafici, tutti diversi su n1 con un modello di scalping qui sotto.

Ho aggiunto uno script al grafico più a sinistra(AUD/USD) per tradurre tutti i grafici in d1 e un modello a medio termine, il codice qui sotto.


Ho cambiato il modello intermedio per tutti i grafici tranne il grafico di sinistra al quale ho aggiunto lo script.

Poi ho messo lo script sul grafico di sinistra per tradurre il grafico su n1 e il modello di scalping. Il codice dello script è qui sotto


Sembra che tutto sia a posto, il modello di scalping è applicato a tutti i grafici. Ma c'è un problema: se collego lo stesso script al grafico più a sinistra due volte, 5 grafici su 8 diventano uno strumento aud/usd.

Perché succede e come evitarlo se non con 2 passaggi successivi dello stesso script?

Prova così

void OnStart()
 {
  long prevChart = ChartFirst();
  while(prevChart >= 0 && IsStopped())
   {
    //if(ChartPeriod(prevChart) != PERIOD_H1)
      ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_H1);// или PERIOD_D1
      ChartApplyTemplate(prevChart, tplName);
    prevChart = ChartNext(prevChart);
   }
 }/******************************************************************/
/*****************************End program****************************/
 
Alexey Viktorov #:

Prova questo

questa opzione non fa assolutamente nulla - rilascio lo script sul grafico e non succede nulla.
 
DanilaMactep #:
Questa opzione non fa assolutamente nulla - rilascio lo script sul grafico e non succede nulla.

La dichiarazione della variabile

string tplName = "FIBOmAGIC СРЕДНЕСРОК.tpl";//ИМЯ ПОДГРУЖАЕМОГО ШАБЛОНА

è stato per caso cancellato?

 
Alexey Viktorov #:

La dichiarazione della variabile

è stato per caso cancellato?

Se lo facessi, il compilatore urlerebbe variabile non identificata. Ma ora ci riproverò...
 
Alexey Viktorov #:

La dichiarazione della variabile

è stato per caso cancellato?

Ho ricontrollato, la variabile non è stata cancellata. Compilo e lo script non fa nulla.
 
DanilaMactep #:
Questa opzione non fa assolutamente nulla - rilascio lo script sul grafico e non succede nulla.

non funziona per te?

//+------------------------------------------------------------------+
//|                                           ChartApplyTemplate.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//----
sinput string Template           = "ADX";          // Имя шаблона(without '.tpl')
sinput ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Период
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long currChart, prevChart = ChartFirst();
   int i = 0, limit = 100;
   bool errTemplate;
   while(i < limit)
     {
      currChart = ChartNext(prevChart);
      if(TimeFrame != PERIOD_CURRENT)
        {
         ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), TimeFrame);
        }
      errTemplate = ChartApplyTemplate(prevChart, Template + ".tpl");
      if(!errTemplate)
        {
         Print("Error ", ChartSymbol(prevChart), "-> ", GetLastError());
        }
      if(currChart < 0)
         break;
      Print(i, ChartSymbol(currChart), " ID =", currChart);
      prevChart = currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+
 
137 Matrix #:

non funziona per te?

Se non mi sbaglio, è qui che è iniziato tutto - non ha funzionato come ricordo ;-) E non so nemmeno dove mettere il nome del template nel codice. In breve, è un po' un casino...