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

 
Puoi dirmi - il for all'interno del for(s) funziona?
 
elmucon:
Puoi dirmi - il for all'interno del for(s) funziona?
Funziona. Anche tutti gli altri operatori funzionano.
 
Zhunko:
Funziona. Anche tutti gli altri operatori funzionano.

Grazie!
 
Saluti, si prega di fornire un frammento di codice per un Expert Advisor che utilizza un segnale indicatore per l'ingresso, che crea frecce invece di una linea (cioè lo stile dell'indicatore è definito come SetIndexStyle(0, DRAW_ARROW, EMPTY, 3)). Voglio la freccia giù per vendere e la freccia su per comprare. Ho fallito usando i metodi standard per qualche motivo (
 

Potete dirmi come cambiare il periodo rsi (il default è 14)?

Grazie


//+------------------------------------------------------------------+
//|                                                  RSI_to_File.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.ru/"

#property show_inputs
string SymbolsArray[11]={"","USDCHF","GBPUSD","EURUSD","USDJPY","CHFJPY","EURGBP","EURCHF","EURJPY","GBPJPY","GBPCHF"};

//+------------------------------------------------------------------+
//| string SymbolByNumber                                   |
//+------------------------------------------------------------------+
string GetSymbolString(int Number)
  {
//----
   string res="";
   res=SymbolsArray[Number];   
//----
   return(res);
  }

//+------------------------------------------------------------------+
//| возвращает период                                                |
//+------------------------------------------------------------------+
int PeriodNumber(int number)
   {
   int per_min;
   switch (number)
      {
     
      case 5: per_min=PERIOD_H4;break;
      default: per_min=PERIOD_D1;break;
      }
   return(per_min);   
   }

//+------------------------------------------------------------------+
//|   выводит в файл котировки + значения индикатора                 |
//+------------------------------------------------------------------+
void RSI_output(string SymbolName,int PeriodMinutes)
   {
   int size=iBars(SymbolName,PeriodMinutes);
//----
   if (size==0) return;
   int handle=FileOpen(SymbolName+PeriodMinutes+"_RSI.csv",FILE_WRITE|FILE_CSV);
   if (handle<0) return;
   FileWrite(handle,"Time;RSI");
   for (int i=size-1;i>=0;i--)
      {
      FileWrite(handle,TimeToStr(iTime(SymbolName,PeriodMinutes,i))
         ,iCustom(SymbolName,PeriodMinutes,"RSI",0,i));
      }
   FileClose(handle);      
//----
   return;
   }
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
  int SymbolCounter,PeriodCounter; 
//----
   for (SymbolCounter=1;SymbolCounter<13;SymbolCounter++)
      {
      for (PeriodCounter=2;PeriodCounter<=6;PeriodCounter++)
         {
         //Print("NewBar on ",GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter),"M");
         RSI_output(GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter));
         }
      }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

 

Ragazzi, potete indicarmi la direzione della registrazione per poter usare OPLI online e ottenere il mio nome utente e la password?

 
Vedi, ho ottenuto il tempo dalla funzione
ObjectGet("qwerty",OBJPROP_TIME2);
Ottengo 1323452400. Come ho capito il tempo è in secondi, quindi se sottraggo 600 da questo tempo, la nuova posizione sarà 10 barre indietro sul grafico a 5 minuti, ma in realtà la nuova coordinata si è spostata solo di 1 barra, perché succede questo? E perché lo spostamento sia di 10 barre bisogna sottrarre circa 3000, dov'è la logica qui?
 

Potete dirmi perché non riesco a stampare le variabili, nemmeno 0 appare.

Il controllore del lotto del rispettato voix_kas. Leggermente rielaborato da me.

double GetLot(int FastPeriodMA,int SlowPeriodMA) {
int i;
static double Lot = 0;
static double PrevBalance = 0;
static double BalanceOld[0];
static double BalanceNew[0];
if (NormalizeDouble(PrevBalance - AccountBalance(), 2) != 0) {
ArrayResize(BalanceNew, ArraySize(BalanceOld) + 1);
for (i = 0; i <= ArraySize(BalanceOld) - 1; i++)
BalanceNew[i] = BalanceOld[i];
BalanceNew[ArraySize(BalanceOld)] = AccountBalance();
ArrayResize(BalanceOld, ArraySize(BalanceOld) + 1);
ArrayCopy(BalanceOld, BalanceNew);
PrevBalance = AccountBalance();

if (ArraySize(BalanceNew) > SlowPeriodMA) {
double FastMA = 0, SlowMA = 0;
for (i = ArraySize(BalanceNew) - FastPeriodMA; i <= ArraySize(BalanceNew) - 1; i++)
FastMA += BalanceNew[i];
FastMA /= FastPeriodMA;
for (i = ArraySize(BalanceNew) - SlowPeriodMA; i <= ArraySize(BalanceNew) - 1; i++)
SlowMA += BalanceNew[i];
SlowMA /= SlowPeriodMA;
if (FastMA > SlowMA){ Lot = 5;Print(" FastMA ",FastMA,"; SlowMA= ",SlowMA); } 
else Lot = 0.01;
}
}
if (Lot < MarketInfo(Symbol(), MODE_MINLOT)) Lot = MarketInfo(Symbol(), MODE_MINLOT);
else if (Lot > MarketInfo(Symbol(), MODE_MAXLOT)) Lot = MarketInfo(Symbol(), MODE_MAXLOT);
return (Lot);
}
 
001:

Potete dirmi perché non riesco a stampare le variabili, nemmeno 0 appare.

Il controllore del lotto del rispettato voix_kas. Leggermente ridisegnato da me.


E ad ogni tick la dimensione degli array aumenta?

Forse sarebbe più facile creare un indicatore di equilibrio. E in Expert Advisors ci si rivolgeva ad esso.

 
Vinin:


E ad ogni tick la dimensione degli array aumenta?

E potrebbe essere più facile fare un indicatore di equilibrio. E nell'Expert Advisor si farebbe già riferimento ad esso.


È possibile, ma l'Expert Advisor funziona più lentamente in questo caso. E con l'uscita sullo schermo anche nonsense risulta, disegna solo quando l'affare è chiuso, e come farlo esistere come una linea continua di equilibrio, non capisco, qualcuno può dire?