Indicatori multi timeframe - pagina 1127

 
Jeaa:

Cari tutti... spero che stiate bene...

Ho imparato a programmare e ho fatto un semplice EA per determinare il valore basso nelle ultime 3 barre e aprire un ordine di acquisto... ma ho un problema, non ha messo l'ordine... Qualcuno può aiutarmi? Il programma ottiene il prezzo basso e mostra l'allarme, ma non mette l'ordine di acquisto...


Grazie in anticipo...

//--------------------------------------------------------------------
// NewBar_jeaa_Rev 2.mq4
//--------------------------------------------------------------------
#proprietà copyright "Jeaa"

extern int GV_CantidadBarras=3; // Cantidad de barras
extern int digits=5;
//--------------------------------------------------------------------
extern double Lots = 0.01;
extern double StopLoss = 100;
extern double TakeProfit = 100;
extern int Slippage = 3;


//--------------------------------------------------------------------
bool GV_Flag_NuevaBarra=false; // Flag de una nueva barra
//======================================================================

int start() // Funzione speciale start()
{
double Precio; // variabile che registra il prezzo minimo e massimo
//--------------------------------------------------------------------
Fun_NuevaBarra(); // Chiamata della funzione
if (GV_Flag_NuevaBarra==false) // Si no hay nueva barra.
return; // ..return
//=========================================================================

//int IndMax =ArrayMaximum(High,GV_CantidadBarras,1);// Indice de la barra del precio maximo
int IndMin =ArrayMinimum(Low, GV_CantidadBarras,1);// Indice della barra del prezzo minimo

Precio=Basso[IndMin];

int ticket=OrderSend(Symbol(),OP_BUY,Lots,Precio,Slippage,StopLoss,TakeProfit, "My orderrr",16384,0,Blue);

Alert(Symbol(),": Barras= ",GV_CantidadBarras, // Mostrar mensaje de precios max y min
", Min= ",DoubleToString(Precio,digits));

return;
}

void Fun_NuevaBarra() // Descripción de la Funcion que detecta ..
{ // .. una nuova barra
static datetime NewTime=0; // variabile che memorizza data e ora
GV_Flag_NuevaBarra=false; // Inicializa nueva barra a falso (no hay nueva barra)
if(NewTime!=Time[0]) // Si existe nueva barra el dato es distinto de cero.
{
NewTime=Time[0]; //.. y en ese caso se registra el hora y fecha de la..
GV_Flag_NuevaBarra=true; //nueva barra y se activa el flag que señaliza la...
//esistenza di una nuova barra
}
}

Che errore ottieni negli esperti o nella scheda giornale del terminale?
 
mladen:
Che errore ottieni negli esperti o nella scheda giornale del terminale?

Ciao mladen... Grazie per la tua risposta...

2016.09.06 11:42:06.700 NewBar_jeaa_Rev 2 USDJPY,M1: Allarme: USDJPY: Barre= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: Allarme: USDJPY: Barre= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: operazioni commerciali non consentite dalle impostazioni
2016.09.06 11:41:36.396 NewBar_jeaa_Rev 2 USDJPY,M1: inizializzato
2016.09.06 11:41:36.385 NewBar_jeaa_Rev 2 USDJPY,M1 ingressi: GV_CantidadBarras=3; digits=5; Lots=0.01; StopLoss=100.0; TakeProfit=100.0; Slippage=3;
2016.09.06 11:41:35.080 Esperto NewBar_jeaa_Rev 2 USDJPY,M1: caricato con successo


2016.09.06 12:57:08.587 '502630': ordine buy 0,01 USDJPY apertura a mercato sl: 50,000 tp: 50,000 fallito [S/L o T/P non valido]
2016.09.06 12:57:08.268 '502630': ordine acquistare a mercato 0,01 USDJPY sl: 50,000 tp: 50,000
2016.09.06 12:56:07.224 '502630': ordine acquistare 0,01 USDJPY apertura a mercato sl: 50,000 tp: 50,000 fallito [S/L o T/P non valido]
2016.09.06 12:56:06.921 '502630': ordine acquistare a mercato 0,01 USDJPY sl: 50,000 tp: 50,000
2016.09.06 12:56:04.221 Trading automatico attivato

 
Jeaa:

Ciao mladen... Grazie per la tua risposta...

2016.09.06 11:42:06.700 NewBar_jeaa_Rev 2 USDJPY,M1: Allarme: USDJPY: Barras= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: Allarme: USDJPY: Barras= 3, Min= 102.11600
2016.09.06 11:41:36.561 NewBar_jeaa_Rev 2 USDJPY,M1: operazioni commerciali non consentite dalle impostazioni
2016.09.06 11:41:36.396 NewBar_jeaa_Rev 2 USDJPY,M1: inizializzato
2016.09.06 11:41:36.385 NewBar_jeaa_Rev 2 USDJPY,M1 input: GV_CantidadBarras=3; digits=5; Lots=0.01; StopLoss=100.0; TakeProfit=100.0; Slippage=3;
2016.09.06 11:41:35.080 Expert NewBar_jeaa_Rev 2 USDJPY,M1: caricato con successo


