[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 249

 
FAQ:


Ecco fatto:

errore tipi incompatibili

 
Leo59:

Caro granit77! Se non vi dispiace, per favore fate le correzioni direttamente nel codice, se qualcosa è sbagliato. Sarà chiaro e comprensibile.

Esempio. Degli otto buffer di indicatori disponibili, sette sono utilizzati per visualizzare le linee nella finestra dell'indicatore, l'ottavo è utilizzato per i calcoli, senza essere visualizzato nella finestra dell'indicatore.
Se non ci sono abbastanza buffer di indicatori, i calcoli possono essere eseguiti in array convenzionali.

#property indicator_buffers 7 double ind_buffer1[]; double ind_buffer2[]; double ind_buffer3[]; double ind_buffer4[]; double ind_buffer5[]; double ind_buffer6[]; double ind_buffer7[]; double ind_buffer8[];//l'ottavo buffer è usato per ulteriori calcoli //double ind_buffer9[];   //non c'è un nono buffer nell'indicatore; questo array non ha dove andare int init() { IndicatorBuffers(8); SetIndexBuffer(0,ind_buffer1); SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3); SetIndexBuffer(3,ind_buffer4); SetIndexBuffer(4,ind_buffer5); SetIndexBuffer(5,ind_buffer6); SetIndexBuffer(6,ind_buffer7); SetIndexBuffer(7,ind_buffer8); //ind_buffer1...ind_buffer7 disegna sette linee //vengono visualizzate nella finestra dell'indicatore secondo #proprietà indicator_buffers 7 //ind_buffer8 non viene visualizzato nella finestra, ma è disponibile per partecipare ai calcoli return(0); }
 
granit77:
Esempio. Sette degli otto buffer dell'indicatore sono utilizzati per visualizzare le linee nella finestra dell'indicatore, l'ottavo buffer è utilizzato per i calcoli, ma non sarà visualizzato nella finestra dell'indicatore.
Se non ci sono abbastanza buffer di indicatori, i calcoli possono essere fatti in array normali.



Grazie! Questo è comprensibile.

Non ne capisco un altro. Non so perché l'array che partecipa ai calcoli, ma non viene visualizzato nella finestra dell'indicatore, debba essere identificato come SetIndexBuffer. E se abbiamo bisogno di 10 array per i calcoli e 8 per la visualizzazione (18 array in totale), come dichiarare e identificare questi 10 correttamente? Voglio che abbiano le stesse proprietà, come gli array attaccati ai buffer degli indicatori, tranne che non sono disegnati.

 
Zhunko:

Non è necessario rinominarlo se non funziona. Il che è strano. Potete aprirlo dal menu contestuale selezionando WinRar. Oppure aprire WinRar, poi dal menu "File" voce "Open Archive" trovare l'archivio e aprirlo.

Ho detto sopra che l'estensione è necessaria solo per l'associazione automatica del file.

Hai abilitato la visibilità dell'estensione? Screenshot o video qui se non funziona.


Grazie per le istruzioni dettagliate. Ho scaricato questo WinRar, apparentemente non c'era e l'archivio si è aperto!
 
Non mi sembra che la funzione funzioni. È vero, i tick non funzionano ora, ma almeno l'inizio dovrebbe funzionare quando si unisce il grafico, giusto? Beh, almeno compila!!! Sto provando questo.
//+------------------------------------------------------------------+
//|                                                  таймфрейммм.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <ServicesMT4.mqh>
void start()
  {
   int hwndChart = WindowHandle(Symbol(),Period());
   while (!IsStopped())
    {
     for (int i = 0; i < 9; i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep(4000);
      }
    }
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
 
PR //Profitto
UB //Perdita.
Pk //Variabile che prende valori di acquisto
Pr //Variabile che prende valori di vendita
ADR //Variabile che prende i valori dello script

//Condizione di profitto
if(PR==Pk) //Se profitto sull'acquisto
ADR=1; //Set script 1
else //Se profitto sulla vendita
ADR=2; //Set script 2

//Condizione di vendita
if(UB==Pk) //se una perdita all'acquisto
ADR=2; //imposta lo script 2
else //Se una perdita sulla vendita

ADR=1; //Set script 1

Come posso migliorare questo per il trading? Ho bisogno di un EA per monitorare quale ordine ha chiuso (comprare o vendere), e come ha chiuso in profitto o in perdita. Dopo tale analisi l'EA eseguirà 1 o 2 script.

 
Quali sono i nomi delle variabili take profit e stop loss? E come faccio a specificare l'indirizzo dello script da eseguire?
 
Dimka-novitsek:
Non vedo questa funzione funzionare, sapete. È vero, i tick non si verificano ora, ma almeno l'inizio dovrebbe funzionare quando ci si collega al grafico, giusto? Beh, almeno compila!!! Provando questo

Non ci sono zecche. L'avvio non viene attivato. Può essere compilato come script. Ma dovrete specificare il descrittore del grafico adiacente, che sarà aggiornato.

O come questo:

#include <ServicesMT4.mqh>
int hwndChart = NULL;
void init()
 {
  hwndChart = WindowHandle(Symbol(),Period()); // Получаем системный дескриптор графика.
  ServiceRefreshChart(hwndChart, 1000); // Запускаем обновление графика каждую 1 секунду.
 }

void start()
 {
  ServiceStopRefreshChart(hwndChart); // Останавливаем обновление. Больше не требуется.
  while (!IsStopped())
   {
    for (int i = 0; i < 9; i++)
     {
      ServiceSetTimeframeByNumber(hwndChart, i);
      Sleep(4000);
     }
   }
 }

Ma probabilmente non funzionerà per voi. Sembra che la funzione ServiceRefreshChart () non sia disponibile per tutti.

Potete provarlo nell'indicatore. Si aggiorna 2 volte quando si unisce al grafico e cambia TF.

 
Grazie!!!!!!
 
Compila, ma non esegue.
Motivazione: