Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 112

 
Como obtenho créditos ou como os deposito?
 

Aqui está o código para Expert Advisor que utiliza este indicador TrendToTrend_open

código abaixo

Pergunta - porque é que o meu Consultor Especialista define este indicador com um preço próximo?

//--- входные параметры
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
 

Olá!


Por favor, indiquem-me onde devo ler a resposta à minha pergunta.

Tenho uma EA com duas estratégias que abrem comércios sobre princípios diferentes. Tem como resultado final uma posição comum.

Um pouco mais tarde, tenho de compreender como cada estratégia tem contribuído para a posição. Assim, qual a estratégia (ou duas) que abriu a posição.

Como é que o faço?


Obrigado!

 
sanderz:

Olá!


Pode, por favor, indicar-me a direcção da resposta à sua pergunta?

Tenho uma EA com duas estratégias que abrem comércios sobre princípios diferentes. Tem como resultado final uma posição comum.

Um pouco mais tarde, tenho de compreender como cada estratégia tem contribuído para a posição. Assim, qual a estratégia (ou duas) que abriu a posição.

Como é que o faço?


Obrigado!

Se a sua EA tem a capacidade de desactivar uma das estratégias e pode alterar o número mágico nas definições. Depois deve adicionar dois EAs na sua conta e desactivar uma das estratégias em cada um deles e definir números mágicos diferentes para as posições e depois usar números mágicos na história para rastrear qual deles dá mais lucro ou prejuízo.
 
Kino:
Se a EA tiver a capacidade de desactivar uma das estratégias e o utilizador pode alterar o número mágico nas definições. Em seguida, colocar dois EAs na conta e desactivar uma das estratégias em cada um deles e atribuir diferentes números mágicos para as posições, e depois traçar na história o que dá mais ou menos por números mágicos.

Obrigado pela resposta. Fiz através de variáveis estáticas que alteram o seu valor se a posição da estratégia estiver aberta (ao fechar e parar a perda os valores também mudam). Em geral, isto funciona bem, mas compreendo que depois de reiniciar a EA perderá as suas ordens.

Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - Документация по MQL5
 
Porque é que o dinheiro não está a fazer tic-tac?
Arquivos anexados:
965pp1ixr4.png  2000 kb
 
sneak:
Porque é que o dinheiro não está a fazer tic-tac?
A actualização dos cálculos não é frequente. Uma vez por dia, talvez.
 

obrigado, amigo... vou ter isso em mente.

Tenho computadores na cave, ...., a explorar as panelas... vamos fazer alguma coisa.

 

Não percebo porque é que a função retorna 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);
  }

Chamadas como esta, por exemplo:

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

Não percebo porque é que a função retorna 0:

Chamando-lhe assim, por exemplo:

n escreve correctamente, mas devolve 0.
É estranho, se eu mudar o tipo de função para curto ou duplo, devolve o valor calculado (neste exemplo, acaba por ser 4). Mas com int 0.
Razão: