Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 869
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
Mi dispiace, è un peccato ripetere la stessa cosa cento volte.
È quasi un mese che fisso come una pecora il cancello. Non capisco niente.
Il compito è quello di calcolare una media mobile minore con una media mobile di 13,
cioè calcolare un periodo di 12 sulla base di 13.
Salve, uno degli stimati guru vorrebbe controllare l'avvio del mio primo EA? È possibile andare avanti? Forse mi sono perso qualcosa? Sarei molto grato per qualsiasi specifica. Ho visto da qualche parte nel forum come rendere aperta una sola posizione, ma non l'ho copiato e ora non riesco a trovarlo. Aiuto, per favore.
Grazie!
// Versione di prova di Expert Advisor
//--------------------------------------------------------------------
//------Вводные данные:-----------------------------------------------------------
input double Lots = 0.1; //Lot
input int MovingPeriod =5; // periodo di calcolo МА
input int MovingShift =0; // spostamento MA
input int InpBandsPeriod=10; // periodo delle Bande di Bollinger
input int InpBandsShift=0; // spostamento delle bande di Bollinger
input double InpBandsDeviations=2.0; // deviazione delle Bande di Bollinger
input int K_Period=30; // %K periodo dello stocastico
input int D_Period=10; // %D periodo stocastico
input int Slowdawn =8; // rallentamento stocastico
colore di input clMainStoch =Yellow; // colore della linea stocastica principale
colore di ingresso clSignalStoch =Red; // colore della linea del segnale stocastico
// -----Dichiarare le variabili globali:------------------------------------------
double MA_0, MA_1, MA_2; // valore MA su 0, 1 e 2 barre
double MB_0, MB_1, MB_2; // Valore della media di Bollinger su 0, 1 e 2 barre
double ExtUpperBuffer[]; // valore della linea di Bollinger superiore
double ExtLowerBuffer[]; // Valore della linea di Bollinger inferiore
doppio Delta_0, Delta_1; // differenza tra i valori di Bollinger superiore e inferiore ...
// ...linee di Bollinger su 0 e 1 barre
double Yellow_0, Yellow_1, Yellow_2; // valore MAIN su 0, 1 e 2 barre
double Red_0, Red_1, Red_2; // valore SIGNAL su 0, 1 e 2 barre
//-------Поехали!----------------------------------------------------------------
int start() //funzione speciale start
{
/chiamata di funzione dell'indicatore MA
MA_0=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
MA_1=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1);
MA_2=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,2);
//feedback alla funzione Bande di Bollinger
MB_0=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBandsDeviations,PRICE_CLOSE,0);
MB_1=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBandsDeviations,PRICE_CLOSE,1);
MB_2=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBandsDeviations,PRICE_CLOSE,2);
Delta_0=iBands(ExtUpperBuffer[0]-ExtLowerBuffer[0]);
Delta_1=iBands(ExtUpperBuffer[1]-ExtLowerBuffer[1]);
//Chiama funzione stocastica
Giallo_0=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_MAIN,0);
Giallo_1=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_MAIN,1);
Giallo_2=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_MAIN,2);
Red_0=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_SIGNAL,0);
Red_1=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_SIGNAL,1);
Red_2=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_SIGNAL,2);
//-------Ситуации по Стохастику:-----------------------------------------------------
//Il mercato è ipercomprato
double MOB()=(Yellow_0>=80 && Red_0>=80); //Variabile locale
//Il mercato è ipervenduto.
double MOS()=(Yellow_0<=20 && Red_0<=20); //Variabile locale
/Il mercato è normale.
double MN()=(20<Yellow_0<80 && 20<Red_0<80); //Variabile locale
//situazione critica
double MC1()=(20<Yellow_0<80 && Red_0<=20); //Variabile locale
double MC2()=(20<Yellow_0<80 && Red_0>=80); //Variabile locale
double MC3()=(20<Red_0<80 && Yellow_0<=20); //Variabile locale
double MC4()=(20<Red_0<80 && Yellow_0>=80); //Variabile locale
//-------Example(my)order to open position-----------------------------------------------------
if (Delta_0 > Delta_1 && MOB()==true) //Il mercato è ipercomprato ma il delta si sta espandendo
{ se (MB_2 > MB_1 && MB_1 < MB_0) //Rottura di Bollinger inferiore
OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point); //aprire ordine di acquisto
Alert("GetLastError()); //Messaggio di un errore
Alert("Posizione aperta BAY con lotti("Lots"),prezzo("Ask")."); //Messaggio di acquisto
Inoltre, le posizioni BAY (così come Sell) possono essere aperte in condizioni diverse, e a seconda delle condizioni in cui la posizione è stata aperta (ad esempio BAY), ci saranno diverse condizioni di chiusura. (per esempio BAY), ci saranno diverse condizioni di chiusura.
Come posso tradurre questo in MKL?
Inoltre, le posizioni BAY (così come Sell) possono essere aperte in condizioni diverse, e a seconda delle condizioni in cui la posizione è stata aperta (ad esempio BAY), ci saranno diverse condizioni di chiusura. (per esempio BAY), ci saranno diverse condizioni di chiusura.
Come posso tradurre questo in MKL?
Selezioniamo l'ordine nel ciclo. Se è un Buy e tutti gli altri dati (simbolo, mago, qualsiasi cosa) soddisfano il criterio di doverlo chiudere a "condizioni di chiusura adeguate", allora lo chiudiamo se ci sono "condizioni di chiusura adeguate".
Per me è un po' vago, ma dopo qualche ricerca credo che capirò. La ringrazio molto per non essersi allontanato o aver fatto la morale dalle vette della conoscenza, come alcuni compagni del paese sovietico.
Ho capito come chiudere:
//-------Esempio (mio) di un ordine di apertura di una posizione con chiusura vincolante (per biglietto)-----------------------------------------------------
//Variabile locale che apre un ordine BAY (invece della linea 63)
int Ticket_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point))
//-------Quindi la chiusura per questo particolare ordine potrebbe essere la seguente:-----------------------------------------------------
if (Ticket_1()==true) //se l'ordine #1 è stato aperto, allora...
{ se (Giallo_0>Rosso_0 && (Giallo_0-Rosso_0)<(Giallo_1-Rosso_1)) //il giallo è superiore al rosso, contrazione(condizione)
{ if (MA_2 < MA_1 && MA_1 > MA_0);} //Rosso sopra quello centrale (condizione)
else (Yellow_0>Red_0 && (Yellow_0-Red_0)>(Yellow_1-Red_1)) //Yellow above red, expansion(condition)
{ if (MB_2 < MB_1 && MB_1 > MB_0);} //Rottura superiore di Bollinger (condizione)
bool Ans=OrderClose(Ticket,Lot,Bid,0); //...chiudere l'ordine (bloccovariabile)
Alert("Tentativo di chiudere l'ordine con Bid("Lots"),prezzo("Ask"). In attesa di risposta...");
if (Ans==true) // Ha funzionato :)
{
Alert ("Chiudi ordine BAY per lotto("Lotti"),Prezzo di chiusura("Offerta");
break; // Esci dal ciclo di chiusura della posizione
}
}
Si prega di dare un'analisi, bene anche sul post precedente. Scusa se sono testardo, ma vedi - sei l'unico che risponde... Grazie!
Per me è un po' vago, ma dopo aver scavato un po' credo che capirò. La ringrazio molto per non essersi allontanato o aver fatto la morale dalle vette della conoscenza, come alcuni compagni del paese sovietico.
Ho pensato di chiuderla in questo modo:
...Si prega di dare un'analisi, e anche sul post precedente. Scusa l'insistenza, ma vedi, sei l'unico che risponde... Grazie!
Beh, è un po' nebuloso, no?
1. dovete determinare il fatto che si verifica la condizione per chiudere l'ordine
2. Nel ciclo, si esaminano tutte le posizioni aperte e, quando si trova l'ordine di acquisto richiesto, lo si chiude.
Questo è un esempio di ciclo:
Cioè, per chiudere l'ordine Buy sul simbolo corrente (sul grafico in cui l'Expert Advisor è in esecuzione) e con un numero magico di 100500 (per esempio), si dovrebbe chiamare la funzione in questo modo
Non dovete scrivere il numero 100500, di solito il numero magico è già impostato nell'EA in una variabile, per esempio int Magic = 100500; Allora dovete scrivere Magic invece di 100500
Non ho scritto nulla nel ciclo in cui la posizione selezionata dovrebbe essere chiusa, poiché dovrebbe chiamare la funzione per chiudere l'ordine secondo il biglietto. Questo è di solito una chiamata di una funzione completa con codici di ritorno del server commerciale gestiti. Potete scrivere lì un semplice comando per chiudere l'ordine selezionato OrderClose() per controllare;
È molto più facile da leggere in questo modo. Mi dispiace.
È anche possibile modificare un vecchio post, per non creare duplicati ;)
È ancora possibile modificare un vecchio post per evitare duplicati ;)
C'è un po' di nebbia.
1) Determinare il fatto che si è verificata la condizione per chiudere l'ordine di acquisto
2. Nel ciclo, si esaminano tutte le posizioni aperte e, quando si trova l'ordine di acquisto richiesto, lo si chiude.
Questo è un esempio di ciclo:
Cioè, per chiudere l'ordine Buy sul simbolo corrente (sul grafico in cui l'Expert Advisor è in esecuzione) e con un numero magico di 100500 (per esempio), si dovrebbe chiamare la funzione in questo modo
Non dovete scrivere il numero 100500, di solito il numero magico è già impostato nell'EA in una variabile, per esempio int Magic = 100500; Allora dovete scrivere Magic invece di 100500
Non ho scritto nulla nel ciclo in cui la posizione selezionata dovrebbe essere chiusa, poiché dovrebbe chiamare la funzione per chiudere l'ordine secondo il biglietto. Questo è di solito una chiamata di una funzione completa con codici di ritorno del server commerciale gestiti. Potete scrivere lì un semplice comando per chiudere l'ordine selezionato OrderClose() per controllare;