Demandez ! - page 169

 

Indicateur de graphique hors ligne

Kalenzo:
Il n'y a rien de spécial à coder dans l'indicateur. Il suffit de glisser-déposer l'indicateur depuis nagivator vers un graphique hors ligne et il fonctionnera. Essayez-le d'abord avec des données normales disponibles avec metatrader, par exemple eurusd. Si l'indicateur fonctionne sur l'eurusd et pas sur le NYSE, cela signifie que l'indicateur compte quelque chose de manière incorrecte et qu'il doit être corrigé/ajusté (par exemple, il a peut-être besoin d'être arrondi ou, pendant les calculs, il génère une erreur comme la division par zéro).

Bonjour Kalenzo,

Merci pour votre réponse. Les indicateurs de la plateforme MT4 fonctionnent très bien. C'est un indicateur personnalisé qu'un individu a codé qui ne fonctionne pas. J'ai remarqué dans le code les symboles des devises. Je me demandais si je devais changer les symboles des paires de devises GBPUSD par le symbole NYSE ? Je voulais aussi savoir comment fonctionnent les indicateurs. Quelles données dans quel dossier font les indicateurs si les indicateurs qui ont été installés à l'origine dans la plate-forme ou est vous téléchargez un indicateur codé personnalisé gratuit ?

Merci !

 
winsumloosesum:
Salut Kalenzo,

Merci pour votre réponse. Les indicateurs de la plateforme MT4 fonctionnent parfaitement. C'est un indicateur personnalisé qu'un individu a codé qui ne fonctionne pas. J'ai remarqué dans le code les symboles des devises. Je me demandais si je devais changer les symboles des paires de devises GBPUSD par le symbole NYSE ? Je voulais aussi savoir comment fonctionnent les indicateurs. Quelles sont les données dans quel dossier font les indicateurs si les indicateurs qui ont été installés à l'origine dans la plate-forme ou est vous télécharger un indicateur gratuit codé personnalisé ?

Merci !

Bonjour !

Oui, vous devez absolument vérifier le code de l'indicateur. Si votre indicateur n'utilise pas la fonction Symbol() (ou la valeur NULL au lieu du symbole là où il est nécessaire) alors c'est le problème à 100%. Habituellement, l'indicateur transforme les données du graphique auquel il est attaché, c'est pourquoi les indicateurs MT4 originaux fonctionnent. Cependant, dans les indicateurs personnalisés, vous pouvez prendre des données à partir d'autres symboles/horaires et vous devez alors spécifier manuellement les données que vous souhaitez utiliser. Par exemple, vous pouvez utiliser EURUSD comme base et utiliser également GBPUSD et USDCHF comme autres paramètres de calcul.

Vous devez vérifier le code de l'indicateur, et changer les symboles en NYSE que vous souhaitez calculer. Ensuite, il fonctionnera bien.

 

Merci encore pour votre aide

Merci encore pour votre aide.

 

Problème de débogage

J'écris un EA basique pour comprendre le fonctionnement des indicateurs, mais j'ai eu quelques surprises. D'abord avec l'indy repeignant et maintenant avec l'indy très basique.

Pour comprendre les chiffres, j'utilise une fonction print() pour imprimer les valeurs dans le rapport de log pendant un backtest. Mais la fonction print semble perturber l'impression du log et je perds une grande partie du log. En supprimant la fonction print, le log est complet avec tous les ordres !

Une idée ? Voici un extrait de mon code

//----+ DÉFINITION DES SIGNAUX POUR LES TRADES

if (kline[1] < Level_Up) // sous le seuil de rentabilité

if (kline[0] > dline[0]) // Signal de dépassement principal

if (kline[0] > kline[1]) // Main doit monter

if (dline[0] > 0 ) { //Signal doit nost rester au niveau zéro < dline[1]) { // Main précédente sous le signal donc nous avons croisé à la hausse

BUY_Sign = true ;

if (Debug) {

Print ("Longopen K0 ",DoubleToStr(kline[0],Digits)," K1 ",DoubleToStr(kline[1],Digits),

" K2 ",DoubleToStr(kline[2],Digits), "K3 ",DoubleToStr(kline[3],Digits)) ;

Print (" D0 ",DoubleToStr(dline[0],Digits)," D1 ",DoubleToStr(dline[1],Digits)," D2 ",DoubleToStr(dline[2],Digits),

" D3 ",DoubleToStr(dline[3],Digits)) ;

}

}

Merci pour votre aide

Marcel

 

S'il vous plaît aider ! Je ne suis pas un codeur, mais je fais de mon mieux ici. Tout conseil sur la raison pour laquelle mon indicateur ne fonctionne pas serait très apprécié !

Merci d'avance

#property indicator_separate_window

#property indicator_buffers 4

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Green

#property indicator_color4 Red

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

#property indicator_width4 2

//---------------------------------------------------------------------indicator parameters

extern int FastEMA=12 ;

extern int SlowEMA=26 ;

extern int SignalSMA=9 ;

//---------------------------------------------------------------------indicator buffers

double OsmaBuffer[] ;

double Spm ;

double Smm ;

double Spmaks1 ;

double Spmaks2 ;

double Smmin1 ;

double Smmin2 ;

double nou[] ;

double ver[] ;

double OsMAUP[] ;

double OsMADOWN[] ;

//+------------------------------------------------------------------+

//| Fonction d'initialisation de l'indicateur personnalisé |

//+------------------------------------------------------------------+

int init()

{

//--------------------------------------------------------------------2 tampons supplémentaires sont utilisés pour le comptage.

IndicatorBuffers(4) ;

//--------------------------------------------------------------------drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM) ;

SetIndexBuffer(0,OsMAUP) ;

SetIndexStyle(1,DRAW_HISTOGRAM) ;

SetIndexBuffer(1,OsMADOWN) ;

SetIndexStyle(2,DRAW_ARROW) ;

SetIndexArrow(2,159) ;

SetIndexBuffer(2,Spmaks1) ;

SetIndexStyle(3,DRAW_ARROW) ;

SetIndexArrow(3,159) ;

SetIndexBuffer(3,Smmin1) ;

SetIndexDrawBegin(0,SignalSMA) ;

IndicatorDigits(Digits+2) ;

//------------------------------------------------------------------- nom pour l'étiquette de la DataWindow et de la sous-fenêtre de l'indicateur

IndicatorShortName("OsMA Marius("+FastEMA+", "+SlowEMA+", "+SignalSMA+")") ;

//-------------------------------------------------------------------initialization done

retour(0) ;

}

//+------------------------------------------------------------------+

//| Moyenne mobile de l'oscillateur |

//+------------------------------------------------------------------+

int start()

{

int limite ;

int counted_bars=IndicatorCounted() ;

//-------------------------------------------------------------------dernière barre comptée sera recomptée

if(counted_bars>0) counted_bars-- ;

limit=Bars-counted_bars ;

//-------------------------------------------------------------------Main Loop

for(int i=0 ; i<limit ; i++)

{

OsmaBuffer=iOsMA(NULL,0,FastEMA,SlowEMA,SignalSMA,PRICE_WEIGHTED,i) ;

nou = OsmaBuffer ;

ver = OsmaBuffer ;

if(OsmaBuffer > 0)

{

OsMAUP = OsmaBuffer ;

OsMADOWN = 0 ;

}

sinon

{

OsMADOWN = OsmaBuffer ;

OsMAUP = 0 ;

}

//-------------------------------------------------------------------Cross Down

if ((nou0))

{

Spmaks1 = Spmaks2 ;

if(Spmaks2 > 0)

{

Spmaks2 = 0 ;

}

}

//-------------------------------------------------------------------Cross Up

if ((nou>0)&&(ver<0))

{

Smmin1 = Smmin2 ;

si(Smmin2 < 0)

{

Smmin2 = 0 ;

}

}

//-------------------------------------------------------------------During Swing

if(ver > 0)

{

Spm = ver ;

if((nou > ver) || (nou == ver))

{

Spm = nou ;

}

if((Spm > Spmaks2) || (Spm == Spmaks2))

{

Spmaks2 = Spm ;

}

}

else

{

Smm = ver ;

if((nou < ver) || (nou == ver))

{

Smm = nou ;

}

if((Smm < Smmin2) || (Smm == Smmin2))

{

Smmin2 = Smm ;

}

}

}

//--------------------------------------------------------------------done

retour(0) ;

}

//+------------------------------------------------------------------+

 

Comment tracer la ligne entre les 20 dernières barres ?

J'ai une question !

Je veux avoir un indicateur de moyenne mobile.

Il dessine toujours la ligne entre les 20 dernières barres.

Mais je ne sais pas comment l'écrire.

J'espère que vous pourrez m'aider et me proposer un indicateur de ce type.

Merci beaucoup !

 

Paix à tous,

J'espère que tout va bien entre vous.

Ma question est assez simple pour ceux qui sont qualifiés dans le domaine de la programmation :

J'ai fait créer par un professionnel un A.E. qui utilise 3 indicateurs dans leur état brut. Il s'agit d'un système à 4 stratégies codées dans un seul AE où les 3 indicateurs sont négociés dans des combinaisons variables. Juste un peu d'histoire, mais cette partie n'est en fait pas pertinente.

Les 3 indicateurs utilisent chacun deux buffers et la seule variable qu'ils avaient tous était "CountBars". Comme ils étaient dans un état où ils n'étaient pas optimisables, étant donné que la seule option ajustable était "CountBars", j'ai eu la brillante idée d'utiliser l'algorithme de Jurik comme une sorte de prétraitement. De cette façon, je pouvais conserver le caractère brut de l'indicateur, c'est-à-dire réagir rapidement mais avec plusieurs "hoquets", tout en ajoutant un facteur de lissage qui est toujours très réactif et simultanément peu retardé. J'ai donc demandé à un membre bien connu de ce forum de m'aider à réaliser cette partie du projet, ce qu'il a fait, et de manière tout à fait impeccable d'ailleurs. Cependant, parce qu'ils sont allés au-delà de l'appel du devoir, je ne voulais pas leur demander de me faire d'autres faveurs, c'est-à-dire d'échanger les nouvelles versions lissées de Jurik des mêmes indicateurs à la place de leurs subordonnés bruts.

Ceci étant dit, je me suis dit que cela ne devait pas être trop difficile et que j'en savais assez pour le faire moi-même. Il suffit de changer les noms appelés dans les 3 instances iCustom, d'ajouter les nouvelles variables dans la partie "extern" ainsi qu'en bas dans la partie iCustoms, (Maintenant, la version smthd de JRK des indicateurs utilise toujours 2 buffers mais ils ont une variable supplémentaire, 2 au total : "SmoothLength" et "SmoothPhase". "CountBars" a été supprimé) et voilà ! Si seulement c'était aussi simple. J'ai fait ces choses et je l'ai compilé, sans erreur ni avertissement. Cependant, lorsque j'essaie de faire un backtest/forward test, pas de trading......

Est-ce qu'il me manque quelque chose ? Tout conseil sera grandement apprécié.

 

Bizzzzzump !

 
forex_for_life:
Paix à tous,

J'espère que tout va bien pour vous.

Ma question est assez simple pour ceux qui sont qualifiés dans le domaine de la programmation :

J'ai fait créer par un professionnel un a.e. qui utilise 3 indicateurs dans leur état brut. Il s'agit d'un système à 4 stratégies codées dans un A.E. où les 3 indicateurs sont négociés dans des combinaisons variables. Juste un peu d'histoire, mais cette partie n'est en fait pas pertinente.

Les 3 indicateurs utilisent chacun deux buffers et la seule variable qu'ils avaient tous était "CountBars". Comme ils étaient dans un état où ils n'étaient pas optimisables, étant donné que la seule option ajustable était "CountBars", j'ai eu la brillante idée d'utiliser l'algorithme de Jurik comme une sorte de prétraitement. De cette façon, je pouvais conserver le caractère brut de l'indicateur, c'est-à-dire réagir rapidement mais avec plusieurs "hoquets", tout en ajoutant un facteur de lissage qui soit encore très réactif et simultanément peu retardé. J'ai donc demandé à un membre bien connu de ce forum de m'aider avec cette partie du projet, ce qu'il a fait, et de manière tout à fait parfaite, je pourrais ajouter. Cependant, parce qu'ils sont allés au-delà de l'appel du devoir, je ne voulais pas leur demander de me faire d'autres faveurs, c'est-à-dire d'échanger les nouvelles versions lissées de Jurik des mêmes indicateurs à la place de leurs subordonnés bruts.

Ceci étant dit, je me suis dit que cela ne devait pas être trop difficile et que j'en savais assez pour le faire moi-même. Il suffit de changer les noms appelés dans les 3 instances iCustom, d'ajouter les nouvelles variables dans la partie "extern" ainsi qu'en bas dans la partie iCustoms, (Maintenant, la version smthd de JRK des indicateurs utilise toujours 2 buffers mais ils ont une variable supplémentaire, 2 au total : "SmoothLength" et "SmoothPhase". "CountBars" a été supprimé) et voilà ! Si seulement c'était aussi simple. J'ai fait ces choses et je l'ai compilé, sans erreur ni avertissement. Cependant, lorsque j'essaie de faire un backtest/forward test, pas de trading......

Est-ce que je rate quelque chose ? Tous les conseils seront les bienvenus.

Bonjour Ffl,

Essayez iCustom(NULL,0," indicator name" SmoothLength,SmoothPhase,0,1) pour l'achat et iCustom(NULL,0," indicator name" SmoothLength,SmoothPhase,1,1), pour la vente changez juste le "indicator name" en indicateur que vous essayez d'appeler.

 
mrtools:
Bonjour Ffl, Essayez iCustom(NULL,0," indicator name" SmoothLength,SmoothPhase,0,1) pour l'achat et iCustom(NULL,0," indicator name" SmoothLength,SmoothPhase,1,1), pour la vente changez juste le "indicator name" en indicateur que vous essayez d'appeler.

Paix M. T,

Merci pour vos conseils. J'ai fait ces changements sur la base de votre suggestion et l'A.E. compile toujours sans erreur ni avertissement mais ne place toujours pas de transactions. Je vais essayer une autre solution de contournement sous peu......

Raison: