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

 
Alexey Kozitsyn:
嗯......我认为我们不需要挖得那么深,但循环中的请求确实是第一个吸引你眼球的东西。

如果它一次就需要这些数据,或者一小时一次呢?为什么要做一个无用的循环?

除了提问者本人,我们都不知道他想要什么。所以我们只能建议他做什么--去心灵感应俱乐部里读他在制定问题上的失败。也不要被那些决定笑一下的人所冒犯。

 
Alexey Kozitsyn:
拖拉机:)一个更好的建议是把价格放在一个循环中。相应地,存储在数组中。
悠着点 吧)。
 
你应该直接回答我的问题你不清楚。 而你 "盐和胡椒..."怨恨
 
STARIJ:

在我看来,它更简单,就像这样

警报立即输出到屏幕上。这是表格的结尾


你读过这个问题吗?你似乎错过了它。
 
Romal001:
你应该直接回答,我的问题你不清楚。 而你 "盐、胡椒......"攻击性

请看我给你的第一个答复,这是对你的一个问题。如果你能清楚地回答,可能会是另一场对话。

你问的是什么样的信号?

而这与蜡烛的数据有什么关系呢?

 
#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));} // Теперь хорошо бы узнать угол               
}

如何把它放在一个循环中,以显示不只是一天,而是历史,所有的扭曲像蛇一样不工作,兴趣是技术的,我很痒))

 

在两台机器重叠的地方,如何才能得到一个正确和更准确的价格?


 
missha32:   请告知如何在两台机器相交的地方获得正确和更准确的价格

交叉点在条形图之间,而计算是基于条形图的。还是你需要更精确?你可以进行插值,但你必须这样做吗?缓慢的马有相同的价值。

 
STARIJ:

条形之间的交集,并逐条进行计算。还是你需要更精确?你可以进行插值,但你应该吗?慢速马具有相同的价值。

在这个图中,MA1(1)>MA2(1),MA1(2)<=MA2(2)是交叉的事实。括号内的条形图显示的是MA1和MA2的取值点。
 

MA交叉发生在条形图之间--抓住了一个明显的例子

交叉点左侧和右侧的柱状图上的MA值与交叉点的价格不同。我知道提问者想要的是准确的交叉点上的数值,而不是相邻条上的数值。这个精确的数值可以通过线性插值得到--毕竟,条形之间的MA被构造成直线段。或者取相邻条上的每个MA的坐标。用分析法构建2条直线并计算它们的交点。可以通过考虑2个相似的三角形来进行计算。一个相反的问题出现了--我们为什么需要它?成本与结果的价值是否相称?毕竟,如果MA的参数变化很小,交点就会移动。最有可能的是,它是由课程项目 的负责人要求的