Aiuto per la codifica - pagina 197

 
mladen:
Puoi aggiungerlo per disegnare quelle linee aggiuntive ancora una volta - così:
if (add>0) { drawLine(totalLevels,current+diff+add,addLinesColor,addLinesStyle); drawLine(totalLevels,current+diff-add ,addLinesColor,addLinesStyle); }
e disegnerà quelle linee aggiuntive intorno a tutte le linee "di base"

Ancora grazie mladen

 

Bisogno di aiuto nella programmazione di un allarme

Ciao, sono nuovo di tutta la programmazione di mql4.

Voglio creare un nuovo allarme "tutto in uno".

Ho Fx MNT, Super Signal e CHT Value Chart con segnali di allarme.

Ora voglio avere un solo allarme, quando MNT, Super Signal, Value Chart e RSI sono al posto giusto.

Come codificare questo? Posso usare le parti di allarme dell'esistente e metterle tutte in un unico grande codice?

Cordiali saluti Slow

 
Slow Moe:
Ciao, sono nuovo di tutta la programmazione di mql4.

Voglio creare un nuovo allarme "tutto in uno".

Ho Fx MNT, Super Signal e CHT Value Chart con segnali di allarme.

Ora voglio avere un solo allarme, quando MNT, Super Signal, Value Chart e RSI sono al posto giusto.

Come codificare questo? Posso usare le parti di allarme esistenti e metterle tutte in un unico grande codice?

Cordiali saluti Slow

Lento

Puoi farlo, ma il codice che sarebbe "responsabile" del recupero dei dati da tutti quegli indicatori non sarebbe semplice (specialmente la parte con i parametri dove dovresti dichiarare parametri esterni a tutti gli indicatori che verrebbero chiamati per sapere se l'allarme deve essere attivato o meno)

 

chiusure consecutive superiori/inferiore

Il file allegato ha una serie di condizioni che possono essere incluse selezionando vero/falso.

Vorrei incorporare un'altra condizione come vero/falso: ci sono

2 chiusure superiori consecutive per i long?

Se ci sono, allora se le altre condizioni abilitate da true sono presenti, allora viene prodotta una freccia verso l'alto.

Ci sono 2 chiusure consecutive inferiori per gli short?

Se ci sono, allora se le altre condizioni abilitate da true sono presenti, allora viene prodotta una freccia verso il basso.

Il numero di chiusure potrebbe essere una variabile?

Qualcuno potrebbe codificare questa condizione extra nell'indicatore Stoch_Indy? Grazie.

File:
 
person77:
Il file allegato ha una serie di condizioni che possono essere incluse selezionando vero/falso.

Vorrei incorporare un'altra condizione come vero/falso: ci sono

2 chiusure superiori consecutive per i long?

Se ci sono, allora se le altre condizioni abilitate da true sono presenti, allora viene prodotta una freccia verso l'alto.

Ci sono 2 chiusure consecutive inferiori per gli short?

Se ci sono, allora se le altre condizioni abilitate da true sono presenti, allora viene prodotta una freccia verso il basso.

Il numero di chiusure potrebbe essere una variabile?

Qualcuno potrebbe codificare questa condizione extra nell'indicatore Stoch_Indy? Grazie.

persona77

Prova questo

Opzione UseConsecutiveCloseBars aggiunta per questo scopo. Non viene testato solo un close ids, ma un close deve essere maggiore dell'open su tali barre per renderlo consecutivo up, o deve essere inferiore all'open su tali barre per renderlo consecutivo down

File:
 
mladen:
persona77

Prova questo

Opzione UseConsecutiveCloseBars aggiunta a questo scopo. Non solo una chiusura viene testata, ma una chiusura deve essere maggiore dell'apertura su tali barre per renderla consecutiva al rialzo, o deve essere inferiore all'apertura su tali barre per renderla consecutiva al ribasso

Molto bello mladen - funziona molto bene. Grazie!

Nei pochi casi in cui mi sono imbattuto, avere C = O permesso è per lo più favorevole.

Potresti cambiarlo per permettere questo, o, meglio ancora, avere un'opzione che permetta o meno C = O?

File:
 
person77:

Molto bello mladen - funziona molto bene. Grazie!

Nei pochi casi in cui mi sono imbattuto, avere C = O consentito è per lo più favorevole.

Potresti cambiarlo per permettere questo, o, meglio ancora, avere un'opzione che permetta o meno C = O?

persona77

Aggiunta un'altra opzione: AllowCloseEqualOpen. in modo da poterlo controllare con questa opzione ora

File:
 

Ciao ragazzi,

Ho una domanda sulla codifica

E' possibile disegnare la media mobile sul grafico generale con queste preferenze?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFattore = 10000.0;

 
cain82:
Ciao ragazzi,

Ho una domanda sulla codifica

E' possibile disegnare la media mobile sul grafico generale con queste preferenze?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Quello che hai scritto (il dFactor e mFactor) si valuta tutto ad un valore costante indipendentemente dal prezzo e dal numero di barre, quindi avresti una linea orizzontale sul grafico

 
mladen:
Quello che hai scritto (il dFactor e mFactor) si valuta tutto ad un valore costante indipendentemente dal prezzo e dal numero di barra, quindi avresti una linea orizzontale sul grafico

Grazie per la risposta!

Ma come posso ottenere una linea angolare di MA sul grafico generale come in questo codice indi istogramma?

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 3

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Yellow

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

//---- indicator parameters

extern int TimeFrame = 60;

extern int MAMode = 0;

extern int MAPeriod = 50;

extern int Price = 4;

extern double AngleTreshold = 0.25;

extern int StartMAShift = 2;

extern int EndMAShift = 0;

extern int MaxBars = 500;

string TF1;

//---- indicator buffers

double UpBuffer[];

double DownBuffer[];

double ZeroBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2 );

