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
Ciao, amici. E 'grande indicatore Dynamic_Momentum_Index per Thinkorswim. È possibile riscriverlo per metatrader 4? O forse qualcuno ha tale indicatore per MT4?
dichiarare inferiore; input price = close; input stdevLength = 5; input avgOfStdevLength = 10; input DYMILength = 30; input DYMILengthLowerLimit = 3; input DYMILengthUpperLimit = 30; assert(DYMILengthLowerLimit > 0, "'dymi length lower limit' must be positive: " + DYMILengthLowerLimit);assert(DYMILength tra DYMILengthLowerLimit e DYMILengthUpperLimit, "'dymi length' must be between lower and upper limit: " + DYMILength);def std = stdev(price, stdevLength);def ratio = std / Average(std, avgOfStdevLength);def dynamicLength = Floor(DYMILength / ratio);def limitedLength = if dynamicLength between DYMILengthLowerLimit and DYMILengthUpperLimit then dynamicLength else 0;def sf = 2 / (limitedLength + 1);def bn = Max(barNumber(), 0);# 10^-5 precisione per moltiplicatore emadef expIndex = if limitedLength == 0 then 1 else max(1, bn - ceil(-5 / lg(1 - sf));def fromIndex = if isNan(expIndex) then 1 else expIndex;def chg = prezzo - prezzo[1];def absChg = AbsValue(chg);def netChgAvg = fold indexN = daIndex a bn + 1 con accuN do sf * (if isnan(getValue(chg, bn - indexN)) then 0 else getValue(chg, bn - indexN)) + (1 - sf) * accuN;def totChgAvg = fold indexT = daIndex a bn + 1 con accuT do sf * (if isnan(getValue(absChg, bn - indexT)) then 0 else getValue(absChg, bn - indexT)) + (1 - sf) * accuT;def RSI = if totChgAvg != 0 and limitedLength != 0 then 50 * (netChgAvg / totChgAvg + 1) else RSI[1];plot DYMI = RSI;plot OverBought = 90;plot OverSold = 10;DYMI.DefineColor("OverBought", GetColor(5));DYMI.DefineColor("Normal", GetColor(7));DYMI.DefineColor("OverSold", GetColor(1));DYMI.AssignValueColor(if RSI > overbought then DYMI.Color("OverBought") else if RSI =OverBought, "OverBought", Alert.BAR, Sound.ring);Alert (DYMI=OverBought then high*72 else double.nan;DotDn.setStyle(curve.POINTS);DotDn.setPaintingStrategy(paintingStrategy.arROW_DOWN);DotDn.setLineWeight(3);DotDn.setDefaultColor(color.wHITE);plot DotUp = if DYMI<=OverSold then low*-2 else double.nan;Dotup.setStyle(curve.POINTS);Dotup.setPaintingStrategy(paintingStrategy.arROW_UP);Dotup.setLineWeight(3);Dotup.setDefaultColor(color.wHITE);alert(Dotup, "Scalper Buy Signal", Alert.BAR, Sound.ring);alert(DotDn, "Scalper Buy Signal", Alert.BAR, Sound.ring);
Ciao, amici. E 'grande indicatore Dynamic_Momentum_Index per Thinkorswim. E 'possibile riscrivere per metatrader 4? O forse qualcuno ha tale indicatore per MT4?
declare lower;input price = close;input stdevLength = 5;input avgOfStdevLength = 10;input DYMILength = 30;input DYMILengthLowerLimit = 3;input DYMILengthUpperLimit = 30;assert(DYMILengthLowerLimit > 0, "'dymi length lower limit' must be positive: " + DYMILengthLowerLimit);assert(DYMILength tra DYMILengthLowerLimit e DYMILengthUpperLimit, "'dymi length' must be between lower and upper limit: " + DYMILength);def std = stdev(price, stdevLength);def ratio = std / Average(std, avgOfStdevLength);def dynamicLength = Floor(DYMILength / ratio);def limitedLength = if dynamicLength between DYMILengthLowerLimit and DYMILengthUpperLimit then dynamicLength else 0;def sf = 2 / (limitedLength + 1);def bn = Max(barNumber(), 0);# 10^-5 precisione per moltiplicatore emadef expIndex = if limitedLength == 0 then 1 else max(1, bn - ceil(-5 / lg(1 - sf));def fromIndex = if isNan(expIndex) then 1 else expIndex;def chg = prezzo - prezzo[1];def absChg = AbsValue(chg);def netChgAvg = fold indexN = daIndex a bn + 1 con accuN do sf * (if isnan(getValue(chg, bn - indexN)) then 0 else getValue(chg, bn - indexN)) + (1 - sf) * accuN;def totChgAvg = fold indexT = daIndex a bn + 1 con accuT do sf * (if isnan(getValue(absChg, bn - indexT)) then 0 else getValue(absChg, bn - indexT)) + (1 - sf) * accuT;def RSI = if totChgAvg != 0 and limitedLength != 0 then 50 * (netChgAvg / totChgAvg + 1) else RSI[1];plot DYMI = RSI;plot OverBought = 90;plot OverSold = 10;DYMI.DefineColor("OverBought", GetColor(5));DYMI.DefineColor("Normal", GetColor(7));DYMI.DefineColor("OverSold", GetColor(1));DYMI.AssignValueColor(if RSI > overbought then DYMI.Color("OverBought") else if RSI =OverBought, "OverBought", Alert.BAR, Sound.ring);Alert (DYMI=OverBought then high*72 else double.nan;DotDn.setStyle(curve.POINTS);DotDn.setPaintingStrategy(paintingStrategy.arROW_DOWN);DotDn.setLineWeight(3);DotDn.setDefaultColor(color.wHITE);plot DotUp = if DYMI<=OverSold then low*-2 else double.nan;Dotup.setStyle(curve.POINTS);Dotup.setPaintingStrategy(paintingStrategy.arROW_UP);Dotup.setLineWeight(3);Dotup.setDefaultColor(color.wHITE);alert(Dotup, "Scalper Buy Signal", Alert.BAR, Sound.ring);alert(DotDn, "Scalper Buy Signal", Alert.BAR, Sound.ring);
olvus,
Vedi questo post: https: //www.mql5.com/en/forum/172919/page4. Forse questo aiuta
Ciao mladen, vorrei chiederti questo favore.... hai la possibilità di tradurre questo programma per MT4?
Grazie comunque...
QUESTO È IL PROGRAMMA IN ALTRA LINGUA:// var: domanda(0), offerta(0), var1(0), var2(0), indzona1;
// var1= ((H/C[1])-1)*V;
// var2= ((L/C[1]-1)*V*(-1);
// domanda= MOV(var1,450,S);
// offerta= MOV(var2,450,S);
// indzona1= CreateWiewport(100);
// PlotChart(domanda, indzona1, verde, solido, 1);
// PlotChart(offerta, indzona1, rosso, solido, 1); //Questo è il mio lavoro per la lingua MT4, ma dopo l'ultimo aggiornamento non funziona più:
#proprietà indicator_separate_window
#proprietà indicator_buffers 2
#proprietà indicator_color1 Verde
#proprietà indicator_color2 Rosso
#proprietà indicator_width1 1
#proprietà indicator_width2 1
extern int periodo=128;
double DOMANDA[];
doppio OFFERTA[];
//+------------------------------------------------------------------+
//|Funzione di inizializzazione dell'indicatore personalizzata
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits(6);
IndicatoreBuffer(2);
SetIndexBuffer(0,DOMANDA);
SetIndexBuffer(1,OFFERTA);
return(0);
}
//+------------------------------------------------------------------+
//| Funzione personalizzata di deinizializzazione dell'indicatore |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Funzione di iterazione dell'indicatore personalizzato |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit = Bars - counted_bars;
doppio var_dom[10000];
doppio var_off[10000];
ArraySetAsSeries(var_dom,true);
ArraySetAsSeries(var_off,true);
for(int i=0; i<limite; i++)
{
var_dom = ((High/Close)-1)*Volume;
var_off = ((Basso/Chiusura)-1)*Volume * (-1);
DOMANDA = iMAOnArray(var_dom,0,periodo,0,MODE_SMA,i);
OFFERTA = iMAOnArray(var_off,0,periodo,0,MODE_SMA,i);
}
return(0);
}//+------------------------------------------------------------------+
Ciao mladen, vorrei chiederti questo favore.... hai la possibilità di tradurre questo programma per MT4?
Grazie comunque.
QUESTO È IL PROGRAMMA IN ALTRO LINGUAGGIO:// var: domanda(0), offerta(0), var1(0), var2(0), indzona1;
// var1= ((H/C[1])-1)*V;
// var2= ((L/C[1]-1)*V*(-1);
// domanda= MOV(var1,450,S);
// offerta= MOV(var2,450,S);
// indzona1= CreateWiewport(100);
// PlotChart(domanda, indzona1, verde, solido, 1);
// PlotChart(offerta, indzona1, rosso, solido, 1); //Questo è il mio lavoro per la lingua MT4, ma dopo l'ultimo aggiornamento non funziona più:
#proprietà indicator_separate_window
#proprietà indicator_buffers 2
#proprietà indicator_color1 Verde
#proprietà indicator_color2 Rosso
#proprietà indicator_width1 1
#proprietà indicator_width2 1
extern int periodo=128;
double DOMANDA[];
doppio OFFERTA[];
//+------------------------------------------------------------------+
//|Funzione di inizializzazione dell'indicatore personalizzata
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits(6);
IndicatoreBuffer(2);
SetIndexBuffer(0,DOMANDA);
SetIndexBuffer(1,OFFERTA);
return(0);
}
//+------------------------------------------------------------------+
//| Funzione personalizzata di deinizializzazione dell'indicatore |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Funzione di iterazione dell'indicatore personalizzato |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit = Bars - counted_bars;
doppio var_dom[10000];
doppio var_off[10000];
ArraySetAsSeries(var_dom,true);
ArraySetAsSeries(var_off,true);
for(int i=0; i<limite; i++)
{
var_dom = ((High/Close)-1)*Volume;
var_off = ((Basso/Chiusura)-1)*Volume * (-1);
DOMANDA = iMAOnArray(var_dom,0,periodo,0,MODE_SMA,i);
OFFERTA = iMAOnArray(var_off,0,periodo,0,MODE_SMA,i);
}
return(0);
}//+------------------------------------------------------------------+Stephan
Ecco qui:
Stephan Ecco a voi:
Sì, perfetto !!!!
Grazie mille!!!
Mr. mladen, è possibile riscrivere l'indicatore thinkorswim all'indicatore metatrader 4 (post 2474)?
Ciao a tutti,
diciamo che ho una funzione che passa attraverso tutti gli ordini di mercato e seleziona l'ultimo usando lastTicket(). poi uso ot = orderopentime(). come faccio a ottenere il valore di ot tale che posso usare il valore di ot in qualsiasi altra funzione del programma. non voglio chiamare checko() da dentro il ciclo attraverso tutte le funzioni ad esempio
void checko()
{
se (ot>presetdatetime)
{
closeorder();
}
}
Ciao a tutti ,
diciamo che ho una funzione che esegue il loop di tutti gli ordini di mercato e seleziona l'ultimo usando lastTicket(). poi uso ot = orderopentime(). come faccio a ottenere il valore di ot in modo tale da poter utilizzare il valore di ot in qualsiasi altra funzione del programma. non voglio chiamare checko() dall'interno del loop di tutte le funzioni ad esempio
void checko()
{
se (ot>presetdatetime)
{
closeorder();
}
}hermes
Una domanda: per ultimo biglietto d'ordine intendi il più grande (che di solito è l'ordine più recente) o il più piccolo (che di solito è l'ordine più vecchio)?
hermes Una domanda: per ultimo biglietto d'ordine intendi il più grande (che di solito è l'ordine più recente) o il più piccolo (che di solito è l'ordine più vecchio)?
Grazie Mladen, intendo il più grande che è l'ordine più recente.
Grazie Mladen, intendo il più grande che è l'ordine più recente.
allora potete usare una funzione come questa:
{
int largestTicketNo = -1;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
largestTicketNo = MathMax(largestTicketNo,OrderTicket());
}
//
//
//
//
//
if (largestTicketNo>-1 )
{
if (OrderSelect(largestTicketNo,SELECT_BY_TICKET,MODE_TRADES))
if (OrderOpenTime()>timeLimit)
OrderDelete(largestTicketNo);
}
}PS: non fa differenza tra i simboli o eventuali numeri magici. Se hai bisogno che vengano controllati anche quelli, allora bisogna aggiungere del codice supplementare alla funzione di cui sopra