Ho provato tutto quello che hai suggerito, girato e rigirato, ma continua a dipingere le linee in un solo colore in MT5. E in MT4 dipinge le linee normalmente, e senza alcun ritardo.
Credo di non aver provato tutto.
Alexey Viktorov:
È molto probabile che dopo aver rinominato un oggetto non sia ancora disponibile per il riferimento ad esso. Puoi provare a mettere ChartRedraw dopo aver rinominato. Se non aiuta, dovremo costruire la sequenza in qualche altro modo.
ps; Un'altra opzione: prima ridipingere con il nome sparam e poi rinominarlo.
Per qualche motivo, l'evento CHARTEVENT_OBJECT_CREATE conta immediatamente dopo che il topo tocca il grafico, non dopo aver finito la creazione dell'oggetto. E i prezzi delle diverse estremità del fusibile risultano essere gli stessi. Quindi dovete ridipingere dopo che l'oggetto è stato creato.
E un'altra osservazione: dipingete i livelli o la linea principale dello stoppino?
Ecco tre varianti:
Uno.
bool endCreate;
string newName;
/*******************Expert initialization function*******************/intOnInit()
{
ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
return(INIT_SUCCEEDED);
}/******************************************************************//************************Expert tick function************************/voidOnTick()
{
if(endCreate)
{
double Level_0= ObjectGetDouble(0, newName, OBJPROP_PRICE, 0);
double Level_1= ObjectGetDouble(0, newName, OBJPROP_PRICE, 1);
if(Level_0 > Level_1)
ObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrDeepSkyBlue);
elseObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrYellow);
endCreate = false;
}
}/******************************************************************//***********************OnChartEvent function************************/voidOnChartEvent(constint id, // идентификатор событияconstlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
if(id == CHARTEVENT_OBJECT_CREATE)
{
ulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); // получим время создания объекта
newName = "Fibo "+string(timeCreate); // сформируем новое имя объектаObjectSetString(0, sparam, OBJPROP_NAME, newName); // переименуем объект
endCreate = true;
}
}/******************************************************************/
Secondo.
/*******************Expert initialization function*******************/intOnInit()
{
ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
return(INIT_SUCCEEDED);
}/******************************************************************//************************Expert tick function************************/voidOnTick()
{
}/******************************************************************//***********************OnChartEvent function************************/voidOnChartEvent(constint id, // идентификатор событияconstlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
string newName;
if(id == CHARTEVENT_OBJECT_CREATE)
{
ulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); // получим время создания объекта
newName = "Fibo "+string(timeCreate); // сформируем новое имя объектаObjectSetString(0, sparam, OBJPROP_NAME, newName); // переименуем объект
}
if(id == CHARTEVENT_OBJECT_DRAG)
{
double Level_0= ObjectGetDouble(0, newName, OBJPROP_PRICE, 0);
double Level_1= ObjectGetDouble(0, newName, OBJPROP_PRICE, 1);
if(Level_0 > Level_1)
ObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrDeepSkyBlue);
elseObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrYellow);
}
}/******************************************************************/
Tre.
/*******************Expert initialization function*******************/intOnInit()
{
ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
return(INIT_SUCCEEDED);
}/******************************************************************//************************Expert tick function************************/voidOnTick()
{
}/******************************************************************//***********************OnChartEvent function************************/voidOnChartEvent(constint id, // идентификатор событияconstlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
if(id == CHARTEVENT_OBJECT_DRAG)
{
ulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); // получим время создания объектаstring newName = "Fibo "+string(timeCreate); // сформируем новое имя объектаObjectSetString(0, sparam, OBJPROP_NAME, newName); // переименуем объектdouble Level_0= ObjectGetDouble(0, newName, OBJPROP_PRICE, 0);
double Level_1= ObjectGetDouble(0, newName, OBJPROP_PRICE, 1);
if(Level_0 > Level_1)
ObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrDeepSkyBlue);
elseObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrYellow);
ChartRedraw();
}
}/******************************************************************/
//--- найдем максимальное и минимальное значение графикаdouble max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- определим шаг изменения цены и заполним массивdouble step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- определим точки для рисования линииint d1=InpDate1*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
//--- количество видимых баров в окне графикаint bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- размер массива priceint accuracy=1000;
//--- массивы для хранения значений дат и цен, которые будут использованы//--- для установки и изменения координат точек привязки линииdatetime date[];
double price[];
//--- выделение памятиArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- заполним массив датResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Не удалось скопировать значения времени! Код ошибки = ",GetLastError());
return;
}
//--- заполним массив цен//--- найдем максимальное и минимальное значение графикаdouble max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- определим шаг изменения цены и заполним массивdouble step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- определим точки для рисования линииint d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
//--- создадим линию трендаif(!TrendCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],InpColor,InpStyle,
InpWidth,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
Le linee di tendenza sono disegnate in 2 punti, sono o i dati del prezzo o i dati di un altro indicatore, l'esempio del disegno per frattali, che, tra l'altro, conoscete già)
cm BASKET Советник управляющий счетом. Показывает какие пары инструментов сейчас торгуются на данном счете. Показывает прибыль полученную по каждой паре за определенное время. Помогает переключаться между множества открытых окон... Virtual Trailing Stop 2
Lelinee di tendenza sono disegnate in 2 punti, si tratta di dati di prezzo o di dati di un altro indicatore, un esempio di disegno per frattali, che tra l'altro vi è familiare)
Per qualche ragione, l'evento CHARTEVENT_OBJECT_CREATE conta immediatamente dopo che il topo tocca il grafico, non dopo la fine della creazione dell'oggetto. E i prezzi delle diverse estremità del fusibile risultano essere gli stessi. Quindi, dobbiamo ridipingerlo dopo la creazione dell'oggetto.
Come l'hai determinato, in modo logico?
E un'altra osservazione: lei dipinge i livelli o la linea principale della fibra?
Ho provato a ridisegnare le linee di tendenza in diverse varianti))))
Ecco tre varianti:
Uno.
Secondo.
Il terzo.
Grazie mille per questi!!! Potrei imparare a pensare logicamente, basandomi sui tuoi esempi))))
Da quanto tempo sei nel trading? Io lo faccio da 12 anni ormai)))
Grazie mille per le opzioni!!! Userò i vostri esempi e imparerò a pensare logicamente))))
Voglio dire, da quanto tempo fai trading? Io lo faccio da 12 anni ormai).
Non sono sempre così "gentile". Non sono sempre così "gentile", solo durante gli attacchi... Quindi non c'è molto da imparare dai miei esempi. Sono nel commercio da quasi altrettanto tempo.
Non sono sempre così "gentile". Solo durante gli attacchi... Quindi non c'è molto da imparare dai miei esempi. Sono più o meno lo stesso nel trading.
Non lo so, sto imparando meglio i metodi e le tecniche di programmazione tramite esempi. Vorrei che MQL5 avesse un tutorial come MQL4 dove il robot è spiegato passo dopo passo usando i file inclusi.
Quindi conosci già l'essenza delle fluttuazioni del mercato? Mi sembra che ho già imparato)))) ho solo bisogno di chiederlo, perché posso lavorare con esso per un certo tempo, e poi scatto e creo un casino)))))) Ma ora capisco qualsiasi asset)))) mi piace soprattutto lo S&P, è tecnico e dinamico))
Bene, combinandoli, si possono creare molti oggetti diversi in un solo indicatore)
Volevo farlo in questo modo, ci ho provato per una settimana, ma non funzionava.
- Sembra essere migliore nel secondo indicatore - non puoi vedere oltre i punti e le linee stesse, ci sono solo i punti e i livelli che servono per determinare le entrate nel mercato.
----------------
questi due indicatori sono uno (questa è la mia bozza - non ho cambiato i nomi dei 4 indicatori in essa)
Ho provato tutto quello che hai suggerito, girato e rigirato, ma continua a dipingere le linee in un solo colore in MT5. E in MT4 dipinge le linee normalmente, e senza alcun ritardo.
Credo di non aver provato tutto.
È molto probabile che dopo aver rinominato un oggetto non sia ancora disponibile per il riferimento ad esso. Puoi provare a mettere ChartRedraw dopo aver rinominato. Se non aiuta, dovremo costruire la sequenza in qualche altro modo.
ps; Un'altra opzione: prima ridipingere con il nome sparam e poi rinominarlo.Per qualche motivo, l'evento CHARTEVENT_OBJECT_CREATE conta immediatamente dopo che il topo tocca il grafico, non dopo aver finito la creazione dell'oggetto. E i prezzi delle diverse estremità del fusibile risultano essere gli stessi. Quindi dovete ridipingere dopo che l'oggetto è stato creato.
E un'altra osservazione: dipingete i livelli o la linea principale dello stoppino?
Ecco tre varianti:
Uno.
Secondo.
Tre.
come organizzare un algoritmo in un indicatore per prendere punti e trasferirli in un altro buffer.
- Per disegnare le linee di tendenza. (come nella foto)
-----------------------------------------
Ho provato di tutto con l'istinto, sono disegnati ma in posti strani.
-----------------------------------------------------------------------------------------------------
Ho allegato l'indicatore, funziona, ma non posso regolare queste linee.
Non ci riesco, forse qualcuno può indirizzarmi agli articoli sui punti vincolanti della linea di tendenza.
-- Non posso disegnarli, non è chiaro in quali punti.
---------------------------------------------------------
qualcosa del genere, forse?
-------------------
Sono sulla strada giusta?
Forse qualcuno può indirizzarmi verso articoli sui punti di trendline.
-- Tutto quello che posso fare ora è disegnarli, non è chiaro in quali punti.
---------------------------------------------------------
qualcosa del genere, forse?
-------------------
Sono sulla strada giusta?
Le linee di tendenza sono disegnate in 2 punti, sono o i dati del prezzo o i dati di un altro indicatore, l'esempio del disegno per frattali, che, tra l'altro, conoscete già)
https://www.mql5.com/ru/code/29210
Lelinee di tendenza sono disegnate in 2 punti, si tratta di dati di prezzo o di dati di un altro indicatore, un esempio di disegno per frattali, che tra l'altro vi è familiare)
https://www.mql5.com/ru/code/29210
Volevo farlo con un solo indicatore, ma non ha funzionato.
- Ho dovuto farlo con due indicatori.
Questo è quello che ho fatto.
---------------------------
Ho dimenticato di dire grazie! - Grazie!!!
Volevo farlo in un Indicatore, ma non ha funzionato, ma l'ho fatto in questo, che tu hai suggerito.
- quindi ho dovuto farlo con due indicatori.
Ecco come funzionava.
---------------------------
Ho dimenticato di dire grazie! - Grazie!!!
Bene combinarli, si possono creare molti oggetti diversi in un solo indicatore)
A quanto pare non ho provato tutto.
Per qualche ragione, l'evento CHARTEVENT_OBJECT_CREATE conta immediatamente dopo che il topo tocca il grafico, non dopo la fine della creazione dell'oggetto. E i prezzi delle diverse estremità del fusibile risultano essere gli stessi. Quindi, dobbiamo ridipingerlo dopo la creazione dell'oggetto.
Come l'hai determinato, in modo logico?
E un'altra osservazione: lei dipinge i livelli o la linea principale della fibra?
Ho provato a ridisegnare le linee di tendenza in diverse varianti))))
Ecco tre varianti:
Uno.
Secondo.
Il terzo.
Grazie mille per questi!!! Potrei imparare a pensare logicamente, basandomi sui tuoi esempi))))
Da quanto tempo sei nel trading? Io lo faccio da 12 anni ormai)))
Grazie mille per le opzioni!!! Userò i vostri esempi e imparerò a pensare logicamente))))
Voglio dire, da quanto tempo fai trading? Io lo faccio da 12 anni ormai).
Non sono sempre così "gentile". Non sono sempre così "gentile", solo durante gli attacchi... Quindi non c'è molto da imparare dai miei esempi. Sono nel commercio da quasi altrettanto tempo.
Non sono sempre così "gentile". Solo durante gli attacchi... Quindi non c'è molto da imparare dai miei esempi. Sono più o meno lo stesso nel trading.
Non lo so, sto imparando meglio i metodi e le tecniche di programmazione tramite esempi. Vorrei che MQL5 avesse un tutorial come MQL4 dove il robot è spiegato passo dopo passo usando i file inclusi.
Sono nel commercio da quasi altrettanto tempo.
Quindi conosci già l'essenza delle fluttuazioni del mercato? Mi sembra che ho già imparato)))) ho solo bisogno di chiederlo, perché posso lavorare con esso per un certo tempo, e poi scatto e creo un casino)))))) Ma ora capisco qualsiasi asset)))) mi piace soprattutto lo S&P, è tecnico e dinamico))
Bene, combinandoli, si possono creare molti oggetti diversi in un solo indicatore)
Volevo farlo in questo modo, ci ho provato per una settimana, ma non funzionava.
- Sembra essere migliore nel secondo indicatore - non puoi vedere oltre i punti e le linee stesse, ci sono solo i punti e i livelli che servono per determinare le entrate nel mercato.
----------------
questi due indicatori sono uno (questa è la mia bozza - non ho cambiato i nomi dei 4 indicatori in essa)