Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1094

 
alvlaf:

Posizionate manualmente l'EA sui grafici e volete che apra ordini MaxOpenOrders o ordini TOTAL MaxOpenOrders su OGNI grafico? E quali ordini: solo quelli di mercato o tutti, compresi limit e stop?

 
A13ksandr:

Posizionate manualmente l'EA sui grafici e volete che apra ordini MaxOpenOrders o ordini TOTAL MaxOpenOrders su OGNI grafico? E quali ordini: solo quelli di mercato o tutti, compresi limit e stop?

Ne abbiamo bisogno per aprire gli ordini per tutti gli strumenti. Supponiamo che il MaxOpenOrders sia 1, dovrebbe aprire solo un ordine a mercato. Questo è un bot per le opzioni binarie, non ci sono ordini pendenti. Tuttavia, funziona in serie, se la posizione viene chiusa in perdita, allora la stessa posizione viene aperta, solo con un lotto più grande, e fino a quando la serie termina con un trade redditizio, non si devono aprire trade per altri strumenti.
 
A13ksandr:
Qual è lo scopo delle parole "in questa strategia"? La magia è necessaria se ci sono compravendite manuali nel conto, o se un altro EA è in esecuzione, in modo che questi ordini non vengano toccati. Credo di sì.
Sì, grazie,A13ksandr .Cambio anche il mago durante il debug per non aspettare che la serie perdente sia finita. E la semplice rimozione del mago non cambierebbe l'algoritmo del robot di trading. Non ho intenzione di aprire ordini lì manualmente.
 
alvlaf:
Deve aprirsi per tutti i simboli. Supponiamo che MaxOpenOrders sia 1, dovrebbe aprire solo un ordine a mercato. Questo è un bot per le opzioni binarie, non ci sono ordini pendenti. Tuttavia, funziona in serie, se la posizione viene chiusa in perdita, allora la stessa posizione viene aperta, solo con un lotto più grande, e fino a quando la serie termina con un trade redditizio, non si devono aprire trade per altri strumenti.

Ok, mi sono perso la parte delle opzioni binarie. Per qualche ragione mi sembra che se appunti manualmente lo stesso EA su diversi grafici, continuerà a contare come l'esecuzione di diversi EA. E per OGNI grafico verrà eseguita 1 opzione (beh, quando funziona correttamente). Potrei sbagliarmi perché sono un principiante anch'io. Ho considerato la multicurrency nel mio EA in questo modo:

input string TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // simboli per il trading

string Symbols[50]; // 50 è il numero massimo di simboli

int SymbolCount;

//--------------------------------------------------

int OnInit()

{

se (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

Simboli[0] = Simbolo();

}

return(INIT_SUCCEED);

}

//--------------------------------------------------

bool ExtractSymbols()

{

ushort Comma = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols);

per (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Symbols[i]);

Symbols[i] = StringTrimRight(Symbols[i]); // protezione dagli spazi accidentali

Symbols[i] = StringTrimLeft(Symbols[i]);

}

se (SymbolCount > 0) return(true);

return(false);

}

//--------------------------------------------------

void OnTick()

{

per (int i = 0; i < SymbolCount; i++)

{

double LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID);

// e così via...

}

}

Per applicare l'EA a qualsiasi grafico. In questo modo, MaxOpenOrders sarà esattamente per tutti i grafici.

 
// e così via... - Cioè, va sul vecchio codice dell'EA stesso?
 
A13ksandr:

Ok, mi sono perso la parte delle opzioni binarie. Per qualche ragione mi sembra che se appunti manualmente lo stesso EA su diversi grafici, continuerà a contare come l'esecuzione di diversi EA. E per OGNI grafico verrà eseguita 1 opzione (beh, quando funziona correttamente). Potrei sbagliarmi perché sono un principiante anch'io. Ho considerato il multicurrency nel mio EA in questo modo:

input string TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // simboli per il trading

string Symbols[50]; // 50 è il numero massimo di simboli

int SymbolCount;

//--------------------------------------------------

int OnInit()

{

se (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

Simboli[0] = Simbolo();

}

return(INIT_SUCCEED);

}

//--------------------------------------------------

bool ExtractSymbols()

{

ushort Comma = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols);

per (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Symbols[i]);

Symbols[i] = StringTrimRight(Symbols[i]); // protezione dagli spazi accidentali

Symbols[i] = StringTrimLeft(Symbols[i]);

}

se (SymbolCount > 0) return(true);

return(false);

}

//--------------------------------------------------

void OnTick()

{

per (int i = 0; i < SymbolCount; i++)

{

double LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID);

// e così via...

}

}

Per applicare l'EA a qualsiasi grafico. In questo modo il MaxOpenOrders sarà accurato per tutti i grafici.

Questo codice è scritto in MQL5?
 
A13ksandr:
if (DayOfWeek() == 1) Price = iOpen(Symbol(), PERIOD_D1, 4);
if (DayOfWeek() >= 2) Price = iOpen(Symbol(), PERIOD_D1, DayOfWeek() - 2);

E se la prossima settimana è andata, e ho ancora bisogno di mantenere un rapporto dal prezzo di apertura della barra di martedì della settimana scorsa? Cioè ho bisogno di un EA per determinare il prezzo di apertura della barra di martedì e iniziato da esso per tutto il tempo necessario, per esempio - una settimana, due, un mese, ecc.

Grazie.

 
yaaarik777:

Cosa succede se la prossima settimana è iniziata e ho ancora bisogno di riportare dal prezzo della barra aperta di martedì della settimana scorsa? Cioè ho bisogno che l'Expert Advisor determini il prezzo aperto della barra di martedì e lo usi per tutto il tempo necessario, per esempio una settimana, due settimane, un mese, ecc.

Grazie.

Poi si imposta una data specifica e il programma prende il prezzo di apertura del giorno per quella data, è ancora più facile.

 
evillive:

Poi si imposta una data specifica e il software prende il prezzo di apertura del giorno per quella data, è ancora più facile.

Puoi aiutarmi con il codice, non lo capisco.

Pensi che il calcolo del prezzo di apertura della prima barra del martedì possa essere implementato in OnInit() e che esso calcoli il prezzo all'avvio e lo ricordi fino al riavvio dell'EA?

Mi dispiace se sto scrivendo cose senza senso, sto imparando)

 
yaaarik777:

Puoi aiutarmi con il codice, non lo capisco.

Pensi che il prezzo della prima barra di martedì dovrebbe essere calcolato in OnInit() e che calcolerà il prezzo all'avvio e lo ricorderà fino al riavvio dell'EA?

Mi dispiace se sto scrivendo cose senza senso, sto imparando)

Il prezzo di apertura della prima barra del giorno = il prezzo di apertura della barra giornaliera. Puoi farlo in Inite, se non hai bisogno di ricalcolare il valore in seguito.

Il codice è approssimativamente il seguente:

input datetime dayz=D'2016.09.06 00:00'; //зададим прошлый вторник, начало суток

int bar_dayz=0;
double price_dayz=0;

int OnInit()
{
////...
bar_dayz=iBarshift(_Symbol,PERIOD_D1,dayz); 
price_dayz=iOpen(_Symbol,PERIOD_D1,bar_dayz);
///...
}