Puoi dirmi come specificare la condizione per il Tester per determinare il numero di barra del timeframe inferiore all'interno del testo.
Per esempio: il tester inizia con H1, poi determina il tempo di inizio della n-esima candela nel textframe, e il passo successivo è quello di determinare il numero della candela, che è iniziata allo stesso tempo, ma dal timeframe sottostante. iBarShift scrive sempre 0. Il blocco responsabile del calcolo della barra è sotto:
Questo non è il modo di farlo. Nel tester, devi eseguire il gufo sul TF minimo utilizzato in questo gufo ai prezzi di apertura. È meglio far funzionare il gufo sull'aperto su minuti. Ed è meglio prescrivere il TF, esplicitamente!
Voglio fare una MA multi-timeframe, che cambi il suo colore quando il trend cambia. Ho fatto la visualizzazione del prezzo medio da altri timeframe, ma non so come risolvere il problema del cambio di colore.
//+------------------------------------------------------------------+//| MA-MTFC.mq4 |//| Copyright 2012, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2012, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"#property indicator_chart_window#property indicator_buffers 3#property indicator_color1 Yellow#property indicator_color2 Green#property indicator_color3 Red//+------------------------------------------------------------------+externint MA_TF=1440;
externint MA_Period=89;
externint MA_Shift=0;
externint MA_Method=2;
externint MA_AP=0;
//+------------------------------------------------------------------+double Buffer_Yellow[];
double Buffer_Lime[];
double Buffer_Red[];
string Symb;
double MA;
int init()
{
Symb=Symbol();
//---if (MA_TF != 1)
if (MA_TF != 5)
if (MA_TF != 15)
if (MA_TF != 30)
if (MA_TF != 60)
if (MA_TF != 240)
if (MA_TF != 1440)
if (MA_TF != 10080)
if (MA_TF != 43200)
if (MA_TF != 0)
return;
//---SetIndexBuffer(0,Buffer_Yellow);
SetIndexBuffer(1,Buffer_Lime);
SetIndexBuffer(2,Buffer_Red);
//---SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
//---return(0);
}
int deinit()
{
return(0);
}
int start()
{
double MA;
int counted_bars=IndicatorCounted();
int limit=Bars-counted_bars-1;
if (limit>1)
limit=Bars-1;
for(int i=limit-1;i>=0;i--)
{
int pos=iBarShift(NULL, MA_TF, Time[i]);
MA=iMA(Symb,MA_TF,MA_Period,MA_Shift,MA_Method,MA_AP,pos);
Buffer_Yellow[i]=MA;
Buffer_Lime[i]=MA;
Buffer_Red[i]=MA;
if(Buffer_Yellow[i]>Buffer_Yellow[i+1])
{
Buffer_Red[i]=EMPTY_VALUE;
}
elseif(Buffer_Yellow[i]<Buffer_Yellow[i+1])
{
Buffer_Lime[i]=EMPTY_VALUE;
}
else
{
Buffer_Red[i]=EMPTY_VALUE;
Buffer_Lime[i]=EMPTY_VALUE;
}
}
return(0);
}
Roman.: Questo non è il modo di farlo. Nel tester, devi eseguire il gufo sul TF minimo utilizzato in questo gufo ai prezzi di apertura. È meglio far funzionare il gufo sull'aperto su minuti. Ed è meglio prescrivere il TF, esplicitamente!
Roman, sto cercando di fare in modo che l'indicatore venga visualizzato nello Strategy Tester. L'indicatore utilizza tempi inferiori per l'analisi.
FAQ: Sarebbe meglio se poteste mostrare il codice completo, e incollarlo usando il pulsante "SRC".
OK, cercherò di aggiungere il codice a questo post.
In realtà so cosa voglio ottenere alla fine - ho fatto trading per molto tempo, ma ho iniziato a programmare solo dopo aver capito esattamente cosa voglio programmare.
Il mio obiettivo ora è quello di ottenere una freccia verde su ogni chiusura di barra al di sopra di tutti e tre gli slittamenti e una freccia rossa su ogni barra chiusa che ha chiuso sotto tutti e tre e solo per le barre chiuse dopo aver attaccato al grafico. Non sono interessato al bar attuale.
Voglio che queste frecce siano sul grafico mentre l'indicatore è attaccato ad esso e poi rimosso.
Sto disegnando i cursori ora solo per chiarezza e poi li rimuoverò dall'EA.
Ora abbiamo alcuni cursori e frecce, ma appaiono e scompaiono ora e appaiono su barre sbagliate. È questo che non capisco.
Penso di aver confuso qualcosa con j o j+1 nelle linee 106-111 e su quale elemento fissarli.
Grazie se potete darmi un suggerimento.
Per qualche motivo il pulsante SRC non funziona. Proverò a inserire il file come un normale mq4
Buon giorno a questo thread! L'indicatore compila, ma non disegna nulla, e non so cosa c'è di sbagliato, cosa pensare, come cercare un bug. Comunque, il codice funzionava, gli ho aggiunto una funzione con modifiche minime, ma ora non fa più nulla!!!
Forse il problema è da qualche parte nelle dichiarazioni che iniziano con la griglia, o forse sono troppo lento e incasinato... Stava funzionando!
//+------------------------------------------------------------------+//| ИндюкДимонакомпил.mq4 |//| Copyright 2012, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2012, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"#import "user32.dll"int PostMessageA(int hWnd,int Msg,int wParam,string lParam);
#import#define WM_COMMAND 0x0111int delimiter = 0;
#property indicator_chart_windowdouble ВерхняячертаBuffer1[];
double НижняячертаBuffer2[];
double СинняячертаBuffer3[];
double вершина;
double основание_первого_снижения;
double начало;
double вершина_волны_3;
externint T=4,K=200;
int timeframe, start ;
int бар_вершина ;
int бар_основание_первого_снижения;
int бар_начало;
int pereklutsatel;
double naklon,linija2; int P;externint RO=49;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicators//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
int counted_bars=IndicatorCounted();
int limit=Bars-counted_bars-1;
for (int i=limit;i>=0;i--) {
//----for ( int J=0;J<=RO;J++){
//----// for(int i=Bars; i>=0;i--)
i=Bars;
бар_вершина=iHighest( NULL, timeframe, MODE_HIGH, K, start ) ;
вершина =High[ бар_вершина ];
бар_основание_первого_снижения=iLowest( NULL, timeframe, MODE_LOW,NormalizeDouble ( бар_вершина/2,0), start ) ;
основание_первого_снижения=Low[ бар_основание_первого_снижения ];
бар_начало=iLowest( NULL, timeframe, MODE_LOW,NormalizeDouble (бар_вершина*1.5,0), бар_вершина ) ;
начало=Low[ бар_начало ];
if(начало>основание_первого_снижения){naklon=(начало-основание_первого_снижения)/(бар_начало-бар_основание_первого_снижения);
НижняячертаBuffer2[бар_начало]=начало;linija2=начало;for(i=бар_начало-1;i>=0;i--){linija2=linija2-naklon;
НижняячертаBuffer2[i]=linija2;
}
НижняячертаBuffer2[бар_основание_первого_снижения]=основание_первого_снижения;}
for (i=0;i<100;i++){ СинняячертаBuffer3[i]= Open[i];}
for (i=330;i<500;i++){ СинняячертаBuffer3[i]= Open[i];}
ВерхняячертаBuffer1[бар_начало]=начало;
double точка4; int бар_точка4; бар_точка4=iHighest( NULL, timeframe, MODE_HIGH, бар_основание_первого_снижения, 3 ) ;
точка4 =High[ бар_точка4 ];
if(вершина>точка4){naklon=(начало-точка4)/(бар_начало-бар_точка4);
double linija1=начало;for(i=бар_начало-1;i>=0;i--){linija1=linija1-naklon;ВерхняячертаBuffer1[i]=linija1; }}
double vulf=НижняячертаBuffer2[0];
if ( vulf==Ask&&vulf==Bid)vulf=1;
else{ for (vulf=vulf+Point*10; vulf==НижняячертаBuffer2[0];vulf=vulf-Point){
if ( vulf==Ask&&vulf==Bid){vulf=1;}}
for (vulf=vulf-Point*10; vulf==НижняячертаBuffer2[0];vulf=vulf+Point){
if ( vulf==Ask&&vulf==Bid)vulf=1;}
}
if (vulf==1){Comment (" Есть вульв!!! " , " timeframe " , timeframe);return(0); }
if (vulf!=1&&pereklutsatel==1) {
if(delimiter<3){delimiter++;Comment(delimiter);return(0);}
delimiter=0;
fChangePeriod();P++;
} } }
//----return(0);
}
//+------------------------------------------------------------------+void fChangePeriod(){int ii,hwd = WindowHandle(Symbol(),Period());
switch(Period()){
casePERIOD_W1 : ii = 33134; break; //PERIOD_D1;casePERIOD_D1 : ii = 33136; break; //PERIOD_H4;casePERIOD_H4 : ii = 33135; break; //PERIOD_H1;casePERIOD_H1 : ii = 33140; break; //PERIOD_M30;casePERIOD_M30 : ii = 33139; break; //PERIOD_M15;casePERIOD_M15 : ii = 33138; break; //PERIOD_M5;casePERIOD_M5 : ii = 33137; break; //PERIOD_M1;casePERIOD_M1 : ii = 33141; break; //PERIOD_W1;
}
PostMessageA(hwd, WM_COMMAND, ii, 0);
return;
}
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Puoi dirmi come specificare la condizione per il Tester per determinare il numero di barra del timeframe inferiore all'interno del testo.
Per esempio: il tester inizia con H1, poi determina il tempo di inizio della n-esima candela nel textframe, e il passo successivo è quello di determinare il numero della candela, che è iniziata allo stesso tempo, ma dal timeframe sottostante. iBarShift scrive sempre 0. Il blocco responsabile del calcolo della barra è sotto:
Yuri, puoi suggerire qualcosa sulla mia domanda di cui sopra?
Controllo dello script
Risultato
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 1 TimeOpen: 00:00 Bar: 1057
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 5 TimeOpen: 00:00 Bar: 212
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 15 TimeOpen: 00:00 Bar: 70
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 30 TimeOpen: 00:00 Bar: 35
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 60 TimeOpen: 00:00 Bar: 17
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 240 TimeOpen: 00:00 Bar: 4
Un consiglio, per favore:
Voglio fare una MA multi-timeframe, che cambi il suo colore quando il trend cambia. Ho fatto la visualizzazione del prezzo medio da altri timeframe, ma non so come risolvere il problema del cambio di colore.
Questo non è il modo di farlo. Nel tester, devi eseguire il gufo sul TF minimo utilizzato in questo gufo ai prezzi di apertura. È meglio far funzionare il gufo sull'aperto su minuti. Ed è meglio prescrivere il TF, esplicitamente!
Sarebbe meglio se poteste mostrare il codice completo, e incollarlo usando il pulsante "SRC".
OK, cercherò di aggiungere il codice a questo post.
In realtà so cosa voglio ottenere alla fine - ho fatto trading per molto tempo, ma ho iniziato a programmare solo dopo aver capito esattamente cosa voglio programmare.
Il mio obiettivo ora è quello di ottenere una freccia verde su ogni chiusura di barra al di sopra di tutti e tre gli slittamenti e una freccia rossa su ogni barra chiusa che ha chiuso sotto tutti e tre e solo per le barre chiuse dopo aver attaccato al grafico. Non sono interessato al bar attuale.
Voglio che queste frecce siano sul grafico mentre l'indicatore è attaccato ad esso e poi rimosso.
Sto disegnando i cursori ora solo per chiarezza e poi li rimuoverò dall'EA.
Ora abbiamo alcuni cursori e frecce, ma appaiono e scompaiono ora e appaiono su barre sbagliate. È questo che non capisco.
Penso di aver confuso qualcosa con j o j+1 nelle linee 106-111 e su quale elemento fissarli.
Grazie se potete darmi un suggerimento.
Per qualche motivo il pulsante SRC non funziona. Proverò a inserire il file come un normale mq4
Controllo dello script
Ho deciso di modificare il tuo codice e fare un controllo per soddisfare i miei scopi (l'ho eseguito su H1).
Ed eccolo qui
Ho deciso di modificare il tuo codice e fare un controllo per soddisfare i miei scopi (l'ho eseguito su H1).
E questo è quello che ho ottenuto
Si controlla il tester aprendo i prezzi. Quindi Roman ha già scritto come farlo.
Prezzo di chiusura della barra precedente Close[1]
Buon giorno a questo thread! L'indicatore compila, ma non disegna nulla, e non so cosa c'è di sbagliato, cosa pensare, come cercare un bug. Comunque, il codice funzionava, gli ho aggiunto una funzione con modifiche minime, ma ora non fa più nulla!!!
Forse il problema è da qualche parte nelle dichiarazioni che iniziano con la griglia, o forse sono troppo lento e incasinato... Stava funzionando!