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

[Eliminato]  

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

[Eliminato]  

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
[Eliminato]  

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?

[Eliminato]  

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 ?