[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 130
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
ma c'è un altro codice nell'EA:
Ma c'è un altro codice nell'EA:
mettete per esempio Print("close by CloseMarket ", j); in questa funzione e qualcosa di simile in quella precedente che avete postato. eseguitela e guardate nei log per vedere quale di queste stampe appare per analizzare quale si innesca. poi allo stesso modo registrate i valori delle variabili controllate nelle condizioni di esecuzione della chiusura e trovate le ragioni del loro innesco...
E cosa vi impedisce di mettere l'EA sulla finestra esatta in cui volete disegnare?
Il mio EA funziona meglio su M1, perché è meglio a M1 e apre 1 trade all'apertura della barra M5, inoltre ricarica se le condizioni lo permettono. Uso anche indicatori su M5 e altri TF. Ed è meglio testare su M1 all'apertura della barra, mentre su altri TF con tutti i tick prova male.
Non disegno, vedo solo i risultati dei calcoli fatti dall'EA e visualizzati in somments per assicurarmi che tutto sia in ordine. Grazie per l'attenzione e l'aiuto!
Il mio EA funziona meglio su M1, in quanto pesca meglio su M1 e apre 1 trade all'apertura della barra M5, inoltre ricarica se le condizioni lo permettono. E uso gli indicatori su M5 e altri TF. Ed è meglio testare su M1 all'apertura della barra, mentre su altri TF con tutti i tick prova male.
Non disegno, vedo solo i risultati dei calcoli fatti dall'EA e visualizzati in somments per assicurarmi che tutto sia in ordine. Grazie per l'attenzione e l'aiuto!
Sia su M1 che su M5 i tick sono presi dalla stessa fonte, e si può usare qualsiasi timeframe da qualsiasi grafico, basta sostituire Close[] con iClose, ecc. Per testarlo meglio, devi fare dei file fxt migliori dai tick, qui c'è un esempio, ma in generale google, c'è un sacco di informazioni su questo argomento.
La pratica ha dimostrato che è meglio aprire su Op e testare anche meglio, che su tick. Non sono affatto appassionato di zecche. Quando la depo lo permetterà, potrei passare a un TF più alto, che mostrerà risultati migliori in un giorno. Non lascio accordi per la notte per dormire bene. Grazie ancora!
Print("Close by CloseMarket ", j); in questa funzione e qualcosa di simile in quella precedente che hai postato. Eseguila e cerca nel log i risultati di queste stampanti per analizzare quale si innesca. Poi allo stesso modo registra i valori delle variabili controllate nelle condizioni di chiusura e trova le ragioni del loro innesco...
La pratica ha dimostrato che è meglio aprire su Orep e testare meglio, anche, che sulle zecche. E non mi piacciono affatto le zecche. Quando la depo lo permetterà, potrei passare a un TF più alto, che mostrerà risultati migliori entro un giorno. Non lascio accordi per la notte per dormire bene. Grazie ancora!
Caro signor programmatore! Non riesco a disegnare una linea orizzontale dal valore numerico massimo della finestra dell'indicatore MACD.
Codice
#proprietà indicator_separate_window
#proprietà indicator_buffers 3
#proprietà indicator_color1 Lime
#property indicator_color2 Red
//--- buffer
doppio ExtMapBuffer1[];
doppio ExtMapBuffer2[];
doppio topBuffer[];
bool initFinished=false; // aggiungere una variabile che ricordi lo stato di inizializzazione.
// false - l'inizializzazione non è ancora avvenuta.
// true - è stato inizializzato
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'indicatore personalizzato
//+------------------------------------------------------------------+
int init()
{
//---- indicatori
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,topBuffer);
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione dell'indicatore personalizzata
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di iterazione dell'indicatore personalizzata
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),
limite;
se(barre contate>0)
barre contate..;
limit=Bars-counted_bars;
//----
for(int i=0;i<limit;i++)
{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);
se(initFinished==false)
{
IndicatoreNomeCorto("MACD_max-min");
int win_idx=WindowFind("MACD_max-min");
// trova il numero della nostra sottofinestra dell'indicatore
se(win_idx<0)
{
// se il numero di sottofinestra è -1, c'è un errore
Stampa("Finestra non trovata");
ritorno(0);
}
double top=WindowPriceMax(win_idx);
/trova il valore massimo della scala verticale della sottofinestra specificata del grafico corrente
ObjectCreate("max",OBJ_HLINE,win_idx,0,top);
// disegna una linea orizzontale in una sottofinestra del nostro indicatore
ObjectSet("max",OBJPROP_COLOR,Yellow);
ObjectSet("max",OBJPROP_WIDTH,0);
WindowRedraw();
// ridisegna la finestra per vedere la linea
initFinished=true;
// il disegno è finito
}
topBuffer[i]=top;
}
//----
ritorno(0);
}
//+------------------------------------------------------------------+
Sembra che nella linea
double top=WindowPriceMax(win_idx);
la variabile superiore non ottiene alcun valore e nel
ObjectCreate("max",OBJ_HLINE,win_idx,0,top);
al suo posto (cioè al posto della variabile top) ottengo automaticamente 0 (zero). Quindi, ottengo una linea zero nella finestra richiesta e nel colore richiesto. topBuffer[] è anche vuoto. Se in questa linea al posto della variabile top metto un valore numerico, la linea prende questo valore fisso.
IndicatorShortName dovrebbe essere spostato in init()