È necessario numerare separatamente i frattali superiori e inferiori. Nei parametri della funzione, specificate il tipo UPPER o LOWER e il numero frattale. A proposito, se si numerassero separatamente le pieghe superiori e inferiori quando si cercano i punti di inflessione a zig zag, sarebbe più comodo da usare.
kombat. Non sono d'accordo con questa opzione. Il fatto è che proprio quando ci sono due frattali sulla stessa barra, è un segno della nota figura "lente", talvolta chiamata "diamante". Pertanto questa cifra può essere pescata nell'Expert Advisor da questo segno.
Domanda a Docs e Igor = È possibile costruire l'indicatore "Profitto" o "Fondi" come una linea continua dal tempo (di diversi Т\F) in una finestra separata dal tempo (significato - controllo della performance del portafoglio in dinamica)... Purtroppo, c'è un indicatore sul sito di Igor, ma è sotto forma di una tabella e statico ... (o forse c'è uno - dammi un link) ....
khorosh писал(а)>> kombat. Non sono d'accordo con questa opzione. Il fatto è che proprio quando ci sono due frattali su una barra, è un segno della nota figura "lente", talvolta chiamata "diamante". Pertanto questa cifra può essere pescata nell'Expert Advisor da questo segno.
Per la definizione SÌ, ma per la numerazione, che è ciò di cui si tratta...
nuj >> : Domanda a Docs e Igor = È possibile costruire un indicatore "Profitto" o "Fondi" come una linea continua dal tempo (di diversi Т\F) in una finestra separata dal tempo (significato - controllo della performance del portafoglio in dinamica)... Purtroppo, c'è un indicatore sul sito di Igor, ma è sotto forma di una tabella e statico ... (o forse c'è uno - dammi un link) ....
bool Work=true; // Expert Advisor funzionerà. string Symb; // Nome dello strumento finanziario //--------------------------------------------------------------- 2 -- int start() { int Totale, // Numero di ordini nella finestra Tip=-1, // Tipo di ordine selezionato (B=0,S=1) Biglietto; // Numero d'ordine doppio MA_1_t, // Valore. MA_1 valore corrente MA_2_t, // valore MA_2_t. MA_2_t valore corrente, // valore MA_2_t. Lotto, //Numero del lotto nell'ordine attualmente selezionato Lts, //Numero di lotti in un ordine aperto Min_Lot, // Numero minimo di lotti Passo, // Passo della modifica della dimensione del lotto Libero, // Fondi correnti liberi One_Lot, // Valore di un lotto Prezzo, // Prezzo dell'ordine selezionato SL, // prezzo SL dell'ordine selezionato TP; // TP dell'ordine selezionato bool Ans =false, // risposta del server dopo la chiusura Cls_B=false, // Criteri di chiusura di Buy Cls_S=false, // Criterio di chiusura Vendi Opn_B=false, // Criterio di apertura di Buy Opn__S=false; // criterio di apertura di Sell //--------------------------------------------------------------- 3 -- //Preelaborazione if(Bars < Period_MA_2) // Non ci sono abbastanza barre { Alert("Non ci sono abbastanza barre nella finestra, l'Expert Advisor non funziona"); return; // Esci da start() } if(Work==false) // Errore critico. { Alert("Errore critico. Expert Advisor non funziona"); return; // Esci da start() } //--------------------------------------------------------------- 4 -- // Conteggio degli ordini Symb=Symbol(); // Nome dello strumento finanziario. Total=0; // Numero di ordini for(int i=1; i<=OrdersTotal(); i++) // ciclo degli ordini { if(OrderSelect(i-1,SELECT_BY_POS)==true) // Se { // Analisi dell'ordine: if (OrderSymbol()!=Symb)continue; // Non è il nostro strumento finanziario if (OrderType()>1) // Abbiamo un ordine in sospeso { Alert("Ordine in sospeso rilevato. Expert Advisor non funziona;) return; // Exit() } Totale++; // Contatore degli ordini di mercato if (Totale>1) // Non più di un ordine { Alert("Diversi ordini di mercato. L'Expert Advisor non funziona;) return; // Exit() } Ticket=OrderTicket(); // Numero d'ordine selezionato. Tip =OrderType(); // Tipo di ordine selezionato. Price =OrderOpenPrice(); // Prezzo dell'ordine selezionato. SL =OrderStopLoss(); // SL dell'ordine selezionato. TP =OrderTakeProfit(); // TP dell'ordine selezionato. Lot =OrderLots(); // Numero di lotti } } //--------------------------------------------------------------- 5 -- // Criteri commerciali MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_LWMA,PRICE_TYPICAL,0); // MA_1 MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_LWMA,PRICE_TYPICAL,0); // MA_2
se (MA_1_t > MA_2_t + Rastvor*Point) // se la differenza tra { // ...MA1 e 2 è grande Opn_B=true; // Aprire il criterio di acquisto Cls_S=true; // Chiudere il criterio Vendere } if (MA_1_t < MA_2_t - Rastvor*Point) // Se la differenza tra { // ...MA_1 e 2 è grande Opn_S=true; //aprire il criterio di vendita Cls_B=true; //Criteri di clic Compra } //--------------------------------------------------------------- 6 -- // Chiudere gli ordini while(true) //Ordine di chiusura del ciclo. { if (Tip==0 && Cls_B==true) //Open Buy order. { //c'è un criterio di chiusura Alert("Cercando di chiudere l'acquisto ",Ticket,";) RefreshRates(); // Aggiorna i dati Ans=OrderClose(Ticket,Lot,Bid,2); // Chiudi Acquisto if (Ans==true) // Ha funzionato :) { Avviso ("Ordine di acquisto chiuso",Biglietto;) break; // Esci dal ciclo di chiusura } if (Fun_Error(GetLastError())==1) // Gestione degli errori continuare; // riprovare return; // Esci da start() }
if (Tip==1 && Cls_S==true) // Ordine di vendita aperto. { // c'è un criterio di chiusura Avviso("Tentativo di chiusura della vendita ",Biglietto,";) RefreshRates(); // Aggiorna i dati Ans=OrderClose(Ticket,Lot,Ask,2); // Chiudi Vendi if (Ans==true) // Ha funzionato :) { Avviso ("Ordine di vendita chiuso",Biglietto;) break; // Esci dal ciclo di chiusura } if (Fun_Error(GetLastError())==1) // Gestione degli errori continuare; // riprovare return; // Esci da start() } break; // Esci mentre } //--------------------------------------------------------------- 7 -- // Ordinare i valori RefreshRates(); // Aggiorna i dati Min_Lot=MarketInfo(Symb,MODE_MINLOT); // Numero minimo di lotti Libero =AccountFreeMargin(); // libera i fondi One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Valore di 1 lotto Step =MarketInfo(Symb,MODE_LOTSTEP); // Cambio di passo delle dimensioni
if (Lots > 0) // Se i lotti sono specificati Lts =Lotti; // lavoriamo con loro else // % di fondi liberi Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;// Per l'apertura
if(Lts < Min_Lot) Lts=Min_Lot; // Non meno di Min_Lot; // Non meno di Min_Lot if(Lts*One_Lot > Free) // Lotti più cari di Free { Alert(" Non abbastanza soldi ", Lts," lotti); return; // Esci da start() } //--------------------------------------------------------------- 8 -- /Ordini aperti se (NumberOfBarOpenLastPos()>0){ while(true) // Chiudere il ciclo degli ordini. { if (Total==0 && Opn_B==true) // Nessun ordine aperto { //open Criterio di acquisto. RefreshRates(); // Aggiorna i dati SL=Bid - New_Stop(StopLoss)*Point; // Calcolo dello SL aperto TP=Bid + New_Stop(TakeProfit)*Point; // Calcolo del TP aperto. Alert("Tentativo di aprire Buy. In attesa di risposta..."); Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//aprire Buy if (Ticket > 0) // ha funzionato :) { Avviso ("Ordine di acquisto aperto",Biglietto;) return; //Esci dall'ordine } if (Fun_Error(GetLastError())==1) // Gestione degli errori continuare; // riprovare return; // Esci da start() } if (Total==0 && Opn_S==true) // nessun ordine aperto { //aprire il criterio di vendita. RefreshRates(); // Aggiorna i dati SL=Ask + New_Stop(StopLoss)*Point; // Calcolo di SL aperto. TP=Ask - New_Stop(TakeProfit)*Point; // Calcolo del TP aperto. Alert("Tentativo di aprire Vendere. In attesa di risposta..."); Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);//Open Sel. if (Ticket > 0) // Ha funzionato :) { Avviso ("Ordine di vendita aperto ",Biglietto;) return; // Esci da start() } if (Fun_Error(GetLastError())==1) // Gestione degli errori continuare; // riprovare return; // Esci da start() } break; // Esci mentre } } //--------------------------------------------------------------- 9 -- return; //exit while; //start() } //-------------------------------------------------------------- 10 --
//+----------------------------------------------------------------------------+ //| Autore: Kim Igor V. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Versione : 19.02.2008 | //| Descrizione: restituisce il numero di barra dell'ultima posizione aperta o -1. //+----------------------------------------------------------------------------+ //| Parametri: | //| sy - nome dello strumento ("" o NULL - simbolo corrente) | //| tf - timeframe ( 0 - timeframe corrente) | //| op - operazione ( -1 - qualsiasi posizione) | //| mn - MagicNumber ( -1 - qualsiasi numero magico) | //+----------------------------------------------------------------------------+ intOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) { datetime t; int i, k=OrdersTotal();
if (sy=="" || sy=="0") sy=Symbol(); per (i=0; i<k; i++) { se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { se (OrderSymbol()==sy) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { se (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { se (t<OrderOpenTime()) t=OrderOpenTime(); } } } } } } return(iBarShift(sy, tf, t, True)) }
int Fun_Error(int Error) // Funzione di gestione degli errori { interruttore(Errore) { // Errori che possono essere evitati. caso 4: Avviso("Il server commerciale è occupato. Riprova..."); Sleep(3000); // Soluzione semplice. return(1); // Esci dalla funzione. caso 135:Alert("Prezzo cambiato. Riprova..."); RefreshRates(); // Aggiorna i dati. return(1); // Uscire dalla funzione. caso 136:Alert("Nessun prezzo. In attesa di un nuovo tick..."); while(RefreshRates()==false) // Effettua un nuovo tick Sleep(1); // Ritardo nel ciclo return(1); // Esci dalla funzione caso 137:Alert("Broker is busy. Try again..."); Sleep(3000); // Soluzione semplice. return(1); // Uscire dalla funzione. caso 146:Alert("Il sottosistema di trading è occupato. Riprova..."); Sleep(500); // Semplice decisione return(1); // Esci dalla funzione // Errori critici caso 2: Avviso("Errore generale;) return(0); // Esci dalla funzione. caso 5: Alert("Versione più vecchia del terminale"); Lavoro=falso; // Non funziona più return(0); // Esci dalla funzione caso 64: Avviso("Account bloccato."); Lavoro=falso; // Non funziona più return(0); // Esci dalla funzione caso 133:Alert("Commercio proibito."); return(0); // Esci dalla funzione caso 134:Alert("Non ci sono abbastanza soldi per eseguire la transazione."); return(0); // Esci dalla funzione default: Alert("Si è verificato un errore ",Error); // Altre opzioni return(0); // Esci dalla funzione } } //-------------------------------------------------------------- 11 -- int New_Stop(int Parametr) // Controlla lo stop-prick. { int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Distanza minima if (Parametr<Min_Dist) // Se meno del consentito. { Parametr=Min_Dist; // Imposta la tolleranza. Avviso("Distanza di arresto aumentata;) } return(Parametr); // Valore di ritorno. } //-------------------------------------------------------------- 12 --
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Sì, non c'è... Perché non riuscivo a decidere come numerare tali frattali:
E se qualcosa del genere non contasse come una formazione frattale? Un'opzione?
kombat. Non sono d'accordo con questa opzione. Il fatto è che proprio quando ci sono due frattali su una barra, è un segno della nota figura "lente", talvolta chiamata "diamante". Pertanto questa cifra può essere pescata nell'Expert Advisor da questo segno.
Per la definizione SÌ, ma per la numerazione, che è ciò di cui si tratta...
Domanda a Docs e Igor = È possibile costruire un indicatore "Profitto" o "Fondi" come una linea continua dal tempo (di diversi Т\F) in una finestra separata dal tempo (significato - controllo della performance del portafoglio in dinamica)... Purtroppo, c'è un indicatore sul sito di Igor, ma è sotto forma di una tabella e statico ... (o forse c'è uno - dammi un link) ....
cerca nel forum
e chiedere se avete un consulente che:
1. raccoglie tutte le posizioni aperte.
2. imposta uno stop a zero perdite.
3.trawl
4. chiude le posizioni in tre livelli. per esempio:
Lotto uguale a 1.
Exit 1 - si chiude il 50% del lotto, ad esempio 30 pip dal prezzo di apertura.
2 way out - il 30% del lotto è chiuso, per esempio 70 punti dal prezzo aperto.
3 vie d'uscita - il 20% del lotto è chiuso, per esempio sull'incrocio MA.
Grazie.
Buon pomeriggio, Potreste dirmi come implementare la funzione NumberOfBarOpenLastPos in questo semplice Expert Advisor,
in modo che un ordine sia attivato una volta per barra... Ho messo la funzione nel codice, ma non funziona niente...
//--------------------------------------------------------------------
// tradingexpert.mq4
//
//--------------------------------------------------------------------
#property copyright "Copyright © Book, 2007"
#proprietà link "http://AutoGraf.dp.ua"
//--------------------------------------------------------------- 1 --
// Valori numerici per M15
extern double StopLoss =200; // SL per l'ordine aperto
extern double TakeProfit =10; // TP per l'ordine aperto
extern intern Period_MA_1=11; // Periodo MA 1
extern int Period_MA_2=31; // Periodo MA 2.
extern double Rastvor =28.0; // Distanza tra le MA.
extern double Lots =0.1; // Numero fisso di lotti.
extern double Prots =0.07; // Percentuale di fondi liberi
bool Work=true; // Expert Advisor funzionerà.
string Symb; // Nome dello strumento finanziario
//--------------------------------------------------------------- 2 --
int start()
{
int
Totale, // Numero di ordini nella finestra
Tip=-1, // Tipo di ordine selezionato (B=0,S=1)
Biglietto; // Numero d'ordine
doppio
MA_1_t, // Valore. MA_1 valore corrente
MA_2_t, // valore MA_2_t. MA_2_t valore corrente, // valore MA_2_t.
Lotto, //Numero del lotto nell'ordine attualmente selezionato
Lts, //Numero di lotti in un ordine aperto
Min_Lot, // Numero minimo di lotti
Passo, // Passo della modifica della dimensione del lotto
Libero, // Fondi correnti liberi
One_Lot, // Valore di un lotto
Prezzo, // Prezzo dell'ordine selezionato
SL, // prezzo SL dell'ordine selezionato
TP; // TP dell'ordine selezionato
bool
Ans =false, // risposta del server dopo la chiusura
Cls_B=false, // Criteri di chiusura di Buy
Cls_S=false, // Criterio di chiusura Vendi
Opn_B=false, // Criterio di apertura di Buy
Opn__S=false; // criterio di apertura di Sell
//--------------------------------------------------------------- 3 --
//Preelaborazione
if(Bars < Period_MA_2) // Non ci sono abbastanza barre
{
Alert("Non ci sono abbastanza barre nella finestra, l'Expert Advisor non funziona");
return; // Esci da start()
}
if(Work==false) // Errore critico.
{
Alert("Errore critico. Expert Advisor non funziona");
return; // Esci da start()
}
//--------------------------------------------------------------- 4 --
// Conteggio degli ordini
Symb=Symbol(); // Nome dello strumento finanziario.
Total=0; // Numero di ordini
for(int i=1; i<=OrdersTotal(); i++) // ciclo degli ordini
{
if(OrderSelect(i-1,SELECT_BY_POS)==true) // Se
{ // Analisi dell'ordine:
if (OrderSymbol()!=Symb)continue; // Non è il nostro strumento finanziario
if (OrderType()>1) // Abbiamo un ordine in sospeso
{
Alert("Ordine in sospeso rilevato. Expert Advisor non funziona;)
return; // Exit()
}
Totale++; // Contatore degli ordini di mercato
if (Totale>1) // Non più di un ordine
{
Alert("Diversi ordini di mercato. L'Expert Advisor non funziona;)
return; // Exit()
}
Ticket=OrderTicket(); // Numero d'ordine selezionato.
Tip =OrderType(); // Tipo di ordine selezionato.
Price =OrderOpenPrice(); // Prezzo dell'ordine selezionato.
SL =OrderStopLoss(); // SL dell'ordine selezionato.
TP =OrderTakeProfit(); // TP dell'ordine selezionato.
Lot =OrderLots(); // Numero di lotti
}
}
//--------------------------------------------------------------- 5 --
// Criteri commerciali
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_LWMA,PRICE_TYPICAL,0); // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_LWMA,PRICE_TYPICAL,0); // MA_2
se (MA_1_t > MA_2_t + Rastvor*Point) // se la differenza tra
{ // ...MA1 e 2 è grande
Opn_B=true; // Aprire il criterio di acquisto
Cls_S=true; // Chiudere il criterio Vendere
}
if (MA_1_t < MA_2_t - Rastvor*Point) // Se la differenza tra
{ // ...MA_1 e 2 è grande
Opn_S=true; //aprire il criterio di vendita
Cls_B=true; //Criteri di clic Compra
}
//--------------------------------------------------------------- 6 --
// Chiudere gli ordini
while(true) //Ordine di chiusura del ciclo.
{
if (Tip==0 && Cls_B==true) //Open Buy order.
{ //c'è un criterio di chiusura
Alert("Cercando di chiudere l'acquisto ",Ticket,";)
RefreshRates(); // Aggiorna i dati
Ans=OrderClose(Ticket,Lot,Bid,2); // Chiudi Acquisto
if (Ans==true) // Ha funzionato :)
{
Avviso ("Ordine di acquisto chiuso",Biglietto;)
break; // Esci dal ciclo di chiusura
}
if (Fun_Error(GetLastError())==1) // Gestione degli errori
continuare; // riprovare
return; // Esci da start()
}
if (Tip==1 && Cls_S==true) // Ordine di vendita aperto.
{ // c'è un criterio di chiusura
Avviso("Tentativo di chiusura della vendita ",Biglietto,";)
RefreshRates(); // Aggiorna i dati
Ans=OrderClose(Ticket,Lot,Ask,2); // Chiudi Vendi
if (Ans==true) // Ha funzionato :)
{
Avviso ("Ordine di vendita chiuso",Biglietto;)
break; // Esci dal ciclo di chiusura
}
if (Fun_Error(GetLastError())==1) // Gestione degli errori
continuare; // riprovare
return; // Esci da start()
}
break; // Esci mentre
}
//--------------------------------------------------------------- 7 --
// Ordinare i valori
RefreshRates(); // Aggiorna i dati
Min_Lot=MarketInfo(Symb,MODE_MINLOT); // Numero minimo di lotti
Libero =AccountFreeMargin(); // libera i fondi
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Valore di 1 lotto
Step =MarketInfo(Symb,MODE_LOTSTEP); // Cambio di passo delle dimensioni
if (Lots > 0) // Se i lotti sono specificati
Lts =Lotti; // lavoriamo con loro
else // % di fondi liberi
Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;// Per l'apertura
if(Lts < Min_Lot) Lts=Min_Lot; // Non meno di Min_Lot; // Non meno di Min_Lot
if(Lts*One_Lot > Free) // Lotti più cari di Free
{
Alert(" Non abbastanza soldi ", Lts," lotti);
return; // Esci da start()
}
//--------------------------------------------------------------- 8 --
/Ordini aperti
se (NumberOfBarOpenLastPos()>0){
while(true) // Chiudere il ciclo degli ordini.
{
if (Total==0 && Opn_B==true) // Nessun ordine aperto
{ //open Criterio di acquisto.
RefreshRates(); // Aggiorna i dati
SL=Bid - New_Stop(StopLoss)*Point; // Calcolo dello SL aperto
TP=Bid + New_Stop(TakeProfit)*Point; // Calcolo del TP aperto.
Alert("Tentativo di aprire Buy. In attesa di risposta...");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//aprire Buy
if (Ticket > 0) // ha funzionato :)
{
Avviso ("Ordine di acquisto aperto",Biglietto;)
return; //Esci dall'ordine
}
if (Fun_Error(GetLastError())==1) // Gestione degli errori
continuare; // riprovare
return; // Esci da start()
}
if (Total==0 && Opn_S==true) // nessun ordine aperto
{ //aprire il criterio di vendita.
RefreshRates(); // Aggiorna i dati
SL=Ask + New_Stop(StopLoss)*Point; // Calcolo di SL aperto.
TP=Ask - New_Stop(TakeProfit)*Point; // Calcolo del TP aperto.
Alert("Tentativo di aprire Vendere. In attesa di risposta...");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);//Open Sel.
if (Ticket > 0) // Ha funzionato :)
{
Avviso ("Ordine di vendita aperto ",Biglietto;)
return; // Esci da start()
}
if (Fun_Error(GetLastError())==1) // Gestione degli errori
continuare; // riprovare
return; // Esci da start()
}
break; // Esci mentre
}
}
//--------------------------------------------------------------- 9 --
return; //exit while; //start()
}
//-------------------------------------------------------------- 10 --
//+----------------------------------------------------------------------------+
//| Autore: Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versione : 19.02.2008 |
//| Descrizione: restituisce il numero di barra dell'ultima posizione aperta o -1.
//+----------------------------------------------------------------------------+
//| Parametri: |
//| sy - nome dello strumento ("" o NULL - simbolo corrente) |
//| tf - timeframe ( 0 - timeframe corrente) |
//| op - operazione ( -1 - qualsiasi posizione) |
//| mn - MagicNumber ( -1 - qualsiasi numero magico) |
//+----------------------------------------------------------------------------+
intOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
datetime t;
int i, k=OrdersTotal();
if (sy=="" || sy=="0") sy=Symbol();
per (i=0; i<k; i++) {
se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
se (OrderSymbol()==sy) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
se (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
se (t<OrderOpenTime()) t=OrderOpenTime();
}
}
}
}
}
}
return(iBarShift(sy, tf, t, True))
}
int Fun_Error(int Error) // Funzione di gestione degli errori
{
interruttore(Errore)
{ // Errori che possono essere evitati.
caso 4: Avviso("Il server commerciale è occupato. Riprova...");
Sleep(3000); // Soluzione semplice.
return(1); // Esci dalla funzione.
caso 135:Alert("Prezzo cambiato. Riprova...");
RefreshRates(); // Aggiorna i dati.
return(1); // Uscire dalla funzione.
caso 136:Alert("Nessun prezzo. In attesa di un nuovo tick...");
while(RefreshRates()==false) // Effettua un nuovo tick
Sleep(1); // Ritardo nel ciclo
return(1); // Esci dalla funzione
caso 137:Alert("Broker is busy. Try again...");
Sleep(3000); // Soluzione semplice.
return(1); // Uscire dalla funzione.
caso 146:Alert("Il sottosistema di trading è occupato. Riprova...");
Sleep(500); // Semplice decisione
return(1); // Esci dalla funzione
// Errori critici
caso 2: Avviso("Errore generale;)
return(0); // Esci dalla funzione.
caso 5: Alert("Versione più vecchia del terminale");
Lavoro=falso; // Non funziona più
return(0); // Esci dalla funzione
caso 64: Avviso("Account bloccato.");
Lavoro=falso; // Non funziona più
return(0); // Esci dalla funzione
caso 133:Alert("Commercio proibito.");
return(0); // Esci dalla funzione
caso 134:Alert("Non ci sono abbastanza soldi per eseguire la transazione.");
return(0); // Esci dalla funzione
default: Alert("Si è verificato un errore ",Error); // Altre opzioni
return(0); // Esci dalla funzione
}
}
//-------------------------------------------------------------- 11 --
int New_Stop(int Parametr) // Controlla lo stop-prick.
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Distanza minima
if (Parametr<Min_Dist) // Se meno del consentito.
{
Parametr=Min_Dist; // Imposta la tolleranza.
Avviso("Distanza di arresto aumentata;)
}
return(Parametr); // Valore di ritorno.
}
//-------------------------------------------------------------- 12 --
// Apertura degli ordini
se (NumberOfBarOpenLastPos()>0)
La funzione restituisce più di 0 solo se è stata aperta una posizione, se non -1 allora segue...
se (NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)
{
}
Cambiata la condizione in if (NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)
Ancora non funziona, forse deve essere scritto da qualche altra parte nel codice?