Aiuto per la codifica - pagina 258

 
Tomcat98:
Ciao Mladen , ciao a tutti,

Dannata nuova build!

Con la B625 ora ho nuovi avvertimenti.

"Il valore di ritorno di 'OrderSelect' dovrebbe essere controllato"

per il seguente codice:

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES);"

Come correggerlo?

Grazie a tutti.

Tomcat98

Tomcat98

Fai quanto segue:

dichiarare una variabile booleana globale (come questa, per esempio) :

bool dummyResult;

E poi metti semplicemente "dummyResult =" davanti a OrderSelect - allora avrai il seguente:

dummyResult = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

 
Tomcat98:
Ciao Mladen , ciao a tutti,

Dannata nuova build!

Con la B625 ora ho nuovi avvertimenti.

"Il valore di ritorno di 'OrderSelect' dovrebbe essere controllato"

per il seguente codice:

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES);"

Come correggerlo?

Grazie a tutti.

Tomcat98

Beh, puoi sbarazzartene a costo di qualche sforzo.

Ma sto avendo un avvertimento permanente, che non posso rimuovere con nessun mezzo (eccetto la rimozione della linea del codice sorgente):

struct Empty {};[/CODE]

results in

[CODE]! struct has no members, size assigned to 1 byte

che è un'informazione inutile, se lo uso solo come supertipo per le chiamate dll (non ho idea di qualsiasi altro uso della struttura vuota).

 

Ciao Mladen,

Sì, funziona:

Ottimo lavoro.

Grazie mille per il tuo aiuto.

Cordialmente.

Tomcat98

 

Ciao a tutti,

da alcuni giorni sto ricevendo sporadicamente il seguente errore in uno dei miei indicatori che uso nel mio EA.

2014.04.10 09:01:49.533 2014.01.08 03:45 Violazione di accesso scrivere a 0xFFFFFFFE in 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\D5D5AE2430FC68F628F143CAFA9XX\MQL4\indicators\MyDailyFibo.ex4'

Io uso la versione 4 di MT. Costruire 625

Per favore aiutatemi a trovare la causa principale di questo problema. Fatemi sapere se avete bisogno di esaminare l'indicatore. Non appare sempre ma molto spesso...

Grazie e cordiali saluti,

Antony

 
Antony1:
Ciao a tutti,

Da alcuni giorni ricevo sporadicamente il seguente errore in uno dei miei indicatori che uso nel mio EA.

2014.04.10 09:01:49.533 2014.01.08 03:45 Violazione di accesso scrivere a 0xFFFFFFFE in 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\D5D5AE2430FC68F628F143CAFA9XX\MQL4\indicators\MyDailyFibo.ex4'

Io uso la versione 4 di MT. Costruire 625

Per favore aiutatemi a trovare la causa principale di questo problema. Fatemi sapere se avete bisogno di esaminare l'indicatore. Non appare sempre ma molto spesso...

Grazie e cordiali saluti,

Antony

Antony

Questo non è un problema con il tuo indicatore

È un problema con la nuova metatrader 4 (ha problemi con la corretta allocazione della memoria e l'accesso - la build 628 è un po' meglio ma non molto)

 

Ciao,

ho bisogno di aiuto con questo indicatore che stavo cercando di scrivere (Wilder trailing stop candele MTF).

Primo problema: il mio indicatore disegna il segnale di acquisto 1 barra prima di quella che dovrebbe essere e so che questo è dovuto al modo in cui la pendenza è calcolata ma non so come risolvere il problema.

Secondo problema: I colori non corrispondono, probabilmente ho fatto un casino con i buffer in questa parte ma mi sto confondendo e non riesco a sistemarlo :

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

 
thefxpros:
Ciao,

Ho bisogno di aiuto con questo indicatore che stavo cercando di scrivere (Wilder trailing stop candele MTF).

Primo problema: il mio indicatore disegna il segnale di acquisto 1 barra prima di quella che dovrebbe essere e so che questo è dovuto al modo in cui la pendenza è calcolata ma non so come risolvere il problema.

Secondo problema: I colori non corrispondono, probabilmente ho fatto un casino con i buffer in questa parte ma mi sto confondendo e non riesco a sistemarlo :

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

