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
L'analisi dello spettro singolare (SSA) ricalcola, a meno che non si tratti di una versione end-point. Dato che quell'indicatore usa l'SSA "regolare", anche lui ricalcola
Temo che dal codice non riesco a vedere quale sia la tua intenzione
Se stai cercando di avere medie con livelli, usa quello che ho postato come modello
Ciao,
sì, userò la tua ma avanzata con livelli, (ha più prezzi, ecc... ma colorata, ecc...)
ma ho cercato di crearne una da solo per capire come creare un indicatore personalizzato,
la mia idea è di creare lo stesso componente (fondamentalmente un MA con 2 livelli..)
Uso una MA centrale, e altre 2 MA tracciate con linee di punti per dare lo stesso effetto dei livelli...
per ogni livello popolo il buffer usando su calcola evento... come mi hai detto tu, ma qualcosa non va ;-(
le 2 MA che simulano il livello saranno spostate verticalmente... ma non funziona
Ciao,
sì, userò la vostra ma avanzata con livelli, (ha più prezzi, ecc. ma colorata, ecc.)
ma ho provato a crearne una da solo per capire come creare un indicatore personalizzato,
la mia idea è di creare lo stesso componente (fondamentalmente un MA con 2 livelli...)
Uso una MA centrale, e altre 2 MA tracciate con linee di punti per dare lo stesso effetto dei livelli...
per ogni livello popolo il buffer usando su calcola evento... come mi hai detto tu, ma qualcosa non va ;-(
le 2 MA che simulano il livello saranno spostate verticalmente... ma non funziona
Sì, è quello che intendevo
La cosa è semplice come diventa:
Non c'è bisogno di cambiare nulla nel calcolo delle medie o altro: solo una semplice aggiunta o sottrazione dal buffer centrale (ma)
double pipLevel1 = -10;
double pipLevel2 = 10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,ExtLineBuffer,INDICATOR_DATA); //MA Buffer
SetIndexBuffer(1,ExtLv1Buffer,INDICATOR_DATA); //MA lv1 Buffer
SetIndexBuffer(2,ExtLv2Buffer,INDICATOR_DATA); //MA lv2 Buffer
//--- set accuracy
IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//--- sets first bar from what index will be drawn
PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID); //MA Style
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_DOT); //MA lvl1 Style
PlotIndexSetInteger(2,PLOT_LINE_STYLE,STYLE_DOT); //MA lvl2 Style
//IndicatorSetInteger(INDICATOR_LEVELS,1,InpLevel1); //MA lvl1 Value
//IndicatorSetInteger(INDICATOR_COLOR2,1,Cyan);
//IndicatorSetInteger(INDICATOR_STYLE2,1,STYLE_DOT);
//IndicatorSetInteger(INDICATOR_IDTH,1,1);
//IndicatorSetInteger(INDICATOR_LEVELS,2,InpLevel2); //MA lvl2 Value
//IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,Cyan);
//IndicatorSetInteger(INDICATOR_LEVELSTYLE,2,STYLE_DOT);
//IndicatorSetInteger(INDICATOR_LEVELWIDTH,2,1);
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpMAPeriod); //MA
PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpMAPeriod); //MA lvl1
PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,InpMAPeriod); //MA lvl2
//---- line shifts when drawing
PlotIndexSetInteger(0,PLOT_SHIFT,InpMAShift); //MA
PlotIndexSetInteger(1,PLOT_SHIFT,InpMAShift); //MA lvl1
PlotIndexSetInteger(2,PLOT_SHIFT,InpMAShift); //MA lvl2
//--- name for DataWindow
string short_name="unknown ma";
switch(InpMAMethod)
{
case MODE_EMA : short_name="EMA"; break;
case MODE_LWMA : short_name="LWMA"; break;
case MODE_SMA : short_name="SMA"; break;
case MODE_SMMA : short_name="SMMA"; break;
}
IndicatorSetString(INDICATOR_SHORTNAME,short_name+"("+string(InpMAPeriod)+")");
//---- sets drawing line empty value--
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0); //MA
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0); //MA lvl1
PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0.0); //MA lvl2
//---- initialization done
}
//+------------------------------------------------------------------+
//| Moving Average |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
double pipMultiplier=_Point*MathPow(10,MathMod(_Digits,2));
pipLevel1 = InpLevel1 * pipMultiplier;
pipLevel2 = InpLevel2 * pipMultiplier;
//Print("point:"+_Point+" Digits:"+_Digits+ "pipMul:"+pipMultiplier);
//pipLevel1 = InpLevel1 / 10;
//pipLevel2 = InpLevel2 / 10;
//--- check for bars count
if(rates_total<InpMAPeriod-1+begin)
return(0);// not enough bars for calculation
//--- first calculation or number of bars was changed
if(prev_calculated==0)
{
ArrayInitialize(ExtLineBuffer,0); //MA
ArrayInitialize(ExtLv1Buffer,1); //MA level1
ArrayInitialize(ExtLv2Buffer,2); //MA level2
}
//--- sets first bar from what index will be draw
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpMAPeriod-1+begin); //MA
PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpMAPeriod-1+begin); //MA lvl1
PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,InpMAPeriod-1+begin); //MA lvl2
//--- calculation
switch(InpMAMethod)
{
case MODE_EMA:
CalculateEMA(rates_total,prev_calculated,begin,price);
ExtLv1Buffer[rates_total-1]=price[rates_total-1]+pipLevel1;
ExtLv2Buffer[rates_total-1]=price[rates_total-1]+pipLevel2;
//Print ("rates_total:"+rates_total+" prev:"+prev_calculated+" begin:"+begin+" price:"+price[rates_total-1]);
break;
case MODE_LWMA:
CalculateLWMA(rates_total,prev_calculated,begin,price);
ExtLv1Buffer[rates_total-1]=price[rates_total-1]+pipLevel1;
ExtLv2Buffer[rates_total-1]=price[rates_total-1]+pipLevel2;
break;
case MODE_SMMA:
CalculateSmoothedMA(rates_total,prev_calculated,begin,price);
ExtLv1Buffer[rates_total-1]=price[rates_total-1]+pipLevel1;
ExtLv2Buffer[rates_total-1]=price[rates_total-1]+pipLevel2;
break;
case MODE_SMA:
CalculateSimpleMA(rates_total,prev_calculated,begin,price);
ExtLv1Buffer[rates_total-1]=price[rates_total-1]+pipLevel1;
ExtLv2Buffer[rates_total-1]=price[rates_total-1]+pipLevel2;
break;
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
Sì, è quello che volevo dire
La cosa è semplice come diventa:
Non c'è bisogno di cambiare nulla nel calcolo delle medie o altro: solo una semplice aggiunta o sottrazione dal buffer centrale (ma)
Potresti mostrare un codice di esempio per aggiungere/sottrarre (verticalmente) il ma? Ho provato ma il mio codice non funziona...
Potresti mostrare un codice di esempio per aggiungere/sottrarre (verticalmente) il ma? Ho provato ma il mio codice non funziona.
Quell'indicatore usa il TMA centrato - ricalcola. Gli avvisi sarebbero inutili
ok cosa della freccia quando il colore cambia
ok cosa della freccia quando il colore cambia
I segnali (frecce) sarebbero inutili a causa della sua natura di ricalcolo/rimpaginazione
Caro @mladen,
Un esperto che non ha il supporto Ecn può essere usato senza problemi con un broker di tipo Ecn?
In alcuni esperti ci sono opzioni per broker di tipo Ecn.
Questo mi ha portato a pensare che potrebbe essere meglio ottimizzare o aggiungere alcuni codici per i broker di tipo Ecn.
Caro @mladen,
Un esperto che non ha il supporto Ecn può essere usato senza problemi con un broker di tipo Ecn?
In alcuni esperti ci sono opzioni per broker di tipo Ecn.
Questo mi ha fatto pensare che potrebbe essere meglio ottimizzare o aggiungere alcuni codici per i broker di tipo Ecn.
Sì, se non usi stop loss e take profit quando apri gli ordini
Se è fatto per ecn/stp dall'altra parte, funzionerà su qualsiasi broker senza alcun problema. L'unica differenza è al momento dell'apertura degli ordini - non è necessario nessun altro cambiamento (o ottimizzazione)
Grazie per la risposta dettagliata.
Per quanto ne so, l'ea allegato non ha il supporto di un broker di tipo Ecn.
Voglio usare questo ea in un broker di tipo Ecn usando SL e TP.
Sarò molto felice se mi fornirete il supporto per i broker di tipo Ecn.
Questo ea avrebbe bisogno di una riscrittura in modo che tutti lo capiscano
Ma dal momento che non parlo la lingua utilizzata in esso, non posso aiutare. Mi dispiace