新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 200

 
STARIJ:

Artem,要么是不露声色的嘲弄,要么是你不知道你在写什么!!!。

在你的上一篇文章中,你谈到了分类问题。向你解释过,不存在对分类的依赖性。

我已经看到并参与了其中一次关于按时间选择顺序的讨论。结论是,现在的订单是根据它们被发送到服务器的时间放在订单数据库中的。但从理论上讲,人们担心开发商会改变这一点。那次讨论就这样结束了。作为一个数据库专家,我向你保证,这种担心是没有根据的,改变是不可能 的。你可以把这个问题提交给开发人员。如果我写东西,我知道我写的是什么。这是编程的第50周年。如果你 在我的帖子中注意到 一些来自你的观点的混乱--亲自写信给我。我将解释,你的疑虑就会消除。但这里的争吵不太可能是适当的。我给那人写了一个剧本--他说谢谢你。这不是很好吗?

这就是所有那些突然发现自己依赖分类的人,也是这么想的。人们的逻辑崩溃了。然后对分类的依赖又消失了。但它已经有了。如果你想不依赖于你的程序,而是依赖于一个假设的不变的排序,你有这个权利,但在初学者的帮助线程中,你没有这个权利--给出一个脚本,而不提它可能有一天会失败的事实。在mql4.com上寻找这种讨论--大约6-7年前。

这就是我提到的--那个人说的是止损,而不是损失。

谢谢他说--有礼貌,但他不知道这是对还是错;)

 
Artyom Trishkin:

这就是我提到的--那个人说的是止损,而不是损失。

他说谢谢你--这很有礼貌,但他不知道这是对还是错;)

仔细看看这个人写了什么。

X = OrderProfit( );        // запомнить величину тейкпрофита

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))     // если ПОСЛЕДНИЙ ордер                  
if ( OrderType ()==OP_SELL)  // СЕЛ

if(X < 0)                 // и если этот сел закрылся по стопу 

由此可见,他指的是亏损的订单。这就是他对止损的理解。他没有止损 这个词。

我还想写的是,止损是StopLoss和TakeProfit的统称。要看到这一点,在MetaEditor中输入130,然后按F1键

停了下来。复数。

我在这里工作,你让我分心了。

我们最好是说datetime -->TimeToStruct-->MqlDateTime 现在如何转换回datetime?

 
STARIJ:

仔细看一下这个人写的东西

由此可见,他指的是失去订单。这就是他对停止的理解。他没有止损 这个词。

我还想写的是,止损是StopLoss和TakeProfit的一个统称。要看到这一点,在MetaEditor中输入130,然后按F1键

停止。复数。

我在这里工作,你让我分心了。

我们最好说数据时间 --> TimeToStruct -->MqlDateTime 如何转换回数据时间?

if(X < 0)                 // и если этот сел закрылся по стопу 

StructToTime()

 
виталик: 在小时图上,在高点和低点之间画了一条线
//+-------------------------------------------------------+
//| на H1 суточную линию между хая и лоу         PROBA.mq4|
//+-------------------------------------------------------+
#property strict

void OnStart()
{
  // Удалим все объекты
  ObjectsDeleteAll();

  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  // Прежде всего узнаем дату и время последнего бара
  Последний = iTime(Символ, Период, 0);
  Alert("Последний бар на часовом  ",Последний);

  // Теперь получить начало суток, обнулив часы
  // Для этого преобразуем время последнего бара в структуру
  MqlDateTime MqlПервый;
  TimeToStruct(Последний,MqlПервый);
  MqlПервый.hour=0;



  // Терерь надо обратно преобразовать во время
  Первый=StructToTime(MqlПервый);
  Alert("Первый бар на часовом  ",Первый); // Смотрим начало первого бара суток

  // По времени определим номер первого бара суток
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);
  Alert("Первый бар на часовом под номером ",НомерПервого);

// Можно было просто узнать время начала бара на D1


  
  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
  int БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

  int БарМин  = iLowest(Символ,
                Период,
                MODE_LOW,         // Наименьшая цена бара
                НомерПервого+1,
                0);

  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);

  // iHigh и iLow дают макс и мин цены указанного бара
  double max_price=iHigh(Символ, Период, БарМакс);
  double min_price=iLow (Символ, Период, БарМин);
  Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);

  // Проводим линию
  ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[БарМакс], max_price, Time[БарМин], min_price);
  ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча

  // Теперь хорошо бы узнать угол
  Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));
}

//它的返回值是0.0 角度应该被设置,然后应该得到它。
// 所以,知道了价格差异和最大与最小之间的条数,就应该计算出角度。
// 我想它可以更短......

 
STARIJ:

// 返回0.0 角度应该被设置,然后获得...
// 所以,知道了价格差异和最大与最小之间的条数,应该计算出角度
// 我想它可以更短......


非常感谢 )
 
Artyom Trishkin:   StructToTime()
谢谢,我已经找到了。结果是我已经用过了。我希望在帮助中看到它的一个数据时间TimeToStruct MqlDateTime
 
-Aleks-:

呃,我不知道如何添加变量--比如说,我有4个布尔变量,需要通过它们?

我明白这一点--除法后的余数应该小于或大于零--但我想不出如何做到这一点:(


对于布尔型的,方法略有不同

//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=15;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int n=0;n<N;n++)
     {
      int tmp=n;
      bool a= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool b= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool c= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool d= tmp;

      Print("N=",n,"; A=",a,"; B=",b,"; C=",c,"; D=",d);
     }

  }

二进制编码。

在这种情况下,最大的N是小于16。

我不明白你想得到什么

 
Victor Nikolaev:


对于布尔型的,方法略有不同

二进制编码。

在这种情况下,最大的N小于16

我不明白你想得到什么。

你是个天才!谢谢你!

我有16个选项。

2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=15; A=true; B=true; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=13; A=true; B=false; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=9; A=true; B=false; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=1; A=true; B=false; C=false; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=5; A=true; B=false; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=3; A=true; B=true; C=false; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=11; A=true; B=true; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=7; A=true; B=true; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=14; A=false; B=true; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=6; A=false; B=true; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=10; A=false; B=true; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=2; A=false; B=true; C=false; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=12; A=false; B=false; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=4; A=false; B=false; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=8; A=false; B=false; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=0; A=false; B=false; C=false; D=false

我想用它来做什么--我在我的EA中有一些过滤器和头寸管理选项--我想把它们结合起来,包括制作迷你集(预制组合)--结果我将得到用于分析的数据,同时不偏向于样本,希望这能扩大对设置影响结果的认知视野。其结果将是一系列的结果,我将详细分析。而且,还有一个原因,我有一个收集统计数据的类,将有限的变量保存到一个文件中,这就妨碍了详细的分析。
 
виталик:

非常感谢 )

STARIJ:

// 返回0.0 角度应该被设置,然后获得...
// 所以,知道了价格差异和最大与最小之间的条数,应该计算出角度
// 我想它可以更短......


我想我需要把图表作为一个指标来看待,但我认为我需要把图表作为一个指标来看待,这样我就可以看到如何让它在一天以上的时间里发挥作用。

#property indicator_chart_window
extern int boom = 1;
//=================================
void fishka(int ma,int mi,double map,double mip) // ф-ция
{
   ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[ma], map, Time[mi], mip);// Проводим линию
   ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча
}

int deinit()
  {

 ObjectsDeleteAll();// Удалим все объекты
  return(0);
  }

void start()
{  
  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  Последний = iTime(Символ, Период, 0);// Прежде всего узнаем дату и время последнего бара
 
if(boom){
   Alert("Последний бар на часовом  ",Последний);}
 
  
  MqlDateTime MqlПервый;              // Теперь получить начало суток, обнулив часы
  TimeToStruct(Последний,MqlПервый);  // Для этого преобразуем время последнего бара в структуру
  MqlПервый.hour=0;

  
  Первый=StructToTime(MqlПервый);            // Терерь надо обратно преобразовать во время
if(boom){
  Alert("Первый бар на часовом  ",Первый);}  // Смотрим начало первого бара суток
  
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);// По времени определим номер первого бара суток
if(boom){
   Alert("Первый бар на часовом под номером ",НомерПервого);}

// Можно было просто узнать время начала бара на D1

  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
 int  БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

int  БарМин  = iLowest(Символ,Период,MODE_LOW,НомерПервого+1,0); // Наименьшая цена бара
                               
if(boom){
  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);}
                                                                           

 
double max_price=iHigh(Символ, Период, БарМакс); // iHigh и iLow дают макс и мин цены указанного бара
double min_price=iLow (Символ, Период, БарМин);
   
    fishka(БарМакс,БарМин,max_price,min_price); // ф-ция
 if(boom){
   Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);
 
   Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));} // Теперь хорошо бы узнать угол               
}
 
STARIJ:

如果在凌晨4点--今天的酒吧还不多。在H4上,一天只有6个柱子。你必须设置搜索的柱子数量 或交叉点的数量。

长距离=趋势

我试着把它作为一个脚本运行,它起作用了,但如果我把它编译成EA,所有的行都在附近,我不明白问题出在哪里。
原因: