[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 418

 
sss2019:


Grazie. Quindi il periodo M1 corrisponde al valore 1, e il periodo M5 corrisponde al valore 5, quindi significa che il periodo H1 corrisponde al valore 60, e il periodo H4 corrisponde al valore 240 giusto?


Sì, proprio così.

PERIOD_M1 1 1 минута
PERIOD_M5 5 5 минут
PERIOD_M15 15 15 минут
PERIOD_M30 30 30 минут
PERIOD_H1 60 1 час
PERIOD_H4 240 4 часа
PERIOD_D1 1440 1 день
PERIOD_W1 10080 1 неделя
PERIOD_MN1 43200 1 месяц
0 (ноль) 0 Период текущего графика

 

Ciao!

Per favore, aiutatemi a capire. Sto cercando di scrivere un semplice indicatore, ma in qualche modo dà valori vuoti.

Mi sembra che l'errore si trovi da qualche parte in questo punto

ExtVolumesBuffer[i]=dVolume;


perché il campo di questa operazione nell'array ExtVolumesBuffer non cambia nulla.

Capisco che da qualche parte ho fatto un errore, ma non capisco dove.

Grazie in anticipo!

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_buffers 1
#property indicator_color1 Black
//---- indicator buffers
double ExtVolumesBuffer[];
double emaExtVolumesBuffer[];

//+------------------------------------------------------------------+
int init()
{
//---- indicator buffers mapping
SetIndexBuffer(0,emaExtVolumesBuffer);
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
//---- sets default precision format for indicators visualization
IndicatorDigits(0);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("emaVolumes");
SetIndexLabel(0,"emaVolumes");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int i,nLimit,nCountedBars;
//---- bars count that does not changed after last indicator launch.
nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted
if(nCountedBars>0) nCountedBars--;
nLimit=Bars-nCountedBars;
//----
for(i=0; i<nLimit; i++)
{
double dVolume=Volume[i];
ExtVolumesBuffer[i]=dVolume;
emaExtVolumesBuffer[i]=iMAOnArray(ExtVolumesBuffer,0,10,0,MODE_EMA,i);

Print(Volume[i],Volume[i+1],Volume[i+2],Volume[i+3]);
Print(ExtVolumesBuffer[i],ExtVolumesBuffer[i+1],ExtVolumesBuffer[i+2],ExtVolumesBuffer[i+3]);
}
//---- done
return(0);
}
//+------------------------------------------------------------------+
 
sss2019:


Grazie. Quindi il periodo M1 corrisponde al valore 1, e il periodo M5 corrisponde al valore 5, quindi risulta che il periodo H1 corrisponde a 60, e il periodo H4 a 240 giusto?

Ho bisogno che questa costruzione funzioni: quando il periodo M1 è selezionato caso 1 e quando il periodo M15 è selezionato caso 15. Funzionerà, o è necessario fare il caso 1 caso 2 caso 3 - in ordine?

int CurrentGrafPeriod ()
{
   
int Ba;
int GrafPeriod = Period();    
  switch(GrafPeriod)
    {
 
    case 1 :  Ba = 60; break;
    case 5 :  Ba = 12; break;
    case 15 : Ba = 4;  break;
    case 30 : Ba = 2;  break;
    case 60 : Ba = 1;  break;
    }
return(Ba);
}

if(CurrentGrafPeriod () == 1){ваше исполнение}
if(CurrentGrafPeriod () == 5){ваше исполнение}
и так далее...
ma questa è una teoria - non so se funzionerà....
 
sss2019:


Grazie. Quindi il periodo M1 corrisponde al valore 1, e il periodo M5 corrisponde al valore 5, quindi significa che il periodo H1 corrisponde al valore 60, e il periodo H4 corrisponde al valore 240 giusto?

Voglio che questa costruzione funzioni: quando il periodo M1 è impostato sul caso 1 e quando il periodo M15 è impostato sul caso 15. Funzionerà così o è necessario fare il caso 1 caso 2 caso 3 - in ordine?


Per prima cosa, è meglio usare costanti nominate invece dei numeri 1, 5, ecc. : PERIOD_M1, PERIOD_M5, ecc.

In secondo luogo, c'è un errore nel tuo esempio. La variabile Ba assumerà sempre il valore 1.

 
sss2019:


Grazie. Quindi il periodo M1 corrisponde al valore 1, e il periodo M5 corrisponde al valore 5, quindi significa che il periodo H1 corrisponde al valore 60, e il periodo H4 corrisponde al valore 240 giusto?

Voglio che questa costruzione funzioni: quando il periodo M1 è impostato sul caso 1 e quando il periodo M15 è impostato sul caso 15. Funzionerà o è necessario fare il caso 1 caso 2 caso 3 - in ordine?

1) Funziona se si aggiunge una pausa in ogni riga.