//---- 3 indicator buffers mapping

if(!SetIndexBuffer(0,UpBuffer) &&

!SetIndexBuffer(1,DownBuffer) &&

!SetIndexBuffer(2,ZeroBuffer))

Print("cannot set indicator buffers!");

SetIndexLabel(0,"");

SetIndexLabel(1,"");

SetIndexLabel(2,"");

switch(TimeFrame)

{

case 1: TF1="M1"; break;

case 5: TF1="M5"; break;

case 15: TF1="M15"; break;

case 30: TF1="M30"; break;

case 60: TF1="H1"; break;

case 240: TF1="H4"; break;

case 1440: TF1="D1"; break;

case 10080: TF1="W1"; break;

case 43200: TF1="MN1"; break;

default: {TimeFrame = Period(); init(); return(0);}

}

IndicatorShortName("MAAngle MTF * "+TF1+" *");

//---- initialization done

return(0);

}

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

//| The angle for EMA |

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

int start()

{

double fEndMA, fStartMA;

double fAngle, mFactor, dFactor;

int nLimit, i;

int nCountedBars;

double angle;

int ShiftDif;

string Sym;

if (MAMode >= 4) MAMode = 0;

if(EndMAShift >= StartMAShift)

{

Print("Error: EndMAShift >= StartMAShift");

StartMAShift = 6;

EndMAShift = 0;

}

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Sym = StringSubstr(Symbol(),3,3);

if (Sym == "JPY") mFactor = 100.0;

ShiftDif = StartMAShift-EndMAShift;

mFactor /= ShiftDif;

//---- check for possible errors

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

//---- last counted bar will be recounted

if(nCountedBars>0) nCountedBars--;

nLimit=Bars-nCountedBars;

nLimit=MathMax(nLimit,TimeFrame/Period());

nLimit=MathMin(nLimit,MaxBars );

//---- main loop

for(i=0; i<nLimit; i++)

{

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

if (TimeFrame<Period()) TimeFrame=Period();

fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift);

fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift);

// 10000.0 : Multiply by 10000 so that the fAngle is not too small

// for the indicator Window.

fAngle = mFactor * (fEndMA - fStartMA)/2.0;

//fAngle = MathArctan(fAngle)/dFactor;

DownBuffer = 0.0;

UpBuffer = 0.0;

ZeroBuffer = 0.0;

if(fAngle > AngleTreshold)

UpBuffer = fAngle;

else if (fAngle < -AngleTreshold)

DownBuffer = fAngle;

else ZeroBuffer = fAngle;

}

return(0);

}

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