Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
L'analyse de spectre singulier (SSA) recalcule, sauf s'il s'agit d'une version de point final. Puisque cet indicateur utilise une SSA "normale", il recalcule aussi.
Je crains qu'à partir du code, je ne vois pas du tout quelle est votre intention.
Si vous essayez d'avoir des moyennes avec des niveaux, utilisez celui que j'ai posté comme modèle
Bonjour,
oui je vais utiliser votre ma avancé avec des niveaux, (il a plus de prix, etc. ma coloré, etc.)
mais j'ai essayé d'en créer un par moi-même pour comprendre comment créer un indicateur personnalisé,
mon idée est de créer le même composant (en gros une MA avec 2 niveaux..)
J'utilise une MA centrale, et 2 autres MA tracées en utilisant des lignes de points pour donner le même effet que les niveaux...
pour chaque niveau, je remplis le tampon en utilisant l'événement on calculate... comme vous me l'avez dit, mais quelque chose ne va pas ;-(
les 2 MAs qui simulent le niveau seront décalées verticalement... mais cela ne fonctionne pas
Bonjour,
oui je vais utiliser votre ma avancé avec des niveaux, (il a plus de prix, etc. ma coloré, etc.)
mais j'ai essayé d'en créer une par moi-même pour comprendre comment créer un indicateur personnalisé,
mon idée est de créer le même composant (en fait une MA avec 2 niveaux..)
J'utilise une MA centrale, et 2 autres MA tracées en utilisant des lignes de points pour donner le même effet que les niveaux...
pour chaque niveau, je remplis le tampon en utilisant l'événement on calculate... comme vous me l'avez dit, mais quelque chose ne va pas ;-(
les 2 MAs qui simulent le niveau seront décalées verticalement... mais cela ne fonctionne pas
Oui, c'est ce que je voulais dire
La chose est aussi simple que possible :
Il n'y a pas besoin de changer quoi que ce soit dans le calcul des moyennes ou autre : juste une simple addition ou soustraction du buffer central (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);
}
//+------------------------------------------------------------------+
Oui, c'est ce que je voulais dire.
La chose est aussi simple que possible :
Il n'y a pas besoin de changer quoi que ce soit dans le calcul des moyennes ou quoi que ce soit d'autre : juste une simple addition ou soustraction du tampon central (ma).
Pourriez-vous montrer un exemple de code pour ajouter/soustraire (verticalement) le ma ? J'ai essayé mais mon code échoue...
pourriez-vous montrer un exemple de code pour ajouter/soustraire (verticalement) le ma ? j'ai essayé mais mon code échoue....
Cet indicateur utilise la TMA centrée - il recalcule. Les alertes seraient inutiles
ok que fait la flèche quand la couleur change
ok, qu'est-ce que la flèche quand la couleur change
Les signaux (flèches) seraient inutiles en raison de leur nature de recalcul/reproduction.
Cher @mladen,
Un expert qui n'a pas de support Ecn peut-il être utilisé sans problème avec un courtier de type Ecn ?
Dans certains experts, il y a des options pour les courtiers de type Ecn.
Cela m'a amené à penser qu'il serait préférable d'optimiser ou d'ajouter certains codes pour les courtiers de type Ecn.
Cher @mladen,
Un expert qui n'a pas de support Ecn peut-il être utilisé sans problème avec un courtier de type Ecn ?
Dans certains experts, il y a des options pour les courtiers de type Ecn.
Cela m'a amené à penser qu'il serait préférable d'optimiser ou d'ajouter certains codes pour les courtiers de type Ecn.
Oui, si vous n'utilisez pas le stop loss et le take profit lors de l'ouverture des ordres.
S'il est fait pour ecn/stp d'autre part, il fonctionnera sur n'importe quel courtier sans aucun problème. La seule différence est au moment de l'ouverture des ordres - aucun autre changement (ou optimisation) n'est nécessaire.
Merci pour votre réponse détaillée.
Pour autant que je sache, l'application ci-jointe ne supporte pas les courtiers de type Ecn.
Je veux utiliser cet ea dans un courtier de type Ecn en utilisant SL et TP.
Je serai très heureux si vous fournissez un support pour les courtiers de type Ecn.
Cette ea aurait besoin d'une réécriture pour que tout le monde la comprenne.
Mais comme je ne parle pas la langue utilisée, je ne peux pas vous aider. Désolé