[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 910
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
Victor, dai un'occhiata al tuo messaggio personale, per favore.
Visto
OrderSend() si attiva ad ogni tick (come ho capito). Per eliminare il problema, mettete una variabile prima della funzione di inizio, per esempio int H=0.
Più avanti il codice:
..........
se ( H==0)
{
OrderSend(bla bla bla);
}
H=1;
E non c'è bisogno dell'algebra. E OrdersTotal() è meglio non essere usato per limitare.
Capisco, funziona per me, voglio dire che devo aprire 1 ordine e non si apre al prossimo tick
Il secondo ordine, il secondo ordine è necessario solo quando il primo si chiude
Se non mi sbaglio, deve essere così?
int H=0;
int F=OrdiniTotali();
..........
se(F<1)
{
se ( H==0)
{
OrderSend(bla bla bla);
}
H=1;}
Se non mi sbaglio, deve essere così?
int H=0;
int F=OrdiniTotali();
..........
se(F<1)
{
se ( H==0)
{
OrderSend(bla bla bla);
}
H=1;}
è comprensibile, tutto funziona per me, cioè 1 ordine da aprire e non da aprire al prossimo tick
il secondo ordine, il secondo ordine è necessario solo quando il primo si chiude
Buon pomeriggio a tutti. Non sono molto bravo a scrivere EAs, ho cercato di imparare queste cose, ma ho appena iniziato ed è abbastanza difficile per me. Voglio scrivere un EA che apra gli scambi quando i prezzi attraversano una media mobile e li chiuda all'incrocio opposto, usando lo stop loss o il trailing stop. Ho trovato un esempio di un EA di questo tipo, ma non c'è nessun trailing stop o stop loss e i trade sono aperti e chiusi semplicemente all'incrocio. Non ho abbastanza conoscenze per questo. Voglio chiedere a qualcuno di aiutarmi dove mettere trailing stop e stoploss e come farlo funzionare:
#proprietà copyright "Jake Sunders"
#proprietà link "feloq@mail.ru"
#define STATE_SQUARE 0
#define STATE_LONG 1
#define STATE_SHORT 2
//---- parametri di ingresso
extern int MAPeriod=26;
extern double LotsNumber=1.0;
extern double TrailingStop=50;
extern double StopLoss= 50;
//---- variabili globali
int CurrentState;
int MyOrderTicket;
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
int init()
{
//----
se (iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > Close[0])
CurrentState = STATE_SHORT;
else CurrentState = STATE_LONG;
MyOrderTicket = 0;
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di inizio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
int err;
doppio MA;
MA = iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_CLOSE, 0);
se ( CurrentState == STATE_LONG)
{
if (MA > Close[1]) //la media mobile è superiore al prezzo di chiusura
{
CurrentState = STATE_SHORT;
//girare per vendere
//-chiudere la posizione se aperta
se ( MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotsNumber, Bid, 3, CLR_NONE))
{
err = GetLastError();
Print("Errore alla chiusura della posizione: ", err);
ritorno(0);
}
MyOrderTicket = 0;
}
RefreshRates();
//--- la posizione lunga è stata chiusa con successo
//--- ora apriamo una posizione di vendita
//--- controlla i fondi liberi
MyOrderTicket = OrderSend(Symbol(), OP_SELL, LotsNumber, Bid, 3, 0, 0,
NULL, 0, 0, 0, CLR_NONE);
se (MyOrderTicket<0)
{
err = GetLastError();
Print("Errore all'apertura della posizione: ", err);
MyOrderTicket = 0;
}
}
}
else
{
if (MA < Close[1]) // scorre la media sotto il prezzo di chiusura
{
CurrentState = STATE_LONG;
//reverse per comprare
//-chiudere la posizione se aperta
se ( MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotsNumber, Ask, 3, CLR_NONE))
{
err = GetLastError();
Print("Errore alla chiusura della posizione: ", err);
ritorno(0);
}
MyOrderTicket = 0;
}
RefreshRates();
//--- la posizione corta è stata chiusa con successo
//--- ora apriamo una posizione di acquisto
//--- controlla i fondi liberi
MyOrderTicket = OrderSend(Symbol(), OP_BUY, LotsNumber, Ask, 3, 0, 0,
NULL, 0, 0, 0, CLR_NONE);
se (MyOrderTicket<0)
{
err = GetLastError();
Print("Errore all'apertura della posizione: ", err);
MyOrderTicket = 0;
}
}
}
//----
ritorno(0);
}
Gente, per favore consigliate! Come faccio ad aprire e chiudere una posizione alla scadenza di una candela o di candele? Cioè, si apre all'apertura di una nuova candela e si chiude
Come prendo i valori dell'indicatore alla chiusura di una candela?
Ho ordini di acquisto e di vendita che si aprono allo stesso prezzo per quasi 50-100 posizioni,
come dovrei fare per aprire un solo ordine, se non mi sbaglio - OrdersTotal()
Se sì, come devo usarla e dove devo metterla? Sento che senza questa funzione devo inserire tutta l'algebra
Condizioni sbagliate per fare trading, vedi esempio per due MA.
Buon pomeriggio a tutti. Non sono molto bravo a scrivere EAs, ho cercato di imparare queste cose, ma ho appena iniziato ed è abbastanza difficile per me. Voglio scrivere un EA che apra gli scambi quando i prezzi attraversano una media mobile e li chiuda all'incrocio opposto, usando lo stop loss o il trailing stop. Ho trovato un esempio di un EA di questo tipo, ma non c'è nessun trailing stop o stop loss e i trade sono aperti e chiusi semplicemente all'incrocio. Non ho abbastanza conoscenze per questo. Voglio chiedere a qualcuno di aiutarmi dove mettere trailing stop e stoploss e come farlo funzionare:
#proprietà copyright "Jake Sunders"
#proprietà link "feloq@mail.ru"
#define STATE_SQUARE 0
#define STATE_LONG 1
#define STATE_SHORT 2
//---- parametri di ingresso
extern int MAPeriod=26;
extern double LotsNumber=1.0;
extern double TrailingStop=50;
extern double StopLoss= 50;
//---- variabili globali
int CurrentState;
int MyOrderTicket;
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
int init()
{
//----
se (iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > Close[0])
CurrentState = STATE_SHORT;
else CurrentState = STATE_LONG;
MyOrderTicket = 0;
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di inizio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
int err;
doppio MA;
MA = iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_CLOSE, 0);
se ( CurrentState == STATE_LONG)
{
if (MA > Close[1]) //la media mobile è superiore al prezzo di chiusura
{
CurrentState = STATE_SHORT;
//girare per vendere
//-chiudere la posizione se aperta
se ( MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotsNumber, Bid, 3, CLR_NONE))
{
err = GetLastError();
Print("Errore alla chiusura della posizione: ", err);
ritorno(0);
}
MyOrderTicket = 0;
}
RefreshRates();
//--- la posizione lunga è stata chiusa con successo
//--- ora apriamo una posizione di vendita
//--- controlla i fondi liberi
MyOrderTicket = OrderSend(Symbol(), OP_SELL, LotsNumber, Bid, 3, 0, 0,
NULL, 0, 0, 0, CLR_NONE);
se (MyOrderTicket<0)
{
err = GetLastError();
Print("Errore all'apertura della posizione: ", err);
MyOrderTicket = 0;
}
}
}
else
{
if (MA < Close[1]) // scorre la media sotto il prezzo di chiusura
{
CurrentState = STATE_LONG;
//reverse per comprare
//-chiudere la posizione se aperta
se ( MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotsNumber, Ask, 3, CLR_NONE))
{
err = GetLastError();
Print("Errore alla chiusura della posizione: ", err);
ritorno(0);
}
MyOrderTicket = 0;
}
RefreshRates();
//--- la posizione corta è stata chiusa con successo
//--- ora apriamo una posizione di acquisto
//--- controlla i fondi liberi
MyOrderTicket = OrderSend(Symbol(), OP_BUY, LotsNumber, Ask, 3, 0, 0,
NULL, 0, 0, 0, CLR_NONE);
se (MyOrderTicket<0)
{
err = GetLastError();
Print("Errore all'apertura della posizione: ", err);
MyOrderTicket = 0;
}
}
}
//----
ritorno(0);
}
Guarda questo esempio