Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 112

 
Come si ottengono i crediti o come si depositano?
 

Ecco il codice per Expert Advisor che usa questo indicatore TrendToTrend_open

codice qui sotto

Domanda - perché il mio Expert Advisor imposta questo indicatore con un prezzo di chiusura?

//--- входные параметры
input int LongTrend=14; // Период LongTrend
input int ShortTrend=7; // Период ShortTrend
input int EA_Magic=0;   // Magic Number советника
input double Lot=0.02; // Количество лотов
input double STR= 0.14;
input double TR= 0.1;
input double TP= 0.55;

//--- глобальные переменные

int TrendToTrend;
int TrendToTrendOpen;

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
  {
  //--- достаточно ли количество баров для работы
   if(Bars(_Symbol,_Period)<60) // общее количество баров на графике меньше 60?
     {
      Alert("На графике меньше 60 баров, советник не будет работать!!");
      return(-1);
     }
TrendToTrend=iCustom(_Symbol,0,"TrendToTrend",LongTrend,ShortTrend);
TrendToTrendOpen=iCustom(_Symbol,0,"TrendToTrend_open",LongTrend,ShortTrend);

if(TrendToTrend<0||TrendToTrendOpen<0)
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     } 
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- освобождаем хэндлы индикаторов
   IndicatorRelease(TrendToTrend);
   IndicatorRelease(TrendToTrendOpen);
   }
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime Old_Time;
   datetime New_Time[1];
   bool IsNewBar=false;

// копируем время текущего бара в элемент New_Time[0]
   int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
   if(copied>0) // ok, успешно скопировано
     {
      if(Old_Time!=New_Time[0]) // если старое время не равно
        {
         IsNewBar=true;   // новый бар
         if(MQL5InfoInteger(MQL5_DEBUGGING)) Print("Новый бар",New_Time[0],"старый бар",Old_Time);
         Old_Time=New_Time[0];   // сохраняем время бара
        }
     }
   else
     {
      Alert("Ошибка копирования времени, номер ошибки =",GetLastError());
      ResetLastError();
      return;
     }
//--- советник должен проверять условия совершения новой торговой операции только при новом баре
   if(IsNewBar==false)
     {
      return;
     }
//--- Имеем ли мы достаточное количество баров на графике для работы
   int Mybars=Bars(_Symbol,_Period);
   if(Mybars<60) // если общее количество баров меньше 60
     {
     Alert("На графике менее 60 баров, советник работать не будет!!");
     return;
     }
return; 
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 

Ciao!


Per favore, indicatemi dove leggere la risposta alla mia domanda.

Ho un EA con due strategie che aprono trade su principi diversi. Ha una posizione comune come risultato finale.

Un po' più tardi, ho bisogno di capire come ogni strategia ha contribuito alla posizione. Quindi, quale strategia (o due) ha aperto la posizione.

Come si fa?


Grazie!

 
sanderz:

Ciao!


Puoi per favore indicarmi la risposta alla tua domanda?

Ho un EA con due strategie che aprono trade su principi diversi. Ha una posizione comune come risultato finale.

Un po' più tardi, ho bisogno di capire come ogni strategia ha contribuito alla posizione. Quindi, quale strategia (o due) ha aperto la posizione.

Come si fa?


Grazie!

Se il tuo EA ha la possibilità di disabilitare una delle strategie e puoi cambiare il numero magico nelle impostazioni. Allora dovresti aggiungere due EAs nel tuo account e disabilitare una delle strategie in ognuno di essi e impostare diversi numeri magici per le posizioni e poi usare i numeri magici nella storia per tracciare quale dà più profitto o perdita.
 
Kino:
Se l'EA ha la possibilità di disabilitare una delle strategie e si può cambiare il numero magico nelle impostazioni. Poi metti due EAs sul conto e disabilita una delle strategie in ciascuno di essi e assegna diversi numeri magici per le posizioni, e poi traccia nella storia ciò che dà più o meno dai numeri magici.

Grazie per la risposta. Ho fatto attraverso variabili statiche che cambiano il loro valore se la posizione della strategia è aperta (alla chiusura e allo stop loss cambiano anche i valori). In generale questo funziona bene, ma capisco che dopo aver riavviato l'EA perderà i suoi ordini.

Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - Документация по MQL5
 
Perché il denaro non ticchetta?
File:
965pp1ixr4.png  2000 kb
 
sneak:
Perché il denaro non ticchetta?
L'aggiornamento del calcolo non è frequente. Una volta al giorno forse.
 

Grazie, amico... lo terrò presente.

Ho dei computer nel seminterrato, ...., estraggo i vasi... facciamo qualcosa.

 

Non capisco perché la funzione restituisce 0:

int BarsAmountPassed(datetime open_time)
  {
   datetime time_array[];
   int n;
   Print("inpupt time=",TimeToString(open_time));
   CopyTime(_Symbol,_Period,open_time,TimeCurrent(),time_array);
   n=ArraySize(time_array);
   Print("number of elements in array=",n);
   return(n);
  }

Chiamare così, per esempio:

int bars;
bars=BarsAmountPassed(1365198000);  
Print(__FUNCTION__+": Баров прошло с этого времени ",bars);
n scrive correttamente, ma restituisce 0.
 
tor4en:

Non capisco perché la funzione restituisce 0:

Chiamare così, per esempio:

n scrive correttamente, ma restituisce 0.
È strano, se cambio il tipo di funzione in short o double, restituisce il valore calcolato (che risulta essere 4 in questo esempio). Ma con int 0.
Motivazione: