Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1003

 
 

Per favore, consigliate come implementare quanto segue:

Ci sono linee personalizzate sul grafico, che ci sia un numero "n" di esse. Come ottenere il valore del prezzo quando il prezzo si avvicina a una delle linee?

Grazie in anticipo!

 

Ciao a tutti ) per favore aiutatemi - L'obiettivo è (se il prezzo è sopra la "linea" (100 pips) allora "compra" ) ) come esprimerlo (il prezzo è superiore di 100 pip da qualsiasi valore) e anche questa domanda come conoscere il prezzo della media mobile al momento?

grazie in anticipo )

 
Tema97:

Ciao a tutti ) per favore aiutatemi - L'obiettivo è (se il prezzo è sopra la "linea" (100 pips) allora "compra" ) ) come esprimerlo (il prezzo è superiore di 100 pip da qualsiasi valore) e anche questa domanda come conoscere il prezzo della media mobile al momento?

grazie in anticipo )

Tema, leggi la documentazione, iMa è descritto lì così come gli oggetti grafici. C'è una funzione ObjectGetDouble(con i parametri corrispondenti) per ottenere il prezzo di una linea
 

Si prega di consigliare a un nuovo arrivato come evitare di riaprire un ordine, dopo che è stato chiuso, mantenendo le condizioni commerciali di apertura.

Per esempio: se lo stocastico incrocia il livello 50 verso l'alto, aprite Buy. Chiudere sull'inversione dello stocastico, o quando raggiunge il livello 80 o su Take Profit. Ma le condizioni commerciali per aprire sono conservate! Cioè lo stocastico rimane sopra 50 e l'acquisto è aperto di nuovo!

double S_1=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,0);

double S_2=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,1);

se(S_1>50)

{

Opn_B=true;

}

se(S_1<S_2||S_1>80)

{

Cls_B=true;

}

Inserisco i criteri di trading in un semplice schema di Expert Advisor, che è presentato nel tutorial MQL. Per favore, consigliate quale funzione usare per evitare questo problema. Grazie!

 
if(S_1 > 50 && S_2 < 50)

Questa è la condizione per attraversare il livello 50 dal basso verso l'alto.

 
AlexeyVik:

Questa è la condizione per attraversare il livello 50 dal basso verso l'alto.

Grazie mille! Ora farò una prova.
 
Come faccio a "staccare" un indicatore (o EA) "allegato" da un grafico senza chiudere quel grafico?
 
È possibile mettere un indicatore AccountEquity() che funzioni in tempo reale sul grafico? Dove posso trovarlo?
 

Salve, potreste per favore consigliarmi? Sto cambiando i criteri di trading nell'Expert Advisor presentato nel tutorial MQL4. Quando cerco di impostare uno stop loss su Buy, il programma dà errore 130: stop sbagliato. Per favore, spiega perché?

// Valori numerici per M15

extern double StopLoss =0; // SL per l'ordine aperto

extern double TakeProfit =0; // TP per l'ordine aperto

extern int K = 5;

extern int D = 3;

extern int lento = 3;

extern int price_field = 0;


extern int Level_1 = 80; // livello stocastico

extern int Level_2 = 20;

extern inttern Period_MA_2 = 31; // MA Period 2

extern double Rastvor =28.0; // Distanza tra MA

extern double Lots =0.01; // 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

K_level,

Totale, // Numero di ordini nella finestra

Tip=-1, // Tipo di ordine selezionato (B=0,S=1)

Biglietto; // Numero d'ordine

doppio S_1,

S_2,

MA_1_t, // valore MA_1_t. MA_1 valore corrente

MA_2_t, // Valore. MA_2 current MA_2_t value // Numero di lotti selezionati in ordine

Lotti, //Lotti Quantità 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, // Criterio 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 dell'ordine

{

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

S_1=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,0);


S_2=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,1);


se(S_1 > 50 && S_2 < 50)


{


Opn_B=true;


}


se(S_1<S_2||(S_1 < 80 && S_2 > 80))


{


Cls_B=true;


}

se(S_1 < 50 && S_2 > 50)


{


Opn_S=true;


}


se(S_1>S_2||(S_1 > 20 && S_2 < 20))


{


Cls_S=true;


}

//--------------------------------------------------------------- 6 --

// Chiudere gli ordini

while(true) // Chiudere il ciclo degli ordini.

{

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); // Dimensione del cambio di passo

if (Lots > 0) // Se i lotti sono specificati

Lts =Lots; // lavoriamo con loro

else // % di fondi liberi

Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;// Per aprire

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 --

//Apertura degli ordini

while(true) //Ordine di chiusura del ciclo.

{

if (Total==0 && Opn_B==true) // Nessun ordine aperto

{ //open Criterio di acquisto.

RefreshRates(); // Aggiorna i dati

Alert("Cercando di aprire Buy. In attesa di risposta...");

Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,StopLoss,TakeProfit);//open 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

Alert("Tentativo di aprire Vendere. In attesa di risposta...");

Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,StopLoss,TakeProfit);//Open Sel.

if (Ticket > 0) // Ha funzionato :)

{

Avviso ("Ordine di vendita aperto",Biglietto;)

return; //Esci dall'ordine

}

if (Fun_Error(GetLastError())==1) // Gestione degli errori

continuare; // riprovare

return; // Esci da start()

}

break; // Esci mentre

}

//--------------------------------------------------------------- 9 --

return; //uscita da start()

}


//-------------------------------------------------------------- 10 --

int Fun_Error(int Errore) // Gestione degli errori fie

{

interruttore(Errore)

{ // Errori insormontabili.

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); // Esci 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.

}

Motivazione: