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
Grazie Mladen per il codice ... Questo ha il doppio confronto macd e 50 crossover come hai spiegato nella logica precedente. Grazie in anticipo
macerina
La differenza è che nella versione grafica aspen il segnale secondario di entrata è un incrocio tra l'rsi e la sua linea di segnale, mentre nella versione metatrader il segnale secondario è un incrocio dell'rsi di una linea 50. La parte Macd è la stessa (si dovrebbe prendere il segnale a barre chiuse - questo è il modo in cui è fatto nella versione grafica di Aspen)
grazie per le informazioni mladen ... è possibile impostare l'opzione nello stesso indicatore per selezionare la linea 50 cross e la linea di segnale cross ...
Grazie in anticipo
sulaimoney Tutto è OK con queste procedure. Allego un semplice indicatore che mostra che tutto è a posto quando le chiamate a queste due procedure vengono eseguite una dopo l'altra. Controlla il resto del codice poiché l'errore non è in quelle due procedure
Ciao Mladen
Ho controllato il codice e ho trovato alcuni errori che ho sostituito.
Ora sto cercando di usare il valore di
doppio lastorderprice = 0;
E
int bscount = 0;
Come variabili in un ambito globale con l'ea in modo che possano essere chiamate da e.g. void NewOrder()
// OnEveryTick
void LastBuySellOrder() // Esegue il loop di tutti gli ordini aperti per selezionare l'ultimo ordine (acquisto/vendita) OnEveryTick
{
double lastorderprice = 0;
datetime lastTime = 0;
datetime closeTime = 0;
int lastTicket = -1; // Nessuno aperto.
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId
&&( OrderType() == OP_BUY || OrderType() == OP_SELL )
&& OrderOpenTime() >= lastTime && OrderCloseTime() == closeTime
&& OrderTicket() > lastTicket )
{
lastTime = OrderOpenTime();
lastorderprice = OrderOpenPrice();
closeTime = OrderCloseTime();
lastTicket = OrderTicket();
}
return(lastTicket);
}
else
Print("OrderSelect() error - ", ErrorDescription(GetLastError());
}
void PendingStopOrderCount()
{
int bscount = 0;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol())
se (OrderMagicNumber() == OrderId)
se (OrderType() == OP_BUYSTOP )
{
bscount++;
}
}
else
{
Print("OrderSend() error - ", ErrorDescription(GetLastError());
}
}
// Se esistono OpBuy o OpSell
void NewOrder()
{
se (bscount==0)
{
BuyStopPending();
}
}
CIAO
Questo indicatore è un repainter? Se sì, quando quante barre indietro?
xps_v8_oscillator.ex4xps_v8_oscillator.mq4
HI
Questo indicatore è un repainter? Se sì, quando quante barre indietro?
xps_v8_oscillator.ex4xps_v8_oscillator.mq4OK ma io uso questo sul grafico offline M2 :S Quindi non è normale Timeframe
OK ma io uso questo su grafico offline M2 :S Quindi non è normale Timeframe
Provatelo e lo vedrete voi stessi (usate qualcosa come autorefresh per forzare l'indicatore ad aggiornare tutte le barre da o semplicemente, quando si costruiscono abbastanza barre nuove, andate nei parametri, non cambiate nulla e cliccate su OK). Fate attenzione ai periodi in cui il trend cambia cosa farà.
Meglio di me che cerco di spiegare cosa c'è di sbagliato nel codice dei venti solari e di convincere qualcuno
Non posso cambiare il periodo solo posso vedere il codice sorgente, eccolo:
#proprietà indicator_separate_window
#proprietà indicatore_minimo 0
#proprietà indicatore_massimo 1
#proprietà indicator_buffers 3
#proprietà indicator_color2 C'72,49,255
#proprietà indicator_color3 C'255,49,72
#proprietà indicator_width2 6
#proprietà indicator_width3 6
int periodo;
extern bool alarm=false;
double ExtBuffer0[]
double ExtBuffer1[]
double ExtBuffer2[];
doppio alertBar;
doppio ultimo;
int init() {
//-----------------------------
switch ( Periodo() )
{
caso 1: periodo = 2880;break;
caso 5: periodo = 576;break;
caso 15: periodo = 192;break;
caso 30: periodo = 96;break;
caso 60: periodo = 48;break;
caso 240: periodo = 48;break;
caso 1440: periodo = 48;break;
caso 10080: periodo = 48;break;
default: periodo = 48;break;
}
//-----------------------------
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(2,DRAW_HISTOGRAM);
IndicatorDigits(Digits+1);
SetIndexBuffer(0,ExtBuffer0);
SetIndexBuffer(1,ExtBuffer1);
SetIndexBuffer(2,ExtBuffer2);
IndicatorShortName("");// X :-)");
SetIndexLabel(0, NULL);
SetIndexLabel(1, NULL);
SetIndexLabel(2, NULL);
return(0);
}
int deinit()
{
//----
ObjectDelete("XPS");
ObjectDelete("XPS2");
ObjectDelete("XPS3");
//----
return(0);
}
int start() {
int limit;
int counted_bars=IndicatorCounted();
double prev,current,old;
double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;
doppio prezzo;
double MinL=0;
doppio MaxH=0;
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<limite; i++)
{ MaxH = Alto;
MinL = Basso[Più basso(NULL,0,MODE_LOW,periodo,i)];
prezzo = (Alto+Basso)/2;
Valore = 0,33*2*((prezzo-MinL)/(MaxH-MinL)-0,5) + 0,67*Valore1;
Valore=MathMin(MathMax(Valore,-0.999),0.999);
ExtBuffer0=0.5*MathLog((1+Valore)/(1-Valore))+0.5*Pesce1;
Valore1=Valore;
Pesce1=ExtBuffer0;
}
bool up = TRUE;
for(i=limite-2; i>=0; i--)
{
current=ExtBuffer0;
prev=ExtBuffer0;
se (((current0))||(current<0)) up= false;
se (((current>0)&&(prev0)) up= true;
if(!up) {
ExtBuffer2=1;
ExtBuffer1=0;
if (allarme && i==0 && last != 2 && ExtBuffer1 == 0 && Bars>alertBar)
{
Allarme("OSC... Possibile tendenza al ribasso su ",Periodo()," ",Simbolo());
alertBar = Bars;last = 2;
}
}
else {
ExtBuffer1=1;
ExtBuffer2=0;
if (allarme && i==0 && last != 1 && ExtBuffer2 == 0 && Bars>alertBar)
{
Allarme("OSC... Possibile trend in salita su ",Periodo()," ",Simbolo());
alertBar = Bars;
last = 1;
}
}
}//Fine ciclo
ObjectDelete("XPS");
ObjectCreate("XPS", OBJ_LABEL, 2, 0, 0);
ObjectSetText("XPS","!XPS v8", 28, "Arial Black", C'46,46,46');
ObjectSet("XPS", OBJPROP_CORNER, 2);
ObjectSet("XPS", OBJPROP_BACK, 0);
ObjectSet("XPS", OBJPROP_XDISTANCE, 6);
ObjectSet("XPS", OBJPROP_YDISTANCE, 8);
ObjectDelete("XPS2");
ObjectCreate("XPS2", OBJ_LABEL, 2, 0, 0);
ObjectSetText("XPS2","!XPS v8", 28, "Arial Black", Silver);
ObjectSet("XPS2", OBJPROP_CORNER, 2);
ObjectSet("XPS2", OBJPROP_BACK, 0);
ObjectSet("XPS2", OBJPROP_XDISTANCE, 4);
ObjectSet("XPS2", OBJPROP_YDISTANCE, 10);
ObjectDelete("XPS3");
ObjectCreate("XPS3", OBJ_LABEL, 2, 0, 0);
ObjectSetText("XPS3", "Trade like a BOSS", 9, "Arial Black", Silver);
ObjectSet("XPS3", OBJPROP_CORNER, 2);
ObjectSet("XPS3", OBJPROP_BACK, 0);
ObjectSet("XPS3", OBJPROP_XDISTANCE, 7);
ObjectSet("XPS3", OBJPROP_YDISTANCE, 3);
return(0);
}
Quindi?
Non posso cambiare il periodo, posso solo vedere il codice sorgente, eccolo:
#proprietà indicator_separate_window
#proprietà indicator_minimum 0
#proprietà indicatore_massimo 1
#proprietà indicatore_buffer 3
#proprietà indicator_color2 C'72,49,255
#proprietà indicator_color3 C'255,49,72
#proprietà indicator_width2 6
#proprietà indicator_width3 6
int periodo;
extern bool alarm=false;
double ExtBuffer0[]
double ExtBuffer1[]
double ExtBuffer2[];
doppio alertBar;
doppio ultimo;
int init() {
//-----------------------------
switch ( Periodo() )
{
caso 1: periodo = 2880;break;
caso 5: periodo = 576;break;
caso 15: periodo = 192;break;
caso 30: periodo = 96;break;
caso 60: periodo = 48;break;
caso 240: periodo = 48;break;
caso 1440: periodo = 48;break;
caso 10080: periodo = 48;break;
default: periodo = 48;break;
}
//-----------------------------
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(2,DRAW_HISTOGRAM);
IndicatorDigits(Digits+1);
SetIndexBuffer(0,ExtBuffer0);
SetIndexBuffer(1,ExtBuffer1);
SetIndexBuffer(2,ExtBuffer2);
IndicatorShortName("");// X :-)");
SetIndexLabel(0, NULL);
SetIndexLabel(1, NULL);
SetIndexLabel(2, NULL);
return(0);
}
int deinit()
{
//----
ObjectDelete("XPS");
ObjectDelete("XPS2");
ObjectDelete("XPS3");
//----
return(0);
}
int start() {
int limit;
int counted_bars=IndicatorCounted();
double prev,current,old;
double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;
doppio prezzo;
double MinL=0;
doppio MaxH=0;
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<limite; i++)
{ MaxH = Alto;
MinL = Basso[Più basso(NULL,0,MODE_LOW,periodo,i)];
prezzo = (Alto+Basso)/2;
Valore = 0,33*2*((prezzo-MinL)/(MaxH-MinL)-0,5) + 0,67*Valore1;
Valore=MathMin(MathMax(Valore,-0.999),0.999);
ExtBuffer0=0.5*MathLog((1+Valore)/(1-Valore))+0.5*Pesce1;
Valore1=Valore;
Pesce1=ExtBuffer0;
}
bool up = TRUE;
for(i=limite-2; i>=0; i--)
{
current=ExtBuffer0;
prev=ExtBuffer0;
se (((current0))||(current<0)) up= false;
se (((current>0)&&(prev0)) up= true;
if(!up) {
ExtBuffer2=1;
ExtBuffer1=0;
if (allarme && i==0 && last != 2 && ExtBuffer1 == 0 && Bars>alertBar)
{
Allarme("OSC... Possibile tendenza al ribasso su ",Periodo()," ",Simbolo());
alertBar = Bars;last = 2;
}
}
else {
ExtBuffer1=1;
ExtBuffer2=0;
if (allarme && i==0 && last != 1 && ExtBuffer2 == 0 && Bars>alertBar)
{
Allarme("OSC... Possibile trend in salita su ",Periodo()," ",Simbolo());
alertBar = Bars;
last = 1;
}
}
}//Fine ciclo
ObjectDelete("XPS");
ObjectCreate("XPS", OBJ_LABEL, 2, 0, 0);
ObjectSetText("XPS","!XPS v8", 28, "Arial Black", C'46,46,46');
ObjectSet("XPS", OBJPROP_CORNER, 2);
ObjectSet("XPS", OBJPROP_BACK, 0);
ObjectSet("XPS", OBJPROP_XDISTANCE, 6);
ObjectSet("XPS", OBJPROP_YDISTANCE, 8);
ObjectDelete("XPS2");
ObjectCreate("XPS2", OBJ_LABEL, 2, 0, 0);
ObjectSetText("XPS2","!XPS v8", 28, "Arial Black", Silver);
ObjectSet("XPS2", OBJPROP_CORNER, 2);
ObjectSet("XPS2", OBJPROP_BACK, 0);
ObjectSet("XPS2", OBJPROP_XDISTANCE, 4);
ObjectSet("XPS2", OBJPROP_YDISTANCE, 10);
ObjectDelete("XPS3");
ObjectCreate("XPS3", OBJ_LABEL, 2, 0, 0);
ObjectSetText("XPS3", "Trade like a BOSS", 9, "Arial Black", Silver);
ObjectSet("XPS3", OBJPROP_CORNER, 2);
ObjectSet("XPS3", OBJPROP_BACK, 0);
ObjectSet("XPS3", OBJPROP_XDISTANCE, 7);
ObjectSet("XPS3", OBJPROP_YDISTANCE, 3);
return(0);
}
Quindi?Sta applicando il periodo 48 per qualsiasi time frame che non è un time frame standard (come i grafici offline "2 minuti")
Per le versioni dei venti solari per le quali è possibile cambiare il periodo di calcolo, vedere questo thread: https: //www.mql5.com/en/forum/179650
Saluti a voi guru, per favore aiutatemi a modificare questo script e a lasciare SOLO ordine, dimensione del lotto, acquisto/vendita. Possiedo già un EA che piazza automaticamente take profit/stop loss entrando così in conflitto con questo indy.
Questo script apre automaticamente qualsiasi numero di ordini di mercato specificati nel MENU in una volta sola, ma attualmente apre solo un ordine anche se si inseriscono 5 ordini. Per favore aiutatemi a risolvere questo ERRORE e ad eliminare completamente il take profit/stop loss dallo SCRIPT.
Vi benedico