Funzione ICustom - pagina 12

 

Qualcuno può postare un semplice ea che compra e vende, chiamando due indicatori con icustom().

Esiste una funzione per la chiusura degli ordini pendenti.

Grazie

 

aiuto iCustom

Ciao.

Sto cercando di modificare uno degli indicatori di FerruFX per utilizzare indicatori personalizzati. Ho già ottenuto che tutte le MA funzionino correttamente, ma non sono sicuro di come ottenere le informazioni corrette per gli altri due indicatori. In definitiva vorrei che questo visualizzasse i dati MTF dei due indicatori che ho allegato, PerkyAsctrend1 e HeikenAshi MTF. Sto usando iCustom per entrambi e penso di aver usato i comandi corretti in questo senso.

Sono in grado di produrre dati (ma non i dati corretti) per il PerkyAsctrend1. Pensavo di aver capito la logica per farlo visualizzare correttamente, ma credo di no. Ferru ha usato MA, CCI, MACD, ADX, Bullspower e BearsPower nel suo indicatore, ma sono diversi tipi di indicatori e purtroppo non sono molto utili come riferimento (per me) per PerkyAsctrend1 in questa impostazione.

Ho pensato che l'indicatore HeikenAshi MTF sarebbe stato abbastanza facile da aggiungere all'indicatore. A quanto pare mi sbagliavo. La colonna Heiken sta visualizzando inspiegabilmente "Label" e stanno tutti scomparendo dopo il primo tick.

Speriamo che il codice non vi sembri così schifoso come lo è per me. Sono un programmatore dilettante. Se qualcuno può aiutarmi, lo apprezzerei molto. Ho bisogno di un paio di occhi più esperti su questo. Sento che sarà abbastanza vantaggioso quando sarà completo.

-

Ecco i pezzi di codice che mi stanno dando problemi. Entrambi gli iCustoms mi stanno dando valori di 2147483647, il numero totale di barre nella storia dei prezzi / grafico.

int RISK = 4;

int AllBars = 250;

int MaMethod = 1;

int MaPeriod = 20;

//...

// Pesky

//...

string Pesky_Trend_1 //-- , Pesky_Trend_5, Pesky_Trend_15, Pesky_Trend_30, Pesky_Trend_60, Pesky_Trend_240, Pesky_Trend_1440, Pesky_Trend_10080;

double Pesky_m_1=iCustom(NULL,PERIOD_M1, "PerkyAsctrend1", RISK, AllBars,0,shift_1);

if ((Pesky_m_1 > 0)) { Pesky_Trend_1 = "UP"; x = 416; color_indic = Lime; UP_33 = 1; DOWN_33 = 0; }

if ((Pesky_m_1 < 0)) { Pesky_Trend_1 = "DOWN"; x = 406; color_indic = Red; UP_33 = 0; DOWN_33 = 1; }

// ...

// Indicatore (Heiken)

//...

string HA_Trend_1 //-- , HA_Trend_5, HA_Trend_15, HA_Trend_30, HA_Trend_60, HA_Trend_240, HA_Trend_1440, HA_Trend_10080;

double HA_1_1=iCustom(NULL,PERIOD_M1, "Heiken MTF",MaMethod,MaPeriod,shift_1);

double HA_2_1=iCustom(NULL,PERIOD_M1, "Heiken MTF",MaMethod,MaPeriod,shift_1+1);

se ((HA_1_1 > HA_2_1)) { HA_Trend_1 = "UP"; x = 466; color_indic = Lime; UP_41 = 1; DOWN_41 = 0; }

if ((HA_1_1 < HA_2_1)) { HA_Trend_1 = "DOWN"; x = 456; color_indic = Lime; UP_41 = 0; DOWN_41 = 1; }

//...

So che i valori di spostamento non sono ortodossi, ma è così che l'autore originale ha fatto.

int start()

