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

 
Artyom Trishkin:

ChartIndicatorAdd()

谢谢你。只有在这里,EA才会显示不直接在图表中的指标。我有一个问题,如何显示EA本身的计算结果。

 
Andrey Sokolov:

谢谢你。只有在这里,EA才会在图表中不直接显示指标。我有一个问题,如何显示EA本身的计算结果。

OBJ_LABEL

ObjectSetString- 输入数据

ObjectGetString- 获取数据


作为一个例子,我有




 
Andrey Sokolov:

谢谢你。只有在这里,EA才会在图表中不直接显示指标。我有一个问题,如何显示EA本身的计算结果。

拿一个画布(CCanvas)来画。使用ChartTimePriceToXY 将时间和价格转换为图表坐标。

 
MakarFX:

在哪个时间范围内?

М1

 

问候,我不明白为什么SELECT_BY_TICKET选择在这个设计中不起作用,不像SELECT_BY_POS。

void Ticket_Limits (int magic ){


int _GetLastError = 0, k = OrdersTotal();
        Ticket_Total = 0;
        
// изменяем размеры массивов под текущее кол-во позиций
        // (если _OrdersTotal = 0, меняем размер массивов на 1)
        int temp_value = MathMax( k, 1 );
        ArrayResize( _Tacket,                   temp_value );
        ArrayResize( _Type,                        temp_value );
        ArrayResize( _OpenPrice,                temp_value );   
        // обнуляем массивы
        ArrayInitialize( _Tacket,               0 );
        ArrayInitialize( _Type,                 0 );
        ArrayInitialize( _OpenPrice,    0 );
        
        for ( int z = k-1;z>=0; z -- )
        {

           Print("z =",z);
                if (!OrderSelect( z, SELECT_BY_POS ))
                {
                        _GetLastError = GetLastError();
                        Print( "OrderSelect( ", z, ", SELECT_BY_TICKET  ) - Error #", _GetLastError );
                        continue;
                }
                if ( OrderMagicNumber() == magic && OrderSymbol() == Symbol() )
                {
                        // заполняем массивы
                        _Tacket               [Ticket_Total] = OrderTicket();
                        _Type                         [Ticket_Total] = OrderType();
                        _OpenPrice                      [Ticket_Total] = NormalizeDouble( OrderOpenPrice(), _Digits );
                        Ticket_Total++;
                        Print("_Tacket === ",_Tacket[z]," _Type === ",_Type[z]," _OpenPrice === ",_OpenPrice[z]);
                }
          
        }               
        // изменяем размеры массивов под кол-во позиций, принадлежащих эксперту
        // (если Ticket_Total = 0, меняем размер массивов на 1)
        temp_value = MathMax( Ticket_Total, 1 );
        ArrayResize( _Tacket,                   temp_value );
        ArrayResize( _Type,                        temp_value );
        ArrayResize( _OpenPrice,                temp_value );
} 
 
嗨,如果我走错了方向,我道歉:你能帮助我如何使一个指标放在MT4的手机上,如移动 到时间框架m15,在这个对的时间框架m5,或任何其他TF上不可见。
 
MakarFX,Mihail Matkovskij
谢谢你。但我的问题不是关于这个。这是关于如何从数组中提取数据,比如从指标缓冲区中提取,如果可以 的话。
 
Andrey Sokolov:
ChartTimePriceToXY 将其转换为像素,你就完成了。绘制点或线或其他基元,或根据你得到的坐标显示箭头(Windings字体)。CCanvas 所有这方面 的方法。只要创建一个覆盖整个屏幕的画布,你就可以随心所欲地绘画。但与此同时,你必须在OnChartEvent(id:CHARTEVENT_CHART_CHANGE) 中不断重绘Kanvas。总而言之,你需要先学习如何使用CCanvas。但是,如果你是编程新手,而且你懒得去学习这一切,那么自由职业者就是你的帮手。
 
Galim_V:

问候!我不明白为什么在这个设计中,SELECT_BY_TICKET选择不工作,不像SELECT_BY_POS。

因为SELECT_BY_TICKET通过票据来选择订单而且你按顺序选择它们(SELECT_BY_POS)要按票据选择订单,请向OrderSelect函数 报告票据,而不是索引。

 
Mihail Matkovskij:

使用CCanvas,你可以画出任何你想要的东西。复制时间(用CopyTime) 和数组数据(使时间数组中的单元格与你的数据数组中的单元格明确匹配)ChartTimePriceToXY 将其转换为像素,你就完成了。绘制点或线或其他基元,或根据你得到的坐标显示箭头(Windings字体)。CCanvas 所有这方面 的方法。只要创建一个覆盖整个屏幕的画布,你就可以随心所欲地绘画。但与此同时,画布必须在OnChartEvent(id:CHARTEVENT_CHART_CHANGE) 中不断重绘。总而言之,你需要先学习如何使用CCanvas。但是,如果你是编程新手,而且你懒得去学习这一切,那么自由职业者就是你的帮手。

谢谢