初学者的问题 MQL5 MT5 MetaTrader 5 - 页 112

 
我如何获得信用额度或如何存入?
 

以下是使用该指标TrendToTrend_open的专家顾问的代码

下面的代码

问题--为什么我的专家顾问用收盘价 设置这个指标?

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

你好!


能否请你为我指出问题的答案方向?

我有一个EA,有两个策略,根据不同的原则进行交易。它有一个共同的立场作为最终结果。

稍后,我需要了解每个策略对仓位的贡献。那么,是哪个策略(或两个策略)开的仓。

我怎么做呢?


谢谢你!

 
sanderz:

你好!


请指出在哪里可以读到对我问题的回答。

我有一个EA,有两个策略,根据不同的原则进行交易。它有一个共同的立场作为最终结果。

稍后,我需要了解每个策略对仓位的贡献。那么,是哪个策略(或两个策略)开的仓。

我怎么做呢?


谢谢你!

如果你的EA有能力禁用其中一个策略,并且你可以在设置中改变这个神奇的数字。那么你应该在你的账户中添加两个EA,并在每个EA中禁用一个策略,为头寸设置不同的魔法数字,然后用历史上的魔法数字来分析什么能带来更多的利润或损失。
 
Kino:
如果EA有能力禁用其中一个策略,并且你可以在设置中改变这个神奇的数字。然后在账户上放两个EA,并在每个EA中禁用一个策略,并为头寸分配不同的魔法数字,然后在历史上追踪什么会带来更多的加减魔法数字。

谢谢你的答复。我通过静态变量,在策略仓位打开的情况下改变其值(在平仓和止损时,值也会改变)。一般来说,这样做很好,但我知道重启EA后,它将失去订单。

Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - Документация по MQL5
 
为什么钱不响了?
附加的文件:
965pp1ixr4.png  2000 kb
 
sneak:
为什么钱不响了?
计算更新并不频繁。也许一天一次。
 

谢谢你,伙计...我会记住的。

我在地下室有电脑,....,挖矿的锅......让我们来做点什么。

 

我不明白为什么这个函数会返回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);
  }

比如说像这样的叫法。

int bars;
bars=BarsAmountPassed(1365198000);  
Print(__FUNCTION__+": Баров прошло с этого времени ",bars);
n写得正确,但返回0。
 
tor4en:

我不明白为什么这个函数会返回0。

比如说像这样的叫法。

n写得正确,但返回0。
奇怪的是,如果我把函数类型改为short或double,它就会返回计算值(在这个例子中原来是4)。但用int 0.