{

//...

// Calcolo dello spostamento per gli indicatori (solo test)

doppio shift_1, shift_5, shift_15, shift_30, shift_60, shift_240, shift_1440, shift_10080;

if( test == true )

{

shift_1=iBarShift(NULL,PERIOD_M1,look_time_shift,false);

shift_5=iBarShift(NULL,PERIOD_M5,look_time_shift,false);

shift_15=iBarShift(NULL,PERIOD_M15,look_time_shift,false);

shift_30=iBarShift(NULL,PERIOD_M30,look_time_shift,false);

shift_60=iBarShift(NULL,PERIOD_H1,look_time_shift,false);

shift_240=iBarShift(NULL,PERIOD_H4,look_time_shift,false);

shift_1440=iBarShift(NULL,PERIOD_D1,look_time_shift,false);

shift_10080=iBarShift(NULL,PERIOD_W1,look_time_shift,false);

}

else

{

shift_1=shift_indicators;

shift_5=shift_indicators;

shift_15=shift_indicators;

shift_30=shift_indicators;

shift_60=shift_indicators;

shift_240=shift_indicators;

shift_1440=shift_indicators;

shift_10080=spostamento_indicatori;

Grazie...

 

Versioni aggiornate

Bene, ho riorganizzato tutto come deve essere visivamente e ho cambiato alcuni nomi di parametri. Tutto sembra essere ancora corretto per iCustom ma il valore PerkyAsctrend non viene calcolato correttamente e la logica Heiken è apparentemente completamente sbagliata. Sembra che non sia sera fornire un valore doppio per l'iCustom per l'indicatore Heiken MTF. Non ho ancora controllato di nuovo, ma entrambi i valori doppi di iCustom per gli indicatori erano uguali al numero di barre nella mia storia (2147483647)...! Devo fare qualcosa di completamente sbagliato con iCustom, ma non riesco a trovarlo.

Se hai il tempo o l'energia per dare un'occhiata a questo, te ne sarei molto grato.

File:
 

A: Homicida & Ra457 re: iCustom

Ciao.

Quel grande valore numerico che si ottiene quando si usa iCustom, sembra una difficoltà che ho avuto io.

Spero che questo aiuti.

Assicurati che i parametri che inserisci in iCustom siano esattamente gli stessi e nello stesso ordine di quelli indicati nelle variabili esterne nel codice dell'indicatore stesso.

Grazie.

 

2147483647 non ha nulla a che fare con la tua storia.

È il valore più grande che può avere un intero firmato a 32 bit ed è usato da MT4 come "Empty Value" di default degli indicatori.

Gli indicatori restituiscono "Empty Value" quando il valore non deve essere mostrato.

 

iCustom()

Ciao, ho bisogno di leggere tre variabili da un indicatore.

Ho messo l'orlo nella parte superiore dell'indicatore:

Variabili

doppio eaBid=0;

double eaAsk=0;

stringa eaType="";

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

Variabili

#proprietà indicator_separate_window

#proprietà indicator_buffers 8

#proprietà indicator_color1 Black

#proprietà indicator_color2 Lime

#proprietà indicator_color3 Lime

#proprietà indicator_color4 Giallo

#Proprietà indicatore_colore5 Rosso

#proprietà indicatore_colore6 Rosso

#Proprietà indicatore_colore7 Nero

#proprietà indicatore_colore8 Nero

doppio eaEP=0;

double eaSL=0;

double eaType=0;

doppio iVars[];

Roba

#proprietà indicator_buffers 2

#proprietà indicator_color1 Red

#proprietà indicator_color2 ForestGreen

//---- parametri di input

stringa IndicatorName="TradeWatch

double EntryBid=0;

double EntryAsk=0;

string EntryType="";

double eaBid=0;

double eaAsk=0;

stringa eaType="";

int init()

{

return (0);

}

Avvia

{

EntryBid = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 1, 0);

EntryAsk = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 2, 0);

EntryType = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 3, 0);

}

Come faccio a leggere le tre variabili nel mio EA?

Non riesco a capire dove sto sbagliando?

Grazie.

 

Perché non leggete semplicemente i risultati delle variabili che dovrebbero riflettersi nei valori del buffer dell'indicatore? Se guardate i colori nel setup dell'indicatore dopo aver posizionato l'indicatore sul grafico, ogni colore rappresenta un buffer. Il colore in alto = buffer0, il secondo colore dall'alto = buffer1 e così via.

Usa qualcosa del genere nel tuo EA:

Buff0=iCustom(NULL,0, "Nome indicatore",0,0); //Colore superiore dell'indicatore

Buff0=iCustom(NULL,0, "Nome indicatore",0,1); //1-Indietro

Buff1=iCustom(NULL,0, "Nome indicatore",1,0); //Colore superiore all'indicatore

Buff1=iCustom(NULL,0, "Nome indicatore",1,1); //1-Back

Modificate le variabili nell'indicatore stesso, e ricompilate l'indicatore che aggiornerà i buffer e l'indicatore sul grafico!

Se sei ancora confuso, ti manderò un EA e un indicatore da guardare.

Dave

<<<

 

iCustom()

Grazie Dave.

L'ho fatto funzionare.

 

buona giornata a tutti

 

il mio EA

Ho creato il mio EA - ASCTrend.mq4 con MQ4 builder, che utilizza il segnale asctrend con la funzione ICustom. può aprire un trade BUY quando il segnale UP, e SELL quando DOWN.

Voglio aggiungere al mio EA qualche filtro - con backtesting in alcune coppie, il suo aspetto è buono per il filtro con BBands ind, ma non so come aggiungere questo filtro nel mio EA - qualcosa del genere penso, ma non ho fortuna.

double Buy1_1 = iCustom(Symbol(),0, "PerkyAsctrend1",0,1);

double Buy2_1 = iCustom(NULL, 0, "BBands_Stop_v1", 4, 0, Current + 1);

double Buy2_2 = 1;

double Sell1_1 = iCustom(Symbol(),0, "PerkyAsctrend1",1,1);

double Sell2_1 = iCustom(NULL, 0, "BBands_Stop_v1", 5, 0, Current + 1);

doppio Sell2_2 = 1;

se (Buy1_1 && Buy2_1 > Buy2_2) Ordine = SIGNAL_BUY;

se (Sell1_1 && Sell2_1 > Sell2_2) Ordine = SIGNAL_SELL;

Motivazione: