Funzione ICustom - pagina 22

 
SantaClaus:
L'inglese non è la mia lingua madre ma non pensavo che la mia domanda fosse così sbagliata. Invece di "segnare le parole", cerchiamo una soluzione al mio problema. Provo di nuovo la domanda.

Qual è il modo migliore per il mio EA di riconoscere semplici put e call dal mio indicatore?

Ovviamente il mio codice non ha funzionato e ho provato a cambiare l'"1" in uno "0" come mi hai detto.

Posta (allega) il tuo codice che non funziona qui - i file mql che stai testando e che hai scritto finora

 

È il mio codice privato, quindi non voglio condividerlo. Ma cos'altro avete bisogno di vedere oltre al codice che vi ho fornito?

C'è qualcosa che ho dimenticato?

 
SantaClaus:
È il mio codice privato, quindi non voglio condividerlo. Ma cos'altro avete bisogno di vedere oltre al codice che ho fornito? C'è qualcosa che ho dimenticato?

Vuoi dire che vuoi che qualcuno ti aiuti con la codifica, ma non vuoi mostrare il codice per essere controllato per gli errori, ma invece stai sostenendo che tutti i consigli che hai ricevuto, e che stanno funzionando in migliaia e migliaia di altri codici, non stanno funzionando per te?

OK. Ora capisco la tua posizione. Buona fortuna con la tua codifica

Buon trading

 

Codice privato che non funziona? Interessante

 

Due dei miei post sono stati cancellati per qualche motivo che non conosco.

Comunque, il problema che ho incontrato era che avevo alcuni altri buffer che disturbavano quello che stavo cercando di leggere. Ora ho una soluzione funzionante.

 

