[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 922
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
Come posso determinare il tipo di ordine aperto?
OrderType()
In realtà, dovresti iniziare con un libro di testo... :) O almeno usare F1 in MetaEditor
OP_BUY - posizione di acquisto,
OP_SELL - vendere la posizione,
OP_BUYLIMIT - ordine di acquisto in sospeso al raggiungimento di un livello specificato, il prezzo corrente è superiore al livello,
OP_BUYSTOP - ordine di acquisto in sospeso quando il livello specificato viene raggiunto, il prezzo corrente è inferiore al livello,
OP_SELLLIMIT - ordine di vendita in sospeso quando il livello specificato viene raggiunto, il prezzo corrente è inferiore al livello,
OP_SELLSTOP - ordine di vendita in sospeso quando il livello specificato viene raggiunto, il prezzo corrente è sopra il livello.
L'ordine deve essere preselezionato utilizzando la funzione OrderSelect().
Un valore in virgola mobile è un numero reale come il doppio
E invece delle cifre usate una variabile di tipo int
Per esempio int dg=MarketInfo ( Symbol(), MODE_DIGITS);
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;
bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell
//--------------------------------------------------------------- 3 --
// Учёт ордеров
for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;
if(Total!=0 || time==Time[1])return;
static int KolBars;
if (Close[0]-Open[0] > Point && Close[1]-Open[1] > Point && Bars == KolBars)
{
KolBars=Bars ; // запоминаем кол-во бар при которых совершались действия
}
// Торговые критерии
// Критерий откр. Buy
Opn_B=true;
//--------------------------------------------------------------- 7 --
if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}
}
Per favore aiutatemi, lo chiedo per la 3a volta. Un EA elementare, apre una posizione di acquisto alla comparsa di una nuova candela (a condizione che le 2 candele precedenti siano verdi), e chiude la posizione alla chiusura della candela su cui la posizione è stata aperta, o alla chiusura della candela successiva.
Quello che vedi sopra apre una posizione ogni volta che appare una nuova candela, senza reagire al criterio di apertura, ma non capisco come chiudere la posizione, non l'ho trovato nel tutorial o sui forum.
Il valore in virgola mobile è un numero reale di tipo doppio
E invece delle cifre usate una variabile di tipo int
Per esempio int dg=MarketInfo ( Symbol(), MODE_DIGITS);
Mi hanno scritto: "NormalizeDouble(), controlla il limite massimo/minimo del lotto, se cinque cifre - aumenta stop e profitto di 10 volte".
La documentazione dice: "Arrotondamento del numero in virgola mobile alla precisione specificata. I valori di StopLoss e TakeProfit calcolati, così come i prezzi di apertura degli ordini in sospeso devono essere normalizzati alla precisione, il cui valore è memorizzato nella variabile predefinita digits".
Non l'ho trovato nel libro di testo. Ho capito che devo normalizzare il prezzo corrente, StopLoss e TakeProfit con NormalizeDouble --- come devo normalizzarlo?
valore doppio -- invece di valore doppio posso usare ad esempio Prise
int digits -- e questa variabile dg è uguale a MarketInfo( Symbol(), MODE_DIGITS); ???
Mi è stato scritto: "NormalizeDouble(), controlla il limite massimo/minimo del lotto, se cinque cifre - aumenta stop e profitto di 10 volte".
La documentazione dice: "Arrotondamento del numero in virgola mobile alla precisione specificata. I valori di StopLoss e TakeProfit calcolati, così come i prezzi di apertura degli ordini in sospeso devono essere normalizzati alla precisione, il cui valore è memorizzato nella variabile predefinita Digits".
Non l'ho trovato nel tutorial, ho capito che devo usare NormalizeDouble --- per normalizzare il prezzo corrente, StopLoss e TakeProfit? Se sì, come esattamente?
valore doppio -- al suo posto, posso impostare ad esempio Prise
int digits -- e questa variabile dg è uguale a MarketInfo( Symbol(), MODE_DIGITS); ???
int StopLoss=50; // StopLoss in pip
int TakeProfit=150; // TakeProfit in pip
intOrderDistance=50; // distanza dell'ordine in sospeso in punti
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int pt=MarketInfo(Symbol(), MODE_POINT); // Dimensione del punto nella valuta della quotazione
int dg=MarketInfo(Symbol(),MODE_DIGITS); // Numero di cifre dopo il punto decimale nel prezzo del simbolo
int StLev=MarketInfo(Symbol(),MODE_STOPLEVEL); // Livello minimo consentito di stop loss/stake profit in punti
double pa=MarketInfo(Symbol(), MODE_ASK); // Prezzo richiesto
double pb=MarketInfo(Symbol(), MODE_BID); // Prezzo di offerta
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
double slB=NormalizeDouble(pa-StopLoss*pt, dg); // normalizza il livello di prezzo dello StopLoss per la posizione Buy
double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // normalizza il livello di prezzo TakeProfit per la posizione Bid
double slS=NormalizeDouble(pb+StopLoss*pt, dg); // normalizza il livello di prezzo StopLoss per la posizione Sell
double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // normalizza il livello di prezzo TakeProfit per la posizione Sell
doubleB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // normalizza il livello di prezzo per piazzare un ordine pendente Buy
double SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // normalizza il prezzo per piazzare un ordine pendente Sell
double slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // normalizza il livello di prezzo dello StopLoss per un ordine di acquisto pendente
double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // normalizza il livello di prezzo di TakeProfit dell'ordine di acquisto pendente
double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // normalizza il livello di prezzo dello StopLoss per l'ordine di vendita pendente
double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // Normalizza il livello di prezzo di TakeProfit dell'ordine di vendita pendente
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Capirlo... :)
E non dimenticare lo StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);
Controllate la distanza minima per impostare le fermate e i prelievi in modo che non sia inferiore a questo valore
int StopLoss=50; // StopLoss in punti
int TakeProfit=150; // TakeProfit in punti
intOrderDistance=50; // distanza dell'ordine in sospeso in punti
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int pt=MarketInfo(Symbol(), MODE_POINT); // Dimensione del punto nella valuta della quotazione
int dg=MarketInfo(Symbol(),MODE_DIGITS); // Numero di cifre dopo il punto decimale nel prezzo del simbolo
int StLev=MarketInfo(Symbol(),MODE_STOPLEVEL); // Livello minimo consentito di stop loss/stake profit in punti
double pa=MarketInfo(Symbol(), MODE_ASK); // Prezzo richiesto
double pb=MarketInfo(Symbol(), MODE_BID); // Prezzo di offerta
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
double slB=NormalizeDouble(pa-StopLoss*pt, dg); // normalizza il livello di prezzo dello StopLoss per la posizione Buy
double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // normalizza il livello di prezzo TakeProfit per la posizione Bid
double slS=NormalizeDouble(pb+StopLoss*pt, dg); // normalizza il livello di prezzo dello StopLoss per la posizione Sell
double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // normalizza il livello di prezzo TakeProfit per la posizione Sell
doubleB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // normalizza il livello di prezzo per piazzare un ordine pendente Buy
double SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // normalizza il prezzo per piazzare un ordine pendente Sell
double slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // normalizza il livello di prezzo dello StopLoss per un ordine di acquisto pendente
double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // normalizza il livello di prezzo di TakeProfit dell'ordine di acquisto pendente
double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // normalizza il livello di prezzo dello StopLoss per l'ordine di vendita pendente
double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // Normalizza il livello di prezzo di TakeProfit dell'ordine di vendita pendente
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Capirlo... :)
E non dimenticate lo StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);
Controllate la distanza minima per impostare le fermate e i prelievi in modo che non sia inferiore a questo valore
Grazie mille!!! Ci darò un'occhiata! )
C'è una notifica sonora, c'è una voce di registro, ma la finestra fluttuante non si apre.
Ho pulito il terminale, ricompilato tutto. quale potrebbe essere la ragione?
Come posso creare una funzione e chiamarla?
Per l'ennesima volta, leggere un libro di testo, studiare il materiale... :)