mmmhh, i colori corrispondono. Forse devo scrivere prima wickbuffers e poi bodybuffers?

 
thefxpros:
mmmhh, i colori corrispondono. Forse devo scrivere prima wickbuffers e poi bodybuffers?

thefxpros

Il modo più semplice è quello di cambiare l'indicatore Wilders trailing stop (altrimenti sarete catturati in alcune complicate costruzioni if then else). Ecco una versione con un buffer interno che si desidera: trend. Se è uguale a 1, il trend è al rialzo, se è uguale a -1, il trend è al ribasso. Usate questo indicatore al posto dell'originale e leggete semplicemente il valore del buffer 4 - dopo di che tutto è semplice

 
mladen:
thefxpros Il modo più semplice è quello di cambiare l'indicatore Wilders trailing stop (altrimenti ti ritroverai in alcune complicate costruzioni if then else). Ecco una versione con un buffer interno che si desidera: trend. Se è uguale a 1, il trend è al rialzo, se è uguale a -1, il trend è al ribasso. Usate questo indicatore al posto dell'originale e leggete semplicemente il valore del buffer 4 - dopo di che tutto è semplice

Come questo?

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

#property copyright "thefxpros"

#property link "thefxpros@katamail.com"

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

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 LimeGreen

#property indicator_color2 Orange

#property indicator_color3 DarkGreen

#property indicator_color4 FireBrick

#property indicator_width1 1

#property indicator_width2 2

//

//

//

extern int TimeFrame = 0;

extern int Length = 2;

extern double Coeff = 1.75;

extern color UpBodyColor = LimeGreen;

extern color DnBodyColor = Orange;

extern color UpWickColor = DarkGreen;

extern color DnWickColor = FireBrick;

extern int WickWidth = 1;

extern int BodyWidth = 2;

//

double UpBodyBuffer[];

double DnBodyBuffer[];

double UpWickBuffer[];

double DnWickBuffer[];

double TrendBuffer[];

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

//| |

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

int init()

{

IndicatorBuffers(6);

SetIndexBuffer(0,UpWickBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, UpWickColor);

SetIndexBuffer(1,DnWickBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, DnWickColor);

SetIndexBuffer(2,UpBodyBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, UpBodyColor);

SetIndexBuffer(3,DnBodyBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, DnBodyColor);

SetIndexBuffer(4,TrendBuffer);

IndicatorShortName("Wilders trailing stop MTF candles("+Length+","+Coeff+")");

Length = MathMax(Length,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("Wilders trailing stop MTF candles("+TimeFrameStr+")");

return(0);

}

//----

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

//| MTF function |

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

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

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

{

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

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

int slope=iCustom(Symbol(),TimeFrame,"Wilders trailing stop with trend",Length,Coeff,4,y);

if (slope == 1)

{

UpWickBuffer = High;

DnWickBuffer = Low;

UpBodyBuffer = MathMax(Open,Close);

DnBodyBuffer = MathMin(Open,Close);

}

if (slope == -1)

{

DnWickBuffer = High;

UpWickBuffer = Low;

DnBodyBuffer = MathMax(Open,Close);

UpBodyBuffer = MathMin(Open,Close);

}

}

return(0);

}

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

Non posso crederci, funziona al primo tentativo .....C'è qualcos'altro che posso scrivere meglio (cancellare trendbuffer sì, ho visto ora) di quello che ho fatto?

grazie Mladen

File:
cattura_2.jpg  72 kb
 
mladen:
Non è possibile disegnare linee con lunghezza in pollici sul grafico (è completamente impossibile usando metatrader e dubito che sia possibile in qualsiasi piattaforma di trading). E quelle linee sono oggetti orizzontali non linee di tendenza (le linee di tendenza possono essere limitate ma le linee orizzontali no). Se non c'è una regola matematica esatta su come le linee dovrebbero essere disegnate (a seconda del prezzo, non dei pollici) semplicemente non possono essere disegnate, e da quella sequenza di numeri sembra che le regole siano uniche per ogni linea

Ok grazie ho trovato un indy migliore che puoi modificare. Era un progetto incompiuto che un codificatore ha fatto in forexfactory e non riesco più a trovarlo. Per favore sostituisci 00, 20, 50, 80 con i miei numeri. Le linee sono anche raggruppate insieme invece di mettere solo i numeri speciali 5, 15, 31, 45 e 67.

Grazie

File: