Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
...
Devi fare 2 coseDopo di che otterrete qualcosa di simile a questo:
Buon fine settimana
#proprietà indicator_separate_window
#proprietà indicator_buffers 1
#proprietà indicatore_colore1 Rosso
#proprietà indicator_maximum 100
#Proprietà indicatore_livello1 70
#Proprietà indicatore_livello2 50
#Proprietà indicatore_livello3 30
#proprietà indicatore_minimo 0
//---- parametri di ingresso
extern int rsiperiod = 14 ;
extern int Shortperiod = 5 ;
extern int Middleperiod = 8 ;
extern int Longperiod = 13;
extern int mamode = 2 ;
//---- buffer
double RSI[]
double ShortRSI[]
double MiddleRSI[]
double LongRSI[]
doppio SMRSI[];
int periodo ;
//+------------------------------------------------------------------+
//| Funzione di inizializzazione dell'indicatore personalizzato |
//+------------------------------------------------------------------+
int init()
{
//---- indicatori
IndicatoreBuffer(5);
SetIndexBuffer(0,SMRSI);
SetIndexBuffer(1,RSI);
SetIndexBuffer(2,ShortRSI);
SetIndexBuffer(3,MiddleRSI);
SetIndexBuffer(4,LongRSI);
//---- nome per DataWindow e l'etichetta della sottofinestra dell'indicatore
IndicatorShortName("SMRSI("+rsiperiod+", "+Shortperiod+", "+Middleperiod+", "+Longperiod +", "+mamode+")");
SetIndexDrawBegin(0,rsiperiodo+Lungoperiodo);
period=Shortperiod+Middleperiod+Longperiod;
return(0);
}
//+------------------------------------------------------------------+
//|Funzione di iterazione dell'indicatore personalizzata
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limite = Bars-counted_bars;
for( i=limite; i>=0; i--) RSI=iRSI(NULL,0,rsiperiodo,0,i);
for( i=limit; i>=0; i--) ShortRSI=iMAOnArray(RSI,0,Shortperiod,0,mamode,i);
for( i=limit; i>=0; i--) MiddleRSI=iMAOnArray(RSI,0,Middleperiod,0,mamode,i);
for( i=limit; i>=0; i--) LongRSI=iMAOnArray(RSI,0,Longperiod,0,mamode,i);
for( i=limit; i>=0; i--) { if(period!=0) SMRSI=(Shortperiod/period)*ShortRSI+(Middleperiod/period)*MiddleRSI+(Longperiod/period)*LongRSI;}
return(0);
}
//+------------------------------------------------------------------+n_n
Devi fare 2 cose
Dopo di che otterrete qualcosa di simile a questo:
Buon fine settimanaGrazie!
Ciao,
ho scaricato l'indicatore allegato nel sito mql4. Ho provato a fare un EA basato su questo indicatore ma quando inizio il backtest dopo alcuni secondi la piattaforma va in crash e penso che sia un difetto dell'indicatore perché sta usando molta cpu.
Quindi chiedo se è possibile alleggerire il codice per risolvere questo problema.
Grazie per la vostra disponibilità.
cronex_taichi.mq4
dasio
L'ho testato con questo snippet e funziona bene. Non conosco i parametri che hai usato quindi questo è solo chiamare un indicatore di default, ma non c'è nessun problema in questo modo
{
return(0);
}
int start()
{
Comment(iCustom(NULL,0,"Cronex Taichi",0,0));
return(0);
}
Ciao,
Ho scaricato l'indicatore allegato nel sito mql4. Ho provato a fare un EA basato su questo indicatore ma quando inizio il backtest dopo alcuni secondi la piattaforma va in crash e penso che sia un difetto dell'indicatore perché sta usando molta cpu.
Quindi chiedo se è possibile alleggerire il codice per risolvere questo problema.
Grazie per la vostra disponibilità.
cronex_taichi.mq4dasio
L'ho testato con questo snippet e funziona bene. Non conosco i parametri che hai usato quindi questo è solo chiamare un indicatore predefinito, ma non c'è nessun problema in questo modo
{
return(0);
}
int start()
{
Comment(iCustom(NULL,0,"Cronex Taichi",0,0));
return(0);
}
Grazie per la tua risposta,
quello che vedo è che nella storia l'indicatore è stato caricato ripetutamente così sposto il codice di icustom solo in un nuovo evento candela ma il problema persiste ancora.
Non so perché.
Comunque grazie per la tua disponibilità.
Ciao,
ho trovato il problema. Ora è tutto ok.
Ho un altro problema con un altro ea.
Ho questi due codici e la funzione Lotti() mi restituirebbe il numero di lotti per un ordine finale.
Quando lo compilo ricevo Posizioni Internal Error. Cosa c'è di sbagliato? Grazie;
{
int intCount=0;
int intPOS=0;
bool boolTerm=false;
while(boolTerm==false)
{
if(OrderSelect(intPOS,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) intCount++;
intPOS++;
}
else
boolTerm=true;
}
return(intCount);
}
[/PHP]
[PHP]int Lotti(){
int Lotti;
int Posizioni=OTBM(MagicNumber);
switch (Posizioni)
{
case 0 : Lotti=0.1; break;
case 1 : Lotti=0.2; break;
case 2 : Lotti=0.4; break;
case 3 : Lotti=0.8; break;
case 4 : Lotti=1.6; break;
case 5 : Lotti=3.2; break;
case 6 : Lotti=6.4; break;
case 7 : Lotti=12.8; break;
}
return(Lotti);
}Provate a sostituire OTBM() con questo :
{
int intCount=0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) intCount++;
}
}
return(intCount);
}
[/PHP]
Hi,
i found the problem. Now all its ok.
I have another problem with another ea.
I have this two code and the function Lotti() would be return me the number of lot for an ordersend.
When i compile it i receive Posizioni Internal Error. What's wrong? Thank you;
{
int intCount=0;
int intPOS=0;
bool boolTerm=false;
while(boolTerm==false)
{
if(OrderSelect(intPOS,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) intCount++;
intPOS++;
}
else
boolTerm=true;
}
return(intCount);
}
[PHP]int Lotti(){
int Lotti;
int Posizioni=OTBM(MagicNumber);
switch (Posizioni)
{
case 0 : Lotti=0.1; break;
case 1 : Lotti=0.2; break;
case 2 : Lotti=0.4; break;
case 3 : Lotti=0.8; break;
case 4 : Lotti=1.6; break;
case 5 : Lotti=3.2; break;
case 6 : Lotti=6.4; break;
case 7 : Lotti=12.8; break;
}
return(Lotti);
}Ciao, -.-"
Non trovo pace con questi codici eheheh.
Ho un problema con una funzione che deve darmi come risultato il profitto di tutti gli ordini aperti ma penso che non funzioni perché la condizione non è mai stata rispettata. Di seguito il codice:
if(Profit()>=0.....[/PHP]
[PHP]double Profit()
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}dasio
Prova così :
if(Profit()>=0.....[/PHP]
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total-1; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}[/PHP]
Hi, -.-"
I do not find peace with these codes eheheh.
I have a problem with a function that have to result me the profit of all openorder but i think it's not work because the condition never been respected. Below the code:
[PHP].....
if(Profit()>=0.....[PHP]double Profit()
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}dasio
Prova così:
if(Profit()>=0.....[/PHP]
[PHP]double Profit()
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total-1; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}In questo modo controllo gli ordini che non sono aperti con magicnumber specificato, giusto? Ho bisogno di controllare l'ordine con un simbolo specifico e un numero magico. Non so se è importante ma ho trovato l'errore in strategy tester