2) Invece di 1, 5, 15, è meglio usare PERIOD_M1, PERIOD_M5, PERIOD_M15, ecc.

 

Buon pomeriggio, mi sono appena imbattuto nel fatto che il robot di trading non chiude le posizioni, circa una volta su 50, quando raggiunge un profitto. Poi deve chiudere tutto, ordini pendenti e tutto il resto, e impostare di nuovo. La mancata chiusura crea confusione negli ordini e un drawdown.

Potete immaginare che a volte si scopre che un ordine, che è stato sicuramente chiuso al takeprofit, ha un ordercloseprice uguale a zero !!!!!.

Ecco, guardate lo screenshot, questa è la quinta riga dal basso; l'ordine, convenzionalmente chiamato 49, ha chiuso su TakeProfit. E nella nona riga dal basso Orderclosepriche è uguale a zero!!!!!

 
PapaYozh:

In secondo luogo, c'è un errore nel tuo esempio. La variabile Ba assumerà sempre il valore 1.

E perché? Manca una pausa?
 
dkfl.zrjdktdbx:

Buon pomeriggio, mi sono appena imbattuto nel fatto che il robot di trading non chiude le posizioni, circa una volta su 50, quando raggiunge un profitto. Poi deve chiudere tutto, ordini pendenti e tutto il resto, e impostare di nuovo. La mancata chiusura crea confusione negli ordini e un drawdown.

Potete immaginare che a volte si scopre che un ordine, che è stato sicuramente chiuso al takeprofit, ha un ordercloseprice uguale a zero !!!!!.

Potete vedere nello screenshot qui sotto, ecco la quinta linea; l'ordine chiamato nominalmente 49 ha chiuso su TakeProfit. E nella nona riga dal basso Orderclosepriche è uguale a zero!!!!!


Questo non è orderclossepriche - è Clowes Price - prezzo di chiusura dell'ordine.

Devi correggere il codice del tuo Expert Advisor. È quello che sta combattendo.

 

Capisco. Non è che ci sia qualcosa nel codice che sia particolarmente complicato... Lo posterò ora.

Quando faccio gli ordini, risparmio il tempo in wremjapomnim. Non appena un ordine viene chiuso a currentprofit, cancello tutti gli ordini e di nuovo ricordo il tempo nel wremjapomnim pyrimen e li imposto.

for ( i=OrdersHistoryTotal();i>0;i--){ OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY  );
Alert( "wremjapomnim " ,wremjapomnim, "  OrderCloseTime(        )   ",  OrderCloseTime( ),  " ",i , " OrderTakeProfit( ) " ,OrderTakeProfit( ),
  " OrderClosePrice(    )  ",OrderClosePrice(   ) );
if ( OrderTakeProfit( )==OrderClosePrice(       )&&wremjapomnim<OrderCloseTime( )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<2*Point)
   &&wremjapomnim<OrderCloseTime(       )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)>-2*Point)&&wremjapomnim<OrderCloseTime(       )){C=0;A=1 ;  Alert("C",C,"A",A);
   for ( int ii=OrdersTotal();ii>0;ii--){ OrderSelect(ii-1,SELECT_BY_POS );
   if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()){ 
  OrderDelete(OrderTicket( )) ; Alert ("OrderDelete-vse",  GetLastError( ) ); stsBUY=0;stsSELL=0;
   OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);Alert ("OrderClose-vse",  GetLastError( ) ); C=0; }     }              }
   
                                                      } 
 
 
melnikas:

Ciao!

Per favore, aiutatemi a capire questo. Sto cercando di scrivere un semplice indicatore, ma in qualche modo dà valori vuoti.

Mi sembra che l'errore si trovi da qualche parte in questo punto


perché il campo di questa operazione nell'array ExtVolumesBuffer non cambia nulla.

Capisco che ho fatto un errore da qualche parte, ma non capisco dove.

Grazie in anticipo!


Il mio caso è così complicato?

Motivazione: