Aide au codage - page 288

 

Bonjour,

Tout d'abord, je m'excuse si cette question n'est pas au bon endroit, c'est un indicateur de pivot que je regarde mais ma question concerne le codage, j'aurais pu la mettre dans MTF aussi bien mais j'ai pensé que c'était le meilleur endroit pour commencer.

Dans MT4 nous avons quotidien, hebdomadaire, mensuel = W1, D1, MN1

mais existe-t-il une fonction année, ou une fonction trimestre.

Ainsi, par exemple, dans l'indicateur pivot ci-joint, comment obtenir une année, et est-ce (ou pouvez-vous choisir) un roulement de 12 mois ou une année précédente fixe, par exemple 2013. De même, comment faire pour que l'indicateur calcule les pivots trimestriels ?

Je suis raisonnablement sûr de pouvoir modifier le fichier joint, mais je ne sais pas comment commencer à y introduire les données pour qu'il produise des trimestres ou des années.

touspivots_monthly.mq4

Merci beaucoup

Kevin

Dossiers :
 
mladen:
Vous l'avez changé pour utiliser "#pollan indy" Je n'ai aucune idée de ce que fait cet indicateur (s'il est comme le reste des indicateurs "pollan", il repeint et cela peut causer vos problèmes, mais je ne fais que deviner maintenant).

Cher Monsieur MLADEN...

Pourriez-vous remplacer ce (#pollan indy) avec un autre indicateur que vous avez... peut-être appeler #VQ bars.... S'il vous plaît, essayez-le.... parce que j'ai une lecture sur le tampon de l'indicateur comme l'image ci-jointe... mais je ne pouvais pas appeler via iCustom dans mon EA pour tester davantage ce "#pollan indy" ...

J'espère avoir de vos nouvelles bientôt... MERCI

Bien à vous

AZRUL

Dossiers :
my_vq.jpg  48 kb
 
12BPRO:
Cher Monsieur MLADEN...

Pourriez-vous remplacer ce (#pollan indy) par un autre indicateur que vous avez... peut-être appeler #VQ bars.... S'il vous plaît, faites un essai.... parce que j'ai une lecture sur le tampon de l'indicateur comme l'image ci-jointe ... mais je ne pouvais pas appeler via iCustom dans mon EA pour tester davantage ce "#pollan indy" ...

J'espère avoir de vos nouvelles bientôt... MERCI

Bien à vous

AZRUL

Il n'est pas nécessaire de remplacer #VQ par #VQ (il calcule déjà la qualité de la volatilité).

Si cela fonctionne comme il se doit avec le #VQ normal, la seule conclusion logique est qu'il y a quelque chose qui ne va pas avec "#pollan indy".

 

Aide au codage

Bonjour à tous

Bonjour mladen

Je suis en train d'essayer de créer mes premiers codes.

Apprendre des autres codes, car il n'y a pas de manuel MT4 dans ma langue.

Je prie de ne pas rire de mon code.

S'il vous plaît peut m'aider il fonctionne.

C'est un indicateur simple qui marque la création d'un Doji.

Je vous prie de m'aider.

Merci beaucoup à l'avance.

Meilleures salutations.

Hermo.

PD. Compile bien mais ne fonctionne pas.

Dossiers :
 
Hermo:
Bonjour à tous

Bonjour mladen

J'essaie de créer mes premiers codes.

Apprendre d'autres codes, puisqu'il n'y a pas de manuel MT4 dans ma langue.

Je prie de ne pas rire de mon code.

S'il vous plaît peut m'aider il fonctionne.

C'est un indicateur simple qui marque la création d'un Doji.

Je vous prie de m'aider.

Merci beaucoup à l'avance.

Meilleures salutations.

Hermo.

PD. Compile bien mais ne fonctionne pas.

Hermo

Je vais vérifier

J'attends la conférence de presse de la BCE maintenant :) :)

 
12BPRO:
Cher Monsieur MLADEN...

C'est pourquoi, en premier lieu, je n'ai pas posté mon #VQ.... peut-être que vous avez raison sur le fait qu'il y a quelque chose qui ne va pas avec le "pollan indy" et OUI il se repeint....

Pour moi, je voudrais juste essayer ma théorie, avec cet indicateur juste pour voir quel est le résultat....

Le truc c'est que je n'ai pas pu appeler le buffer de l'indicateur dans mon EA... peut être que c'est dû à la version modifiée de mon #VQ qui bloque l'appel iCustom à mon EA....

Avec le #VQ original cela fonctionne très bien... et j'ai pu exécuter mon EA.... mais avec le #VQ modifié (le mien), je n'ai pas pu dépasser mais il y a quand même une valeur comme indiqué dans le fil de discussion précédent...

Je pense que le problème est avec ma version #VQ MODIFIÉE.... peut être ainsi erreur de syntaxe.... S'il vous plaît, si vous avez le temps, jetez un coup d'oeil et voyez si cela fonctionne comme il se doit.....

MERCI... et désolé pour tout commentaire négatif.....

votre serviteur...

AZRUL

AZRUL

Je ne peux tout simplement pas savoir ce qui se passe avec votre "pollan indy" sans voir le code.

Tout ce que je peux faire est de deviner, et deviner dans le codage est très, très mauvais

tous mes vœux

 
mladen:
Il n'y a pas besoin de remplacer #VQ par #VQ (il calcule déjà la qualité de la volatilité) Si cela fonctionne comme il se doit avec le #VQ normal, la seule conclusion logique est qu'il y a quelque chose qui ne va pas avec "#pollan indy".

Cher Monsieur MLADEN...

C'est pourquoi en premier lieu je n'ai pas posté mon #VQ.... peut-être que vous avez raison sur le fait qu'il y a quelque chose qui ne va pas avec le "pollan indy" et OUI il se repeint....

Pour moi, je voudrais juste essayer ma théorie, avec cet indicateur juste pour voir quel est le résultat....

Le truc c'est que je n'ai pas pu appeler le buffer de l'indicateur dans mon EA... peut être que c'est dû à la version modifiée de mon #VQ qui bloque l'appel iCustom à mon EA....

Avec le #VQ original cela fonctionne très bien... et j'ai pu exécuter mon EA.... mais avec le #VQ modifié (le mien), je n'ai pas pu dépasser mais il y a quand même une valeur comme indiqué dans le fil de discussion précédent...

Je pense que le problème est avec ma version #VQ MODIFIÉE.... peut être une erreur de syntaxe... S'IL VOUS PLAÎT, si vous avez le temps, jetez un coup d'oeil et voyez si cela fonctionne comme il se doit..... juste pour l'APPRENTISSAGE....

MERCI... J'AI FAIT TOURNER CETTE EA MAINTENANT ET JE LA TESTE SI VOUS ÊTES INTÉRESSÉS PAR LE RÉSULTAT, JE LE POSTERAI DANS LE FIL DE DISCUSSION DE POLLAN.....

Votre serviteur...

AZRUL

 
mladen:
AZRUL

Je ne peux tout simplement pas savoir ce qui se passe avec votre "pollan indy" sans voir le code.

Tout ce que je peux faire, c'est deviner, et deviner en codage est très, très mauvais.

tous les meilleurs

J'AI FAIT TOURNER CETTE EA MAINTENANT ET JE LA TESTE SI VOUS ÊTES INTÉRESSÉS PAR LE RÉSULTAT JE LE POSTERAI DANS LE FIL DE DISCUSSION POLLAN.....

C'EST MA VERSION DU #VQ QUI N'A PAS FONCTIONNÉ...

MERCI...

votre serviteur...

AZRUL

 

Bonjour CODESGURUS,

J'ai une question générale sur le multi time frame.... comme ci-joint

la première image sur le côté gauche est un indicateur RSI sur un timeframe 5M...

La deuxième image est le RSI multi time frame du 5M sur le 15M timeframe...

La question est de savoir pourquoi il y a une différence dans la valeur indiquée dans le cercle rouge.....

Quelqu'un peut-il S'IL VOUS PLAÎT expliquer et rectifier ces codes RsiMA-MTF........

#property indicator_separate_window

#property indicator_buffers 6

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_color3 Aqua

#property indicator_color4 Yellow

#property indicator_color5 White

#property indicator_color6 Magenta

#property indicator_width1 1

#property indicator_width2 1

#property indicator_width3 1

#property indicator_width4 1

#propriété indicator_width5 1

#property indicator_width6 1

//-------------------------------------

//-----

//extern string TimeFrames = "M15 ; M60" ;

extern bool TimeFrame1bool = true ;

extern int TimeFrame1 = 0 ;

extern bool TimeFrame2bool = False ;

extern int TimeFrame2 = 0 ;

extern bool TimeFrame3bool = False ;

extern int TimeFrame3 = 0 ;

//int period[]={1,5,15,30,60,240,1440,43200};

//string periodString[]={"M1","M5","M15","M30","H1","H4","D1",MN1"};

// créez un tableau supplémentaire avec les noms des indicateurs

//string signalNameString[]={"MA"} ;

int ExtCountedBars=0 ;

//---------------------

int TF ;

//---- tampons

double ExtMapBuffer1[] ;

double ExtMapBuffer2[] ;

double ExtMapBuffer3[] ;

double ExtMapBuffer4[] ;

double ExtMapBuffer5[] ;

double ExtMapBuffer6[] ;

//-------

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

int init()

{

SetIndexBuffer(0, ExtMapBuffer1) ;

SetIndexBuffer(1, ExtMapBuffer2) ;

SetIndexBuffer(2, ExtMapBuffer3) ;

SetIndexBuffer(3, ExtMapBuffer4) ;

SetIndexBuffer(4, ExtMapBuffer5) ;

SetIndexBuffer(5, ExtMapBuffer6) ;

//-----

SetIndexStyle(0, DRAW_LINE) ;

SetIndexStyle(1, DRAW_LINE) ;

SetIndexStyle(2, DRAW_LINE) ;

SetIndexStyle(3, LIGNE_DROITE) ;

SetIndexStyle(4, LIGNE_DROITE) ;

SetIndexStyle(5, DRAW_LINE) ;

// SetIndexStyle(0,DRAW_LINE,EMPTY,1) ;

// SetIndexBuffer(0,ExtMapBuffer1) ;

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

int M1 = PERIOD_M1 ;

int M5 = PERIOD_M5 ;

int M15 = PERIOD_M15 ;

int M30 = PERIOD_M30 ;

int H1 = PERIOD_H1 ;

int H4 = PERIOD_H4 ;

int D1 = PERIOD_D1 ;

int WK1 = PERIOD_W1 ;

int MN1 = PERIOD_M1 ;

TF=Période() ;

if (TF==PERIOD_M1) { TimeFrame1 = M1 ; TimeFrame2 = M1 ; TimeFrame3 = M1;}

else if (TF==PERIOD_M5) { TimeFrame1 = M1 ; TimeFrame2 = M5 ; TimeFrame3 = M15;}

else if (TF==PERIOD_M15) { TimeFrame1 = M5 ; TimeFrame2 = M15 ; TimeFrame3 = H1 ; }

else if (TF==PERIOD_M30) { TimeFrame1 = M5 ; TimeFrame2 = M15 ; TimeFrame3 = H1 ; }

else if (TF==PERIOD_H1) { TimeFrame1 = M15 ; TimeFrame2 = H1 ; TimeFrame3 = H4 ; }

else if (TF==PERIOD_H4) { TimeFrame1 = H4 ; TimeFrame2 = H4 ; TimeFrame3 = D1 ; }

else if (TF==PERIOD_D1) { TimeFrame1 = H4 ; TimeFrame2 = D1 ; TimeFrame3 = WK1;}

else if (TF==PERIOD_W1) { TimeFrame1 = D1 ; TimeFrame2 = WK1 ; TimeFrame3 = MN1;}

else if (TF==PERIOD_MN1) { TimeFrame1 = D1 ; TimeFrame2 = WK1 ; TimeFrame3 = MN1;}

else { TimeFrame1 = D1 ; TimeFrame2 = WK1 ; TimeFrame3 = MN1;}

//-----

return(0) ;

}

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

int start()

{

datetime TimeArray1[] ;

datetime TimeArray2[] ;

datetime TimeArray3[] ;

int limite, i,y=0 ;

// int counted_bars = IndicatorCounted() ;

ExtCountedBars=IndicateurCounted() ;

if(ExtCountedBars < 0) return(-1) ;

if(ExtCountedBars > 0) ExtCountedBars-- ;

limite = Bars - ExtCountedBars ;

//-----

ArrayCopySeries(TimeArray1,MODE_TIME,Symbol(),TimeFrame1) ;

ArrayCopySeries(TimeArray2,MODE_TIME,Symbol(),TimeFrame2) ;

ArrayCopySeries(TimeArray3,MODE_TIME,Symbol(),TimeFrame3) ;

for(i=0,y=0;i<limit;i++)

{

if(TimeFrame1bool)

{

if (Time<TimeArray1[y]) y++ ;

{

//ExtMapBuffer1

ExtMapBuffer1 = iCustom(NULL,TimeFrame1 , "#RSI-MA",0, y) ;

ExtMapBuffer2 = iCustom(NULL,TimeFrame1 , "#RSI-MA",3, y) ;

}

}

//-----

if(TimeFrame2bool)

{

if (Time<TimeArray2[y]) y++ ;

{

//ExtMapBuffer1

ExtMapBuffer3 = iCustom(NULL,TimeFrame2 , "#RSI-MA",0,y) ;

ExtMapBuffer4 = iCustom(NULL,TimeFrame2 , "#RSI-MA",3,y) ;

}

}

//-----

if(TimeFrame3bool)

{

if (Time<TimeArray3[y]) y++ ;

{

//ExtMapBuffer1

ExtMapBuffer5 = iCustom(NULL,TimeFrame3 , "#RSI-MA",0, y) ;

ExtMapBuffer6 = iCustom(NULL,TimeFrame3 , "#RSI-MA",3, y) ;

}

}

}

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

//=======================================================

return(0) ;

}

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

int deinit()

{

return(0) ;

}

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

Dossiers :
rsi-mtf_diff.jpg  290 kb
 

CECI EST UNE COPIE DU RSI-MA........

#property indicator_separate_window

#property indicator_buffers 4

#property indicateur_color1 LimeGreen

#property indicator_color2 Red

#property indicator_color3 Yellow

#property indicator_color4 White ///DarkGray

#property indicator_width1 3

#property indicator_width2 3

#property indicator_width3 3

#property indicator_width4 1

#property indicator_levelcolor Aqua

extern string TimeFrame = "Cadre temporel actuel" ;

extern int RsiOma_Period = 13 ;

extern int RsiOma_Price = 0 ;

extern int RsiOma_Mode = MODE_LWMA ;

extern int MaPeriod = 8 ;

extern int MaType = MODE_LWMA ;

extern double levelOb = 88 ;

extern double levelOs = 13 ;

extern int OB_RSI = 80 ;

extern int OS_RSI = 15 ;

extern string note = "turn on Alert = true ; turn off = false" ;

extern bool alertsOn = true ; ///false ;

extern bool alertsOnCurrent = true ;

extern bool alertsMessage = true ;

extern bool alertsSound = true ; ///false ;

extern bool alertsEmail = false ;

extern string soundfile = "connect.wav" ; /// "alert2.wav" ;

extern string SoundUp = "ok.wav" ;

extern string SoundDown = "stops.wav" ;

double rsi[] ;

double rsida[] ;

double rsidb[] ;

double ma[] ;

double mab[] ;

double trend[] ;

double slope[] ;

string indicatorFileName ;

int Char, timeFrame ;

bool returnBars ;

bool calculateValue ;

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

int init()

{

IndicatorBuffers(7) ;

SetIndexBuffer(0,rsi) ;

SetIndexBuffer(1,rsida) ;

SetIndexBuffer(2,rsidb) ;

SetIndexBuffer(3,ma) ;

SetIndexBuffer(4,mab) ;

SetIndexBuffer(5,trend) ;

SetIndexBuffer(6,slope) ;

SetLevelValue(0,levelOs) ;

SetLevelValue(1,levelOb) ;

indicatorFileName = WindowExpertName() ;

calculateValue = (TimeFrame== "calculateValue") ; if (calculateValue) return(0) ;

returnBars = (TimeFrame=="returnBars") ; if (returnBars) return(0) ;

timeFrame = stringToTimeFrame(TimeFrame) ;

IndicatorShortName(timeFrameToString(timeFrame)+" Rsi-Ma MaxMin ("+RsiOma_Period+", "+MaPeriod+")") ;

SetIndexLabel(0, "RSI") ;

SetIndexLabel(1, "RSIDA") ;

SetIndexLabel(2, "RSIDB") ;

SetIndexLabel(3, "MA") ;

return(0) ;

}

int deinit() { return(0) ; }

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

int start()

{

int counted_bars=IndicatorCounted() ;

int i,limit ;

if(counted_bars<0) return(-1) ;

if(counted_bars>0) counted_bars-- ;

limit = MathMin(Bars-counted_bars,Bars-1) ;

if (returnBars) { rsi[0] = limite+1 ; return(0) ; }

si (calculateValue || timeFrame==Period())

{

if (slope[limit] == -1) ClearPoint(limit,rsida,rsidb) ;

for (i=limit ; i >= 0 ; i--) mab = iMA(NULL,0,RsiOma_Period,0,RsiOma_Mode,RsiOma_Price,i) ;

for (i=limit ; i >= 0 ; i--) rsi = iRSIOnArray(mab,0,RsiOma_Period,i) ;

pour (i=limite ; i >= 0 ; i--)

{

ma = iMAOnArray(rsi,0,MaPeriod,0,MaType,i) ;

rsida = EMPTY_VALUE ;

rsidb = EMPTY_VALUE ;

slope = slope ;

trend = trend ;

si ((rsi > rsi) && (rsi > OB_RSI))

slope= 1 ;

si ((rsi < rsi) && (rsi < OS_RSI))

pente=-1 ;

si ((rsi > ma) && (rsi > OB_RSI))

trend= 1 ;

si ((rsi < ma) && (rsi < OS_RSI))

trend=-1 ;

si (slope == -1)

PlotPoint(i,rsida,rsidb,rsi) ;

}

manageAlerts() ;

retour(0) ;

}

limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period())) ;

si (slope[limit]==-1) ClearPoint(limit,rsida,rsidb) ;

for (i=limite;i>=0 ; i--)

{

int y = iBarShift(NULL,timeFrame,Time) ;

rsi = iCustom(NULL,timeFrame,indicatorFileName, "calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,0,y) ;

rsida = EMPTY_VALUE ;

rsidb = EMPTY_VALUE ;

ma = iCustom(NULL,timeFrame,indicatorFileName, "calculateValue",RsiOma_Period,RsiOma_Mode,MaPeriod,MaType,3,y) ;

trend = iCustom(NULL,timeFrame,indicatorFileName, "calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,5,y) ;

slope = iCustom(NULL,timeFrame,indicatorFileName, "calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,6,y) ;

}

for (i=limit;i>=0;i--) if (slope==-1) PlotPoint(i,rsida,rsidb,rsi) ;

manageAlerts() ;

return(0) ;

}

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

string sTfTable[] = {"M1", "M5", "M15", "M30", "H1", "H4", "D1", "W1", "MN"} ;

int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200} ;

int stringToTimeFrame(string tfs)

{

tfs = stringUpperCase(tfs) ;

for (int i=ArraySize(iTfTable)-1 ; i>=0 ; i--)

if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable,Period())) ;

return(Période()) ;

}

string timeFrameToString(int tf)

{

for (int i=ArraySize(iTfTable)-1 ; i>=0 ; i--)

if (tf==iTfTable) return(sTfTable) ;

return("") ;

}

string stringUpperCase(string str)

{

string s = str ;

for (int length=StringLen(str)-1 ; length>=0 ; length--)

{

Char = StringGetChar(s, length) ;

if((Char > 96 && Char 223 && Char < 256))

s = StringSetChar(s, length, Char - 32) ;

else if(Char > -33 && Char < 0))

s = StringSetChar(s, length, Char + 224) ;

}

return(s) ;

}

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

void ClearPoint(int i,double& first[],double& second[])

{

if ((second != EMPTY_VALUE) && (second != EMPTY_VALUE))

second = EMPTY_VALUE ;

sinon

if ((first != EMPTY_VALUE) && (first != EMPTY_VALUE) && (first == EMPTY_VALUE))

first = EMPTY_VALUE ;

}

void PlotPoint(int i,double& first[],double& second[],double& from[])

{

si (first == EMPTY_VALUE)

{

si (first == EMPTY_VALUE)

{

first = from ;

first = from ;

second = EMPTY_VALUE ;

}

else

{

second = from ;

second = from ;

first = EMPTY_VALUE ;

}

}

else

{

first = from ;

second = EMPTY_VALUE ;

}

}

void manageAlerts()

{

if (!calculateValue && alertsOn)

{

si (alertsOnCurrent)

int whichBar = 0 ;

sinon whichBar = 1 ; whichBar = iBarShift(NULL,0,iTime(NULL,timeFrame,whichBar)) ;

if (trend[whichBar] != trend[whichBar+1])

{

si (trend[whichBar] == 1)

//doAlert(whichBar, "trend") ;

doAlerts( whichBar, "UP RSI-MA "+Symbol()+" (tf : "+Period()+")",SoundUp) ;

si (trend[whichBar] ==-1)

//doAlert(whichBar, "no trend") ;

doAlerts( whichBar, "DOWN RSI-MA "+Symbol()+" (tf : "+Period()+")",SoundDown) ;

}

}

}

