Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1003
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
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 )
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 )
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!
Questa è la condizione per attraversare il livello 50 dal basso verso l'alto.
Questa è la condizione per attraversare il livello 50 dal basso verso l'alto.
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.
}