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
...
Non è un errore nel codice
Vai su Strumenti->Centro Storico e poi scegli e scarica i dati di 1 minuto dal simbolo che vuoi testare (tutto ciò di cui hai bisogno per una precisione del 90% sono i dati di 1 minuto, non c'è bisogno di scaricare il resto)
Ciao Coders
Sto ancora imparando i miei primi passi in MQL-Code.
Qual è la ragione quando ho il seguente messaggio nel diario:
Testgenerator:
unmatched data error ( limite di volume 159 al 2009.05.06 19 15 superato )
dove devo guardare nel codice?
GrazieIo e il mio amico stiamo lavorando su un EA. Ad un certo punto (l'EA) ha bisogno di leggere e recuperare il prezzo ad una certa ora, diciamo, 17:00 EST... ecc.
Qualche senior può consigliarmi come fare, invece di contare le barre di prezzo all'indietro? Forse c'è già una funzione scritta per questo. Gentilmente aiutatemi. Grazie a tutti e Dio vi benedica!
B rgds/abbondanzaiBarShift(..) aiuta a trovare il numero di barre sul tuo grafico, poi usa Close o Open.
iBarShift(..) aiuta a trovare il numero di barre sul vostro grafico, poi usate Close o Open.
Grazie Roger. È stato utile. E scusa se non sono stato più chiaro. Abbiamo bisogno di entrambi i prezzi Bid & Ask. Come possiamo ottenerli? Pl scusa se è una domanda stupida
B rgds/abbondanza
Errore di dati
Ciao mladen
grazie per la tua risposta veloce.
Penso che non sia un problema di tickdata, perché quando provo con un altro EA funziona bene.
Penso che sia un problema con il Custom-Indicator.
Lo costruirò nel seguente indi: Tutte le medie_v2.3
double ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF, "AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,0);
ora ho il seguente messaggio: numero di buffer di indice non valido nella funzione iCustom
Come definire correttamente questo iCustom?
Ciao mladen ho trovato il problema
Ho dimenticato un parametro: Colore
la definizione corretta:
double ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF, "AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,ALL_AVERA_COLOR,0);
Non è un errore nel codice Vai a Strumenti->Centro storico e poi scegli e scarica i dati di 1 minuto dal simbolo che vuoi testare (tutto ciò di cui hai bisogno per una precisione del 90% sono i dati di 1 minuto, non c'è bisogno di scaricare il resto)
Grazie Roger. Questo è stato utile. E scusa se non sono stato più chiaro. Abbiamo bisogno di entrambi i prezzi Bid e Ask. Come possiamo ottenerli? Pl scusa se è una domanda stupida B rgds/abundance
Tutti i prezzi sui grafici sono Bid. Ask=Bid+MarketInfo(Symbol(),MODE_SPREAD)*Point;
Limitare i trade
Così ho iniziato a scrivere un EA di base con uno di quei costruttori di EA che generano template. Sembra che io abbia ottenuto la premessa del modello EA, tuttavia ho bisogno di un modo per far sì che l'EA inserisca solo un trade al massimo. In questo momento continua a generare trade e fa sì che il draw down sia ridicolo. Ecco il codice del lotto di trade:
//Controlla la posizione
bool IsTrade = False;
for (int i = 0; i < Totale; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Chiudere
//+------------------------------------------------------------------+
//| Segnale Inizio(Esci Compra) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Segnale Fine(Esci dall'Acquisto) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = Falso;
continuare;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Punto * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continua;
}
}
}
} else {
//Chiudi
Se qualcuno può aiutare, sarebbe molto apprezzato.
Così ho iniziato a scrivere un EA di base con uno di quei costruttori di EA che generano template. Sembra che io abbia ottenuto la premessa del modello EA, tuttavia ho bisogno di un modo per fare in modo che l'EA inserisca un solo trade al massimo. In questo momento continua a generare trade e fa sì che il draw down sia ridicolo. Se qualcuno potesse aiutarmi, sarebbe molto apprezzato.
{
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
}Grazie OnTheRoad
Ho trovato questo EA, ma non ne capisco alcune.
bool get_signal()
{
bool enable_trade = false;
int trend_up = 0;
int trend_down = 0;
int i;
ArrayInitialize( TradeSign, false );
if( Bars >= 100 ){
for( i = 0 ; i < DEF_MA_NUM ; i++ ){
Buf_MA[0][ i ] = calc_SMA( PERIOD_M30, MA_prm_1, i );
Buf_MA[1][ i ] = calc_SMA( PERIODO_M30, MA_prm_2, i );
Buf_MA[2][ i ] = calc_SMA( PERIODO_M30, MA_prm_3, i );
Buf_MA[3][ i ] = calc_SMA( PERIODO_M30, MA_prm_4, i );
Buf_MA[4][ i ] = calc_SMA( PERIOD_M30, MA_prm_5, i );
}
double vRSI = iRSI( Symbol(), PERIOD_M5, RSI_period5, PRICE_CLOSE, 0 );
double vRSI2 = iRSI( Symbol(), PERIOD_M1, RSI_period1, PRICE_CLOSE, 0 );
for( i = 0 ; i < DEF_MA_TYP ; i++ ){
if((Buf_MA[2] < Buf_MA[1]) && (Buf_MA[1] < Buf_MA[0])){
trend_up++;
}
}
if((trend_up > 3) && (vRSI <= RSI_lower) && (vRSI2 <= RSI_lower)){
TradeSign[SIG_Buy] = true;
enable_trade = true;
}
for( i = 0 ; i < DEF_MA_TYP ; i++ ){
if((Buf_MA[2] > Buf_MA[1]) && (Buf_MA[1] > Buf_MA[0])){
trend_down++;
}
}
if((trend_down > 3) && (vRSI >= RSI_upper) && (vRSI2 >= RSI_upper)){
TradeSign[SIG_Sell] = true;
enable_trade = true;
}
}
return(enable_trade);
}
double calc_SMA( int timeframe, int period, int offset )
{
double vMA = 0;
double sum=0;
int i;
for( i = 0 ; i < periodo ; i++ ){
sum += iClose( Symbol(), timeframe, i + offset );
}
vMA = somma / periodo;
return(vMA);
}
c'è una parte dove "trendup>3", questo è calcolato da un array? Come funziona un array che può dare "trendup>3"? È per conoscere la media di una singola linea (quella linea è probabile che vada su o giù)? Non capisco come funziona.Come resettare gli esperti quando si raggiunge il profitto target? Sto usando la strategia martingala ma non apre i lotti in sequenza...
esempio: lotti 0.1, 0.2, 0.4, 0.8, 1.6
lotti aperti: 0.1, 0.2, 0.4 -> prendo profitto al lotto 0.4 ma il prossimo lotto è 0.8, 0.1, 0.2, 0.4...
qualcuno può aiutarmi?
for(int i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderComment()==Name_ExpertS)
{ T++;
if(OrderType()==OP_BUY) s=1;
if(OrderType()==OP_SELL) s=2;
Last=OrderOpenPrice();
}}
if (Lots<0.1) Lots=0.1;
for (int j=0;j<T;j++)
{
Lots=LotsUP[j];
}Alto/Basso con criteri
Sto cercando di codificare un indicatore che cerca cose specifiche prima di dichiarare che una candela è il vero massimo o il vero minimo. Questi sono fondamentalmente i criteri (ho allegato un grafico per aiutare a spiegare):
1. 1. Cercare una chiusura che sia inferiore a tutte le 20 chiusure precedenti (la seconda freccia è questo punto), poi (2) 12 barre dopo la chiusura deve essere superiore alle 12 chiusure precedenti (la terza freccia). Questa tendenza al rialzo continuerà fino a quando (3) ci sarà una chiusura più bassa delle 7 chiusure precedenti (la quarta freccia).
Ho provato ad usare la funzione iLowest senza molto successo. Penso che la mia scommessa migliore sia quella di usare un array, ma la mia conoscenza degli array è limitata.
Qualche idea o esempio su come usare ArrayMinimum e ArrayMaximum? O se c'è un modo per far funzionare iLowest e iHighest?