void doAlerts(int forBar, string doWhat, string SoundFile) {

static string previousAlert="rien" ;

static datetime previousTime ;

message de chaîne de caractères ;

if (previousAlert != doWhat || previousTime != Time[forBar]) {

previousAlert = doWhat ;

previousTime = Time[forBar] ;

message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" rsioma ",doWhat) ;

if (alertsMessage) Alert(message) ;

if (alertsSound) PlaySound(SoundFile) ;

if (alertsEmail) SendMail(StringConcatenate(Symbol()," rsioma "),message) ;

}

}

//---------------------------------------------------------------------------------------------------

void doAlert(int forBar, string doWhat)

{

static string previousAlert="rien" ;

static datetime previousTime ;

message de chaîne de caractères ;

if (previousAlert != doWhat || previousTime != Time[forBar]) {

previousAlert = doWhat ;

previousTime = Time[forBar] ;

message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" rsioma ",doWhat) ;

if (alertsMessage) Alert(message) ;

if (alertsEmail) SendMail(StringConcatenate(Symbol()," rsioma "),message) ;

if (alertsSound) PlaySound(soundfile) ;

}

}

MERCI À TOUS.....

meilleures salutations

AZRUL..........

PS... comment puis-je joindre le code de ces FILES ici..... Désolé pour le désordre....

Raison: