![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ciao Mladen,
Ecco cosa dice il ciclo per quegli ordini pendenti in cui Multi_Indic_00 è un oscillatore e Up_Prime_00 è un livello di definizione.
//+--------------------------------------------------------------------+
//---- Controlla e chiudi se il tipo di ordine è Limite e la tendenza è cambiata.
if(OrderType()==OP_BUYLIMIT)
if(( Multi_Indic_00 ) <= (Up_Prime_00 ))
{
_OrderDelete=OrderDelete(OrderTicket());
}
if(OrderType()==OP_SELLLIMIT)
if(( Multi_Indic_00 ) >= ( Down_Prime_00 ))
{
_OrderDelete=OrderDelete(OrderTicket());
}
//+--------------------------------------------------------------------+
Beh, niente di speciale....
Buon trading.
Cordiali saluti.
Tomcat98Tomcat98
Quello che vorrei vedere è l'istruzione del ciclo for(). Se hai un'istruzione for come questa:
for (int i = 0; i < OrdersTotal(); i++)
allora alcuni ordini verranno persi se nel frattempo alcuni ordini sono stati chiusi o cancellati. D'altra parte, se il ciclo for() va come questo:
for (int i = OrdersTotal()-1; i >= 0; i--)
allora elaborerà tutti gli ordini
Mladen ,
Oh, capisco:
Ecco per il processo di chiusura:
"
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continua;
"
Tomcat98
Mladen ,
Oh, capisco:
Eccolo per il processo di chiusura:
"
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continua;
"
Tomcat98Tomcat98
Cambiate il ciclo in
for(int i=TotaleOrdini()-1;i>=0;i--)
e dovrebbe essere OK
Mladen,
Bingo!
Ora fa esattamente quello di cui avevo bisogno.
Grazie mille per il tuo grande aiuto.
"Alle persone non importa quanto sai finché non sanno quanto ti importa"
- Theodore Roosevelt
Cordialmente.
Tomcat98
Mladen,
Bingo!
Ora fa esattamente quello di cui avevo bisogno.
Grazie mille per il tuo grande aiuto.
"Alle persone non importa quanto sai finché non sanno quanto ti importa"
- Theodore Roosevelt
Cordialmente.
Tomcat98Codifica felice![](https://c.mql5.com/forextsd/smiles/smile.png)
Ciao Mladen, grazie per ogni cosa, ora funziona bene...
ora sono bloccato con un indicatore creato che non viene ricaricato così ogni volta che una candela si chiude devo ricaricare l'indicatore, puoi aiutarmi a risolvere questo problema? ecco una parte del codice (è un indicatore di tendenza basato su lacune semplice idea, grazie:
#property copyright "Copyright © 2014 Daniel Luchinger"
#proprietà link
#proprietà strict
#proprietà strict
#proprietà indicator_chart_window
#proprietà indicator_buffers 4
#Proprietà indicatore_colore1 clrLime
#proprietà indicator_color2 clrRed
#proprietà indicatore_colore3 clrMagenta
#proprietà indicatore_colore4 clrCyan
#define COMPRA 1
#define VENDERE 2
doppio Buy[],
Vendere[],
FirstBuy[],
FirstSell[];
int OnInit() {
SetIndexBuffer(0,FirstBuy);
SetIndexBuffer(1,FirstSell);
SetIndexBuffer(2,Buy);
SetIndexBuffer(3,Vendere);
for(int i=0; i<4; i++) {
SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}
SetIndexArrow (0,233);
SetIndexArrow (1,234);
SetIndexArrow (2,233);
SetIndexArrow (3,234);
return(INIT_SUCCEED);}
void OnDeinit(const int reason) {}
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[]
const double &open[], const double &high[], const double &low[]
const double &close[], const long &tick_volume[], const long &volume[],
const int &spread[]) {
int statico lastSignal=0;
for(int i=MathMin(rates_total-prev_calculated, rates_total-1); i>=0; i--) {
FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;
datetime when=Time;
if((High-Close)<0) {
if(lastSignal==SELL) {
FirstBuy=Close;
SoundAlert(when, "Buy");}
lastSignal=BUY;}
if((Low-Close)>0){
se(lastSignal==BUY) {
FirstSell=Close;
SoundAlert(when, "Sell");}
lastSignal=SELL;}
}
return(rates_total);}
void SoundAlert(datetime i, string dir) {
static datetime lastAlert=0;
if(lastAlert!=i) {
Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i));
Ciao Mladen, grazie di tutto, ora funziona bene...
ora sono bloccato con un indicatore creato che non viene ricaricato così ogni volta che una candela si chiude devo ricaricare l'indicatore, puoi aiutarmi a risolvere questo? qui è parte del codice (è un indicatore di tendenza basato su lacune semplice idea, grazie:
#property copyright "Copyright © 2014 Daniel Luchinger"
#proprietà link
#proprietà strict
#proprietà strict
#proprietà indicator_chart_window
#proprietà indicator_buffers 4
#Proprietà indicatore_colore1 clrLime
#proprietà indicator_color2 clrRed
#proprietà indicatore_colore3 clrMagenta
#proprietà indicatore_colore4 clrCyan
#define COMPRA 1
#define VENDERE 2
doppio Buy[],
Vendere[],
FirstBuy[],
FirstSell[];
int OnInit() {
SetIndexBuffer(0,FirstBuy);
SetIndexBuffer(1,FirstSell);
SetIndexBuffer(2,Buy);
SetIndexBuffer(3,Vendere);
for(int i=0; i<4; i++) {
SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}
SetIndexArrow (0,233);
SetIndexArrow (1,234);
SetIndexArrow (2,233);
SetIndexArrow (3,234);
return(INIT_SUCCEED);}
void OnDeinit(const int reason) {}
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[]
const double &open[], const double &high[], const double &low[]
const double &close[], const long &tick_volume[], const long &volume[],
const int &spread[]) {
int statico lastSignal=0;
for(int i=MathMin(rates_total-prev_calculated, rates_total-1); i>=0; i--) {
FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;
datetime when=Time;
if((High-Close)<0) {
if(lastSignal==SELL) {
FirstBuy=Close;
SoundAlert(when, "Buy");}
lastSignal=BUY;}
if((Low-Close)>0){
se(lastSignal==BUY) {
FirstSell=Close;
SoundAlert(when, "Sell");}
lastSignal=SELL;}
}
return(rates_total);}
void SoundAlert(datetime i, string dir) {
static datetime lastAlert=0;
if(lastAlert!=i) {
Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i)));
daniel1983
Prova in questo modo:
#property link ""
#property strict
#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 clrLime
#property indicator_color2 clrRed
#property indicator_color3 clrMagenta
#property indicator_color4 clrCyan
#define BUY 1
#define SELL 2
double Buy[],
Sell[],
FirstBuy[],
FirstSell[];
int OnInit() {
SetIndexBuffer(0,FirstBuy);
SetIndexBuffer(1,FirstSell);
SetIndexBuffer(2,Buy);
SetIndexBuffer(3,Sell);
for(int i=0; i<4; i++) {
SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}
SetIndexArrow (0,233);
SetIndexArrow (1,234);
SetIndexArrow (2,233);
SetIndexArrow (3,234);
return(INIT_SUCCEEDED);}
void OnDeinit(const int reason) {}
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],
const double &open[], const double &high[], const double &low[],
const double &close[], const long &tick_volume[], const long &volume[],
const int &spread[]) {
static int lastSignal=0;
for(int i=MathMin(rates_total-prev_calculated, rates_total-2); i>=0; i--)
{
FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;
datetime when=Time;
if((High-Close)<0) {
if(lastSignal==SELL) {
FirstBuy=Close;
SoundAlert(when,"Buy");}
lastSignal=BUY;}
if((Low-Close)>0){
if(lastSignal==BUY) {
FirstSell=Close;
SoundAlert(when,"Sell");}
lastSignal=SELL;}
}
return(rates_total);
}
void SoundAlert(datetime i, string dir) {
static datetime lastAlert=0;
if(lastAlert!=i) {
Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i)));
}
}
Ciao Mladen, grazie ma scrivendo il codice in questo modo, ci sono segnali mancanti, per favore dai un'occhiata ho fatto un'immagine che li confronta sul grafico giornaliero USDJPY:
Cosa può essere?
Ciao Mladen, grazie ma scrivendo il codice in questo modo, ci sono dei segnali mancanti, per favore dai un'occhiata ho fatto un'immagine che li confronta sul grafico giornaliero USDJPY:
![](https://c.mql5.com/forextsd/forum/146/missing_signals.png)
Cosa può essere?daniel1983
Nel tuo codice hai usato valori futuri (questi :
High-Close
Low-Close
Ho usato Close - che è un normale valore precedente. Cambialo in ma poi si ridisegnerà
Cari mrtools e mladen
Qualcuno può aiutarmi? Tom Demark Moving Average è un indicatore chiave all'interno della mia strategia, tuttavia, un allarme sarebbe molto utile per quando viene indicato un nuovo ripiano; sarei molto grato se un allarme potesse essere codificato nell'indicatore. In attesa della vostra gentile assistenza.
Molte grazie