Ho bisogno di aiuto per favore. Come si inviano i parametri dei simboli che hanno un suffisso (micro) a una funzione contenente icustom. se non sto usando una funzione metto il nome del simbolo tra virgolette doppie e funziona ad esempio icustom("EURUSDmicro",0,channel-signal",2,1) ma quando uso una funzione le virgolette doppie non vengono passate. vedi il seguente codice cosa intendo

void OnTick()

{

CalcDisplay("EURUSDmicro"); //--------FUNCTION CALL-------

}

void CalcDisplay(string TxtCurrency) //--------FUNCTION-------

{

double Value=icustom(TxtCurrency,0,channel-signal",2,1);

...

...

..

}

 
Richard Sidric:
Ho bisogno di aiuto per favore. Se non sto usando una funzione metto il nome del simbolo tra virgolette doppie e funziona, ad esempio icustom("EURUSDmicro",0,channel-signal",2,1) ma quando uso una funzione le virgolette doppie non vengono passate.

void OnTick()

{

CalcDisplay("EURUSDmicro"); //--------FUNCTION CALL-------

}

void CalcDisplay(string TxtCurrency) //--------FUNCTION-------

{

double Value=icustom(TxtCurrency,0,channel-signal",2,1);

...

...

..

}

Non è necessario passare le virgolette. Tutto ciò che serve è che sia una stringa.

___________________

PS: nella tua chiamata iCiustom ti manca una citazione. Ora è così:

double Value=icustom(TxtCurrency,0,channel-signal",2,1);

e deve essere così:

double Value=icustom(TxtCurrency,0, "channel-signal",2,1);

 

Ciao a tutti voi ho un indicatore t4 sotto allegato solo voglio sapere come posso usare questo per robo trading e robo trading o ea sono gli stessi o no

(io lo uso già il trading manuale seduto davanti al computer ma)

Se uso questo per il trading automatizzato, allora come per favore aiutatemi, grazie in anticipo

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

// ised originale e prima implementazione da mony

// versione tris di mladen

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

#proprietà copyright "mony & mladen"

#property link "made at www.forex.tsd.com"

#proprietà indicator_chart_window

#proprietà indicatore_buffer 5

#proprietà indicator_color1 MediumBlue

#proprietà indicatore_colore2 Rosso

#Proprietà indicatore_colore3 MedioBlu

#proprietà indicatore_colore4 Rosso

#proprietà indicatore_colore5 Rosso

#proprietà indicator_width3 3 3

#proprietà indicator_width4 3

#proprietà indicator_width5 3

#proprietà strict

//

//

//

//

//

//

enum enDisplay

{

dis_line, // Visualizza la linea colorata

dis_bars, // Visualizza le barre colorate

dis_both // Visualizza sia linee che barre colorate

};

extern int CCIperiod = 3; // periodo CCI

extern int ATRperiod = 300; // periodo ATR

extern ENUM_APPLIED_PRICE applied_price = PRICE_TYPICAL; // Prezzo da usare

extern enDisplay DisplayType = dis_line; // Tipo di visualizzazione

extern bool alertsOn = true; // Attiva gli avvisi

extern bool alertsOnCurrent = false; // Avvisi sulla barra corrente (ancora aperta)

extern bool alertsMessage = true; // Gli avvisi dovrebbero mostrare un messaggio pop-up

extern bool alertsSound = true; // Gli avvisi dovrebbero emettere un suono

extern bool alertsNotify = true; // Gli avvisi devono inviare una notifica

extern bool alertsEmail = false; // Gli avvisi devono inviare una mail

extern string soundFile = "o.wma"; // File audio da usare per gli avvisi sonori

double TrLine[]

double TrendDowna[]

double TrendDownb[]

double HistUp[]

doppio HistDn[];

doppio trend[];

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

//

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

//

//

//

//

//

int init()

{

IndicatorBuffers(6);

int styleLine = DRAW_LINE; se (DisplayType==dis_bars) styleLine=DRAW_NONE;

int styleBars = DRAW_HISTOGRAM; se (DisplayType==dis_line) styleBars=DRAW_NONE;

SetIndexBuffer(0, HistUp); SetIndexStyle(0,styleBars);

SetIndexBuffer(1, HistDn); SetIndexStyle(1,styleBars);

SetIndexBuffer(2, TrLine); SetIndexStyle(2,styleLine);

SetIndexBuffer(3, TrendDowna); SetIndexStyle(3,styleLine);

SetIndexBuffer(4, TrendDownb); SetIndexStyle(4,styleLine);

SetIndexBuffer(5, trend);

return(0);

}

int deinit(){ return(0); }

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

//

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

//

//

//

//

//

int start()

{

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

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

//

//

//

//

//

if (trend[limit]==-1) CleanPoint(limit,TrendDowna,TrendDownb);

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

{

double cciTrendNow = iCCI(NULL, 0, CCIperiod, applied_price, i);

se (cciTrendNow >= 0)

{

TrLine = NormalizeDouble(Low - iATR(NULL, 0, ATRperiod, i),Digits);

if (i<(Bars-1) && TrLine < TrLine) TrLine = TrLine;

}

se (cciTrendNow <= 0)

{

TrLine = NormalizeDouble(High + iATR(NULL, 0, ATRperiod, i),Digits);

if (i TrLine) TrLine = TrLine;

}

//

//

//

//

//

TrendDowna = EMPTY_VALUE;

TrendDownb = EMPTY_VALUE;

se (i<(Bars-1))

{

trend = trend;

se (TrLine> TrLine) trend = 1;

se (TrLine< TrLine) trend =-1;

se (trend == -1) PlotPoint(i,TrendDowna,TrendDownb,TrLine);

se (trend == 1) { HistUp = Alto; HistDn = Basso; }

se (trend == -1) { HistDn = Alto; HistUp = Basso; }

}

}

manageAlerts();

return(0);

}

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

//|

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

//

//

//

//

//

void manageAlerts()

{

se (alertsOn)

{

int whichBar = 1; se (alertsOnCurrent) whichBar = 0;

se (trend[qualeBar] != trend[qualeBar+1])

{

se (trend[qualeBar] == 1) doAlert(qualeBar, "up");

se (trend[whichBar] ==-1) doAlert(whichBar, "down");

}

}

}

//

//

//

//

//

void doAlert(int forBar, string doWhat)

{

static string previousAlert="niente";

static datetime previousTime;

messaggio di stringa;

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

previousAlert = doWhat;

previousTime = Time[forBar];

//

//

//

//

//

message = Symbol()+" a "+TimeToStr(TimeLocal(),TIME_SECONDS)+" SP MY trend cambiato in "+doWhat;

if (alertsMessage) Alert(message);

if (alertsNotify) SendNotification(message);

if (alertsEmail) SendMail(Symbol()+" S P MY",messaggio);

se (alertsSound) PlaySound(soundFile);

}

}

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

//

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

//

//

//

//

//

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

{

se (i>=Bars-3) ritorno;

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

secondo = VUOTO_VALORE;

altrimenti

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

first = EMPTY_VALUE;

}

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

{

se (i>=Bars-2) ritorna;

if (first == EMPTY_VALUE)

if (first == EMPTY_VALUE)

{ first = from; first = from; second = EMPTY_VALUE; }

else { second = from; second = from; first = EMPTY_VALUE; }

else { first = from; second = EMPTY_VALUE; }

}

s_p_mony__alerts_1.01.mq4

 
mony:
ciao a tutti voi ho un indicatore t4 sotto allegato solo voglio sapere come posso usare questo per il robo trading e robo trading o ea sono gli stessi o no

(lo uso già per il trading manuale seduto davanti al computer ma)

se uso questo per il trading automatico allora come per favore mi aiuti qualcuno grazie in anticipo

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

// originale e prima implementazione di mony

// versione tris di mladen

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

#proprietà copyright "mony & mladen"

#property link "made at www.forex.tsd.com"

#proprietà indicator_chart_window

#proprietà indicatore_buffer 5

#proprietà indicator_color1 MediumBlue

#proprietà indicatore_colore2 Rosso

#Proprietà indicatore_colore3 MedioBlu

#proprietà indicatore_colore4 Rosso

#proprietà indicatore_colore5 Rosso

#proprietà indicator_width3 3 3

#proprietà indicator_width4 3

#proprietà indicator_width5 3

#proprietà strict

//

//

//

//

//

//

enum enDisplay

{

dis_line, // Visualizza la linea colorata

dis_bars, // Visualizza le barre colorate

dis_both // Visualizza sia linee che barre colorate

};

extern int CCIperiod = 3; // periodo CCI

extern int ATRperiod = 300; // periodo ATR

extern ENUM_APPLIED_PRICE applied_price = PRICE_TYPICAL; // Prezzo da usare

extern enDisplay DisplayType = dis_line; // Tipo di visualizzazione

extern bool alertsOn = true; // Attiva gli avvisi

extern bool alertsOnCurrent = false; // Avvisi sulla barra corrente (ancora aperta)

extern bool alertsMessage = true; // Gli avvisi dovrebbero mostrare un messaggio pop-up

extern bool alertsSound = true; // Gli avvisi dovrebbero emettere un suono

extern bool alertsNotify = true; // Gli avvisi devono inviare una notifica

extern bool alertsEmail = false; // Gli avvisi devono inviare una mail

extern string soundFile = "o.wma"; // File audio da usare per gli avvisi sonori

double TrLine[]

double TrendDowna[]

double TrendDownb[]

double HistUp[]

doppio HistDn[];

doppio trend[];

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

//

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

//

//

//

//

//

int init()

{

IndicatorBuffers(6);

int styleLine = DRAW_LINE; se (DisplayType==dis_bars) styleLine=DRAW_NONE;

int styleBars = DRAW_HISTOGRAM; se (DisplayType==dis_line) styleBars=DRAW_NONE;

SetIndexBuffer(0, HistUp); SetIndexStyle(0,styleBars);

SetIndexBuffer(1, HistDn); SetIndexStyle(1,styleBars);

SetIndexBuffer(2, TrLine); SetIndexStyle(2,styleLine);

SetIndexBuffer(3, TrendDowna); SetIndexStyle(3,styleLine);

SetIndexBuffer(4, TrendDownb); SetIndexStyle(4,styleLine);

SetIndexBuffer(5, trend);

return(0);

}

int deinit(){ return(0); }

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

//

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

//

//

//

//

//

int start()

{

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

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

//

//

//

//

//

if (trend[limit]==-1) CleanPoint(limit,TrendDowna,TrendDownb);

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

{

double cciTrendNow = iCCI(NULL, 0, CCIperiod, applied_price, i);

se (cciTrendNow >= 0)

{

TrLine = NormalizeDouble(Low - iATR(NULL, 0, ATRperiod, i),Digits);

if (i<(Bars-1) && TrLine < TrLine) TrLine = TrLine;

}

se (cciTrendNow <= 0)

{

TrLine = NormalizeDouble(High + iATR(NULL, 0, ATRperiod, i),Digits);

if (i TrLine) TrLine = TrLine;

}

//

//

//

//

//

TrendDowna = EMPTY_VALUE;

TrendDownb = EMPTY_VALUE;

se (i<(Bars-1))

{

trend = trend;

se (TrLine> TrLine) trend = 1;

se (TrLine< TrLine) trend =-1;

se (trend == -1) PlotPoint(i,TrendDowna,TrendDownb,TrLine);

se (trend == 1) { HistUp = Alto; HistDn = Basso; }

se (trend == -1) { HistDn = Alto; HistUp = Basso; }

}

}

manageAlerts();

return(0);

}

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

//|

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

//

//

//

//

//

void manageAlerts()

{

se (alertsOn)

{

int whichBar = 1; se (alertsOnCurrent) whichBar = 0;

se (trend[qualeBar] != trend[qualeBar+1])

{

se (trend[qualeBar] == 1) doAlert(qualeBar, "up");

se (trend[whichBar] ==-1) doAlert(whichBar, "down");

}

}

}

//

//

//

//

//

void doAlert(int forBar, string doWhat)

{

static string previousAlert="niente";

static datetime previousTime;

messaggio di stringa;

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

previousAlert = doWhat;

previousTime = Time[forBar];

//

//

//

//

//

message = Symbol()+" a "+TimeToStr(TimeLocal(),TIME_SECONDS)+" SP MY trend cambiato in "+doWhat;

if (alertsMessage) Alert(message);

if (alertsNotify) SendNotification(message);

if (alertsEmail) SendMail(Symbol()+" S P MY",messaggio);

se (alertsSound) PlaySound(soundFile);

}

}

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

//

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

//

//

//

//

//

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

{

se (i>=Bars-3) ritorno;

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

secondo = VUOTO_VALORE;

altrimenti

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

first = EMPTY_VALUE;

}

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

{

se (i>=Bars-2) ritorna;

if (first == EMPTY_VALUE)

if (first == EMPTY_VALUE)

{ first = from; first = from; second = EMPTY_VALUE; }

else { second = from; second = from; first = EMPTY_VALUE; }

else { first = from; second = EMPTY_VALUE; }

}

s_p_mony__alerts_1.01.mq4

Hai già provato a usare la chiamata iCustom() dall'EA?

Tutto quello che devi fare è chiamare l'indicatore usando la funzione iCustom(), leggere il buffer di trend (buffer 5 in metatrader nomination) e quando cambia valore da -1 a +1 o da +1 a -1 hai un segnale

 

signore signore per favore mi dispiace signore ......... non so cosa è iCustom() call.. e dove posso provare??? ...... dove l'ho trovato in mt4 o quando modifico l'indicatore mi dica solo come posso usare questo indicatore S P mony in un trading automatico / robo trading, ecco tutto signore ..................

se questo è tutto lungo processo allora per favore mi scusi e per favore dimentichi i post precedenti grazie signore