ma questo è idealmente "questo numero di barre dovrebbe essere tra le 9:00 e le 22:00".
Più piccolo è il lasso di tempo, maggiore è l'errore, in realtà è quasi sempre minore. Non puoi usare la cronologia per calcolare "la prossima sessione ogni N barre".
È molto più semplice...
intBars(
string symbol_name, // имя символа ENUM_TIMEFRAMES timeframe, // период datetime start_time, // с какой даты datetime stop_time // по какую дату
);
voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif(CountOrders()==0)
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
}
// Пишем какой лот текущий и какой следующий
DrawLABEL("nextlot" ,1,5,0,Color1(),StringConcatenate("CURRENT LOT: ",DoubleToStr(LOT(),2)));
DrawLABEL("currentlot",1,5,0,Color2(),StringConcatenate("NEXT LOT: ",DoubleToStr(LOT(),2)));
DrawLABEL("lab_Take" ,1,5,0,Color(GetProfitFromStart()>0,Lime,Red),StringConcatenate("Profit: ",DoubleToStr(GetProfitFromStart(),2)));
TrailingOrders();
}
void OnTick è fatto come sopra.
Come fare in modo che il contatore dei profitti si azzeri a 0.0 quando si verificano le condizioni:
if(CountOrders()==0) && (GetProfitFromStart()>0
cioè tutti gli ordini sono chiusi e il profitto totale quando l'ultimo ordine è chiuso era >0?
anche in 4, è meglio"aprire prima, modificare dopo".
Non tutti ti permettono di aprire sul mercato con uno Stop Loss allo stesso tempo.
A proposito, lo stop loss non avviene ovunque. Se vuoi fare trading con un ordine stop-loss devi controllarlo sul server del broker, è il suo servizio personale (credito, rischio, guadagno), non dove pensi che sia, non esiste un canale di trading di ordini stop-loss.
Grazie, sì, anche la demo su diversi broker mostra condizioni troppo diverse.
L'EA ha una funzione di conteggio integrata per il profitto corrente:
void OnTick è fatto come sopra.
Come fare in modo che il contatore dei profitti si azzeri a 0,0 quando si verificano le condizioni:
if(CountOrders()==0) && (GetProfitFromStart()>0
Cioè, tutti gli ordini sono chiusi e il profitto totale quando l'ultimo ordine è chiuso era >0?
Questo compito non è del tutto chiaro. Ogni volta la funzione di calcolo inizia a passare attraverso gli ordini/posizioni e riassume i profitti da zero.
double lp=0,cp=0;
Cosa vuoi azzerare? Se non avete posizioni aperte/ordini di mercato, la funzione di conteggio restituirà zero. Si azzererà da solo)))
Cercando ordini chiusi con rendimenti negativi. Per i totali manca, non ottengo il risultato di tutti gli ordini negativi.
Sto cercando di imparare a scrivere.
Ad una rapida occhiata, vedo che stai guardando le posizioni dalla fine e allo stesso tempo, scrivi il tempo di chiusura nella variabile. Potrebbe risultare che avete catturato il tempo dell'ultima posizione chiusa e la condizione successiva non sarà più vera:
OrderCloseTime()>=time
mentre altre posizioni hanno tempi di chiusura inferiori. Tutto ciò dipende dall'ordinamento, ma nell'ordinamento standard questo è il problema.
Risolvi anche questa condizione
(OrderType() == OP_BUY || OP_SELL)
a
(OrderType() == OP_BUY || OrderType() == OP_SELL)
Se prendiamo una posizione dalla storia, OrderProfit() memorizza già il risultato finale con swap e commissioni. Nelle posizioni aperte - no, tutto deve essere riassunto. Ma questo non è certo, controllate.
Ad una rapida occhiata, vedo che stai guardando le posizioni dalla fine e stai scrivendo il tempo di chiusura nella variabile. Potrebbe risultare che avete catturato il tempo dell'ultima posizione chiusa e la condizione successiva non sarà più vera:
mentre altre posizioni hanno tempi di chiusura inferiori. Tutto ciò dipende dall'ordinamento, ma nell'ordinamento standard questo è il problema.
Risolvi anche questa condizione
a
Se prendiamo una posizione dalla storia, OrderProfit() memorizza già il risultato finale con swap e commissioni. Nelle posizioni aperte - no, tutto deve essere riassunto. Ma questo non è accurato, per favore controllate.
Grazie, funziona bene.
double Minus_profit(){
time=TimeCurrent();
for (int i=0; i<OrdersHistoryTotal(); i++){
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
if (OrderSymbol() == Symbol() && OrderMagicNumber()==Magic){
if (OrderType() == OP_BUY || OrderType() ==OP_SELL){
if (OrderCloseTime()>=time){
if (OrderProfit()+OrderSwap()+OrderCommission()<=0){
time=OrderCloseTime();
profit+=OrderProfit();swap+=OrderSwap(); ;comis+=OrderCommission();
result=profit+swap+comis;
}}}}}}return(result);
}
Inoltre, quando incontriamo un ordine con un profitto positivo, dovremmo azzerare il risultato e cercare quelli negativi.
Intervengo :)
C'è un indice DAX30 = quotato da 9 a 22
Qual è il modo per scoprire quante barre in una sessione su Timeframe M15, H1 ecc.
(22*3600-9*3600)/PeriodSeconds(M15)
ma questo è idealmente "questo numero di barre dovrebbe essere tra le 9:00 e le 22:00".
Più piccolo è il lasso di tempo, maggiore è l'errore, in realtà è quasi sempre minore. Non puoi usare la cronologia per calcolare "la prossima sessione ogni N barre".
È molto più semplice...
Buon pomeriggio a tutti.
Ho bisogno del vostro aiuto.
L'EA ha una funzione di conteggio incorporata per il profitto corrente:
void OnTick è fatto come sopra.
Come fare in modo che il contatore dei profitti si azzeri a 0.0 quando si verificano le condizioni:
if(CountOrders()==0) && (GetProfitFromStart()>0
cioè tutti gli ordini sono chiusi e il profitto totale quando l'ultimo ordine è chiuso era >0?
Installato MT4. Non salva le citazioni dopo la chiusura del terminale - ne carica una nuova ogni volta.
anche in 4, è meglio"aprire prima, modificare dopo".
Non tutti ti permettono di aprire sul mercato con uno Stop Loss allo stesso tempo.
A proposito, lo stop loss non avviene ovunque. Se vuoi fare trading con un ordine stop-loss devi controllarlo sul server del broker, è il suo servizio personale (credito, rischio, guadagno), non dove pensi che sia, non esiste un canale di trading di ordini stop-loss.
Grazie, sì, anche la demo su diversi broker mostra condizioni troppo diverse.
Buon pomeriggio a tutti.
Ho bisogno del vostro aiuto.
L'EA ha una funzione di conteggio integrata per il profitto corrente:
void OnTick è fatto come sopra.
Come fare in modo che il contatore dei profitti si azzeri a 0,0 quando si verificano le condizioni:
if(CountOrders()==0) && (GetProfitFromStart()>0
Cioè, tutti gli ordini sono chiusi e il profitto totale quando l'ultimo ordine è chiuso era >0?
Questo compito non è del tutto chiaro. Ogni volta la funzione di calcolo inizia a passare attraverso gli ordini/posizioni e riassume i profitti da zero.
Cosa vuoi azzerare? Se non avete posizioni aperte/ordini di mercato, la funzione di conteggio restituirà zero. Si azzererà da solo)))
Buon pomeriggio a tutti.
Ho bisogno del vostro aiuto.
Come fare in modo che il contatore dei profitti si azzeri a 0.0 quando si verificano le condizioni:
cioè tutti gli ordini chiusi e il profitto totale quando l'ultimo ordine chiuso era >0??
Che cosa esattamente non funziona?
Buon pomeriggio. Per favore, aiutatemi.
Cercare ordini chiusi con rendimenti negativi.
Per i totali manca, non ottengo il risultato di tutti gli ordini negativi.
Sto imparando a scrivere.
Buon pomeriggio. Per favore, aiutatemi.
Cercando ordini chiusi con rendimenti negativi.
Per i totali manca, non ottengo il risultato di tutti gli ordini negativi.
Sto cercando di imparare a scrivere.
Ad una rapida occhiata, vedo che stai guardando le posizioni dalla fine e allo stesso tempo, scrivi il tempo di chiusura nella variabile. Potrebbe risultare che avete catturato il tempo dell'ultima posizione chiusa e la condizione successiva non sarà più vera:
mentre altre posizioni hanno tempi di chiusura inferiori. Tutto ciò dipende dall'ordinamento, ma nell'ordinamento standard questo è il problema.
Risolvi anche questa condizione
a
Se prendiamo una posizione dalla storia, OrderProfit() memorizza già il risultato finale con swap e commissioni. Nelle posizioni aperte - no, tutto deve essere riassunto. Ma questo non è certo, controllate.
Ad una rapida occhiata, vedo che stai guardando le posizioni dalla fine e stai scrivendo il tempo di chiusura nella variabile. Potrebbe risultare che avete catturato il tempo dell'ultima posizione chiusa e la condizione successiva non sarà più vera:
mentre altre posizioni hanno tempi di chiusura inferiori. Tutto ciò dipende dall'ordinamento, ma nell'ordinamento standard questo è il problema.
Risolvi anche questa condizione
a
Se prendiamo una posizione dalla storia, OrderProfit() memorizza già il risultato finale con swap e commissioni. Nelle posizioni aperte - no, tutto deve essere riassunto. Ma questo non è accurato, per favore controllate.
Grazie, funziona bene.
Inoltre, quando incontriamo un ordine con un profitto positivo, dovremmo azzerare il risultato e cercare quelli negativi.
Buon pomeriggio. Per favore, aiutatemi.
Cercare ordini chiusi con rendimenti negativi.
Per i totali manca, non ottengo il risultato di tutti gli ordini negativi.
Sto imparando a scrivere.
Raccomando di usare un debugger per questa e altre situazioni simili.