come aggiungere il codice dell'indicatore nel codice di expertadvisor?

 

come ho detto sopra, desidero fare un ea con codice stocastico.

il problema è come aggiungere il codice dell'indicatore nell'ea?

 
albert_lim83:

il problema è come aggiungere il codice indicatore in un ea?

Si può, con certe limitazioni, ma usare iCustom è molto più facile.

Ma se vuoi veramente farlo: Trasferire un codice indicatore in un codice Expert Advisor. Struttura dell'indicatore - Articoli MQL4

 

Per Stocastico non è necessario iCustom

doppio iStochastic( string symbol, int timeframe, int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift)
Calcola l'oscillatore stocastico e restituisce il suo valore.
Parametri:
simbolo - Simbolo i cui dati devono essere usati per calcolare l'indicatore. NULL significa il simbolo corrente.
timeframe - Timeframe. Può essere uno qualsiasi dei valori dell'enumerazione Timeframe. 0 significa il timeframe del grafico corrente.
%Kperiodo - Periodo della linea %K.
%Dperiod - %D periodo di linea.
rallentamento - Valore di rallentamento.
metodo - Metodo MA. Può essere qualsiasi valore dell'enumerazione dei metodi MovingAverage.
campo_prezzo - Parametro del campo del prezzo. Può essere uno di questi valori: 0 - Low/High o 1 - Close/Close.
mode - Indice della linea dell'indicatore. Può essere uno qualsiasi dei valori dell'enumerazione degli identificatori di linea degli indicatori.
shift - Indice del valore preso dal buffer dell'indicatore (spostamento relativo alla barra corrente il dato numero di periodi precedenti).
Esempio:
 if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0)) return(0);
Un sacco di aiuto di codifica è qui per trovare l'indice alfabetico delle funzioni MQL4 https://www.mql5.com/en/forum/122679

 

come aggiungere l'indicatore rvi nell'ea?

anche utilizzando lo stesso codice come il modo di aggiungere stocastico?

 
Leggere la documentazione
 
albert_lim83:

come aggiungere l'indicatore rvi nell'ea?

anche utilizzando lo stesso codice come il modo di aggiungere stocastico?


iCustom() o iRVI()

 
albert_lim83:

come aggiungere l'indicatore rvi nell'ea?

anche utilizzando lo stesso codice come l'aggiunta di stocastico modo?


  1. Spiegazione dettagliata di iCustom - MQL4 forum
 

sto cercando di aggiungere l'indicatore RVI in EA escape, ma non ci riesco...

mostra

espressione sull'ambito globale non consentita

definizione difunzione inaspettata

parentesi sbilanciate

come risolvere questo errore?

 

Ecco il codice che ho fatto questa mattina.

qualcuno può aiutarmi a sistemarlo?


//+------------------------------------------------------------------+
int init()
{
//---- mappatura dei buffer degli indicatori
SetIndexBuffer(0,Buffer);
SetIndexBuffer(1,SignalBuffer);
//---- linea dell'indicatore
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
//---- impostazioni di disegno
SetIndexDrawBegin(0,RVIPeriod+3);
SetIndexDrawBegin(1,RVIPeriod+7);
//---- nome per DataWindow e l'etichetta della sottofinestra dell'indicatore
IndicatorShortName("RVI("+RVIPeriod+")");
SetIndexLabel(0, "RVI");
SetIndexLabel(1, "RVIS");
//---- inizializzazione fatta
return(0);
}
{
double bid =MarketInfo(Symbol(),MODE_BID); // Richiesta del valore di Bid
double ask =MarketInfo(Symbol(),MODE_ASK); // Richiesta del valore di Ask
double point =MarketInfo(Symbol(),MODE_POINT);//Richiesta di Point
return; // Esci da start()
if(ContoFreeMargin()<100)
Print("Non abbiamo soldi. Margine libero = ", AccountFreeMargin());
return(0);
}

int start()
{
{
int i,j,nLimit,nCountedBars;
double dValueUp,dValueDown,dNum,dDeNum;
//----
if(Bars<=RVIPeriod+8) return(0);
//----
nCountedBars=IndicatorCounted();
//---- controllare eventuali errori
if(nCountedBars<0) return(-1);
//---- l'ultima barra contata sarà ricontata
nLimit=Bars-RVIPeriod-4;
se(nCountedBars>RVIPeriod+4)
nLimit=Bars-nCountedBars;
//---- RVI contati nel 1° buffer
for(i=0; i<=nLimit; i++)
{
dNum=0.0;
dDeNum=0.0;
for(j=i; j<i+RVIPeriod; j++)

{
dValueUp=((Close[j]-Open[j])+2*(Close[j+1]-Open[j+1])+2*(Close[j+2]-Open[j+2])+(Close[j+3]-Open[j+3]))/6;
dValueDown=((High[j]-Low[j])+2*(High[j+1]-Low[j+1])+2*(High[j+2]-Low[j+2])+(High[j+3]-Low[j+3]))/6;
dNum+=dValueUp;
dDeNum+=dValueDown;
}
if(dDeNum!=0.0)
Buffer[i]=dNum/dDeNum;
altrimenti
Buffer[i]=dNum;
}
//---- linea di segnale contata nel 2° buffer
nLimit=Bars-RVIPeriod-7;
if(nCountedBars>RVIPeriod+8)
nLimit=Bars-nCountedBars+1;
for(i=0; i<=nLimit; i++)
SignalBuffer[i]=(Buffer[i]+2*Buffer[i+1]+2*Buffer[i+2]+Buffer[i+3])/6;
//----
return(0);
}
{
OrderSend(Symbol,LotSize,Ask,StopLoss,TakeProfit,0,0);
se (Chiusura<i)
OpenBuy();
return(0);

OrderSend(Symbol,LotSize,Bid,StopLoss,TakeProfit,0,0);
se (Chiusura>i)
OpenSell();
return(0);
}


double GetSizeLot() { return(LotSize); }
double GetTakeProfitBuy() { return(Ask+TakeProfit*Point); }
double GetTakeProfitSell() { return(Bid-TakeProfit*Point); }
double GetStopLossBuy() { return(Bid-StopLoss*Point); }
double GetStopLossSell() { return(Ask+StopLoss*Point); }
string GetCommentForOrder() { return();}

return(0); }

 

Prima di postare per favore leggete alcuni degli altri thread. . . allora avreste visto numerose richieste come questa:

Si prega di utilizzare questo per postare il codice . . rende più facile la lettura.

 
albert_lim83:

Ecco il codice che ho fatto questa mattina.

qualcuno può aiutarmi a risolvere il problema?

Non puoi usare il codice Indicator in un EA. . . leggi il thread di cui ho postato il link. Devi avere un numero uguale di { e } e anche un numero uguale di ( e ). . . non l'ho già detto una volta ? https://www.mql5.com/en/forum/139447 Immagino che non ti preoccupi di imparare dagli altri post ?