barabashkakvn: Se conoscete l'ora e le date dei vostri punti, dovete solo chiamarebool TrendCreate()
Grazie per il consiglio. Si è rivelato più facile di così.
L'ho fatto in questo modo:
#property strict#property script_show_inputs//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
long chart_ID=0; // ID графикаstring name="TrendLine"; // имя линииint sub_window=0; // номер подокна//--- сбросим значение ошибкиResetLastError();
//--- создадим трендовую линию по заданным координатамif(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,Time[41],1.0656,Time[65],1.0494))
{
Print(__FUNCTION__,
": не удалось создать линию тренда! Код ошибки = ",GetLastError());
return;
}
}
//+------------------------------------------------------------------+
P.S. Una cosa che non riesco a capire è perché i numeri nell'esempio sono scelti così:
Da essi, la linea di tendenza è messa da qualche parte nel mezzo della gamma.
Quindi, è solo uno script il cui compito principale è dimostrare come creare e lavorare con l'oggetto OBJ_TREND. Le cifre sono state prese per chiarezza.
forexman77: Ora il prossimo problema da risolvere è come continuare la linea a destra e ottenere il valore della linea nell'EA?
Il codice dello script ha tutto:
//+------------------------------------------------------------------+//| Создает линию тренда по заданным координатам |//+------------------------------------------------------------------+bool TrendCreate(constlong chart_ID=0, // ID графика
.
.
.
//--- включим (true) или отключим (false) режим продолжения отображения линии влевоObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправоObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
.
.
.
1.Quando viene chiamato dal tester le transazioni vengono aperte. Se eseguo l'ottimizzazione ci sono zeri ovunque. Quando lancio qualsiasi ottimizzazione, le offerte sono lì. Cosa fare?
2. Come posso fare in modo che una riga venga salvata se si è verificata una transazione (su ogni transazione), e se non lo è, venga cancellata?
long chart_ID=0; // ID графикаstring name="TrendLine"; // имя линииint sub_window=0; // номер подокнаObjectDelete(chart_ID,name);
//--- сбросим значение ошибкиResetLastError();
//--- создадим трендовую линию по заданным координатамif(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,Time[minbar],Low[minbar],Time[IPMIN],Low[IPMIN]))
{
Print(__FUNCTION__,
": не удалось создать линию тренда! Код ошибки = ",GetLastError());
return(0);
}
ObjectSet("TrendLine",OBJPROP_TIME1,Time[minbar]);
ObjectSet("TrendLine",OBJPROP_PRICE1,Low[minbar]);
ObjectSet("TrendLine",OBJPROP_TIME2,Time[IPMIN]);
ObjectSet("TrendLine",OBJPROP_PRICE2,Low[IPMIN]);
if (IPMIN!=0){ double uroven= ObjectGetValueByTime(chart_ID,name,Time[1],sub_window);}
}
Print("uroven=",uroven);
if (Time[0] > b && Close[1] < uroven){Opn_B=true;}
barabashkakvn: Dovete controllare voi stessi le transazioni. Ma perché ogni trade abbia la sua linea, dovete dare a ogni linea un nome unico quando la create.
Durante il test di visualizzazione, l'Expert Advisor interagisce con il grafico reale. Nel test normale, senza visualizzazione, l'Expert Advisor opera con un grafico "virtuale" che non viene reso; in questo caso, sono possibili alcune sottigliezze. Gli oggetti grafici non sono supportati quando il tester è in modalità di ottimizzazione.
Due giorni per studiare, e si scopre che è impossibile eseguire l'ottimizzazione.
Mi chiedo se creo un indicatore. Sarò in grado di ottenere il valore della linea nel mio Expert Advisor attraverso di esso?
Chi deve dire cosa? Forse, chi ha già studiato questa domanda?
Ma è ancora più facile risolvere tutto attraverso l'uso di un indicatore. I calcoli vengono eseguiti nell'indicatore e i loro risultati vengono visualizzati attraverso i buffer dell'indicatore.
C'è un'altra alternativa. Create variabili globali con parametri della linea invece di linee, ma poi la funzione GetValueByShift() non funzionerà, dovete scrivere il suo analogo.
Se conoscete l'ora e le date dei vostri punti, dovete solo chiamarebool TrendCreate()
Grazie per il consiglio. Si è rivelato più facile di così.
L'ho fatto in questo modo:
P.S. Una cosa che non riesco a capire è perché i numeri nell'esempio sono scelti così:
Da loro la linea di tendenza va da qualche parte nel mezzo della gamma.
...
Da essi, la linea di tendenza è messa da qualche parte nel mezzo della gamma.
Ora il prossimo problema da risolvere è come continuare la linea a destra e ottenere il valore della linea nell'EA?
Il codice dello script ha tutto:
Il codice dello script ha tutto:
1.Quando viene chiamato dal tester le transazioni vengono aperte. Se eseguo l'ottimizzazione ci sono zeri ovunque. Quando lancio qualsiasi ottimizzazione, le offerte sono lì. Cosa fare?
2. Come posso fare in modo che una riga venga salvata se si è verificata una transazione (su ogni transazione), e se non lo è, venga cancellata?
Dovete controllare voi stessi le transazioni. Ma perché ogni trade abbia la sua linea, dovete dare a ogni linea un nome unico quando la create.
Come? Posso fare un esempio?
Oggetti grafici durante il test
Durante il test di visualizzazione, l'Expert Advisor interagisce con il grafico reale. Nel test normale, senza visualizzazione, l'Expert Advisor opera con un grafico "virtuale" che non viene reso; in questo caso, sono possibili alcune sottigliezze. Gli oggetti grafici non sono supportati quando il tester è in modalità di ottimizzazione.
Due giorni per studiare, e si scopre che è impossibile eseguire l'ottimizzazione.
Mi chiedo se creo un indicatore. Sarò in grado di ottenere il valore della linea nel mio Expert Advisor attraverso di esso?
Chi deve dire cosa? Forse, chi ha già studiato questa domanda?
...
Mi chiedo se posso fare un indicatore? Sarò in grado di ottenere il valore della linea nell'EA attraverso di essa?
...
Se l'indicatore crea oggetti grafici e poi ottiene i loro parametri, no.
Ma è ancora più facile risolvere tutto attraverso l'uso di un indicatore. I calcoli vengono eseguiti nell'indicatore e i loro risultati vengono visualizzati attraverso i buffer dell'indicatore.
C'è un'altra alternativa. Create variabili globali con parametri della linea invece di linee, ma poi la funzione GetValueByShift() non funzionerà, dovete scrivere il suo analogo.