2016.09.06 12:57:08.587 '502630': ordine acquista 0,01 USDJPY apertura a mercato sl: 50,000 tp: 50,000 fallito [S/L o T/P non valido]
2016.09.06 12:57:08.268 '502630': ordine acquista a mercato 0,01 USDJPY sl: 50,000 tp: 50,000
2016.09.06 12:56:07.224 '502630': ordine acquista 0,01 USDJPY apertura a mercato sl: 50.000 tp: 50.000 fallito [S/L o T/P non valido]
2016.09.06 12:56:06.921 '502630': ordine acquista a mercato 0,01 USDJPY sl: 50.000 tp: 50.000
2016.09.06 12:56:04.221 Trading automatico attivato

Come puoi vedere i tuoi stop loss e take profit sono sbagliati

Li stai calcolando male: stop loss e take profit sono calcolati come prezzo aperto dell'ordine +- stop loss e/o take profit (il + o - dipende dal tipo di ordine) ma non come 50 (come nel tuo caso) ma sarebbe prezzo aperto dell'ordine +- 50*_Point (per i punti) o 50*_Point*MathPow(10,MathMod(_Digits,2)) per i pip di distanza dal prezzo aperto dell'ordine

 
mladen:

Come puoi vedere il tuo stop loss e take profit sono sbagliati

Stai calcolando male: stop loss e take profit sono calcolati come prezzo di apertura dell'ordine +- stop loss e/o take profit (il + o - dipende dal tipo di ordine) ma non come 50 (come nel tuo caso) ma sarebbe prezzo di apertura dell'ordine +- 50*_Point (per i punti) o 50*_Point*MathPow(10,MathMod(_Digits,2)) per i pip di distanza dal prezzo di apertura dell'ordine

Caro mladen...


Grazie per il tuo aiuto... Ho cambiato per:


double SL=NormalizeDouble(Precio - StopLoss*Point,Digits);
double TP=NormalizeDouble(Precio + TakeProfit*Point,Digits);

int ticket=OrderSend(Symbol(),OP_BUY,Lots,Precio,Slippage,SL,TP, "Jeaa",0,0,Blue);


E funziona correttamente.


Cordiali saluti.


Jesús

 
Jeaa:

Caro mladen...


Grazie per il tuo aiuto... Ho cambiato per:


double SL=NormalizeDouble(Precio - StopLoss*Point,Digits);
double TP=NormalizeDouble(Precio + TakeProfit*Point,Digits);

int ticket=OrderSend(Symbol(),OP_BUY,Lots,Precio,Slippage,SL,TP, "Jeaa",0,0,Blue);


E funziona correttamente.


Cordiali saluti.


Jesús

Bene. Buon trading :)
 

Ciao ragazzi,

Potete aggiungere il time frame nel messaggio di avviso nel file allegato per favore?

grazie mille :)

 

Caro Mladen,

Mi scuso per aver postato questa richiesta qui perché non sono a conoscenza del posto giusto.

È possibile aggiungere un'opzione di solo simbolo corrente nell'indicatore allegato.

Se si potesse, sarebbe davvero di grande aiuto :)

Grazie.

Sameer

File:
 
DRADIS33:

Ciao ragazzi,

Potete aggiungere il time frame nel messaggio di avviso nel file allegato per favore?

grazie mille :)

Ecco una versione con questa aggiunta


 
sameermehta74:

Caro Mladen,

Mi scuso per aver postato questa richiesta qui perché non sono a conoscenza del posto giusto.

È possibile aggiungere un'opzione di solo simbolo corrente nell'indicatore allegato.

Se si potesse, sarebbe davvero di grande aiuto :)

Grazie.

Sameer

Hai una soluzione molto semplice. Aggiungi questa linea :

      StringReplace(Symbols,"current",_Symbol);

prima della linea 64, e poi nell'elenco dei simboli inserisci "current" in qualsiasi punto della stringa (senza il ""), e sarà sostituito con il simbolo corrente. Oppure usa l'allegato :) ( si applicano le stesse regole per il simbolo corrente: per avere solo il simbolo corrente visualizzato, inserire solo "current" nella lista dei simboli)

File:
 
mladen:

Avete una soluzione molto semplice. Aggiungete questa linea :

prima della linea 64, e poi nella lista dei simboli inserisci "current" in qualsiasi punto della stringa (senza il ""), e sarà sostituito con il simbolo corrente. Oppure usa l'allegato :) (si applicano le stesse regole per il simbolo corrente: per avere solo il simbolo corrente visualizzato, inserire solo "current" nella lista dei simboli)

Grazie :) Molto apprezzato.