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_POSと違い、SELECT_BY_TICKETの選択がうまくいかない理由がわかりません。

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の時間枠にこのペアで表示されていませんでした。
 
MakarFXMihail Matkovskij
ありがとうございました。しかし、私の質問はそのことではありません。インジケーターバッファからなど、配列からデータを描画することが可能 あれば、その方法についてです。
 
Andrey Sokolov:
ChartTimePriceToXYで ピクセルに変換して完了です。取得した座標をもとに、点または線などのプリミティブを描画したり、矢印(Windingsフォント)を表示することができます。CCanvasはそのためのすべてのメソッドを持って います。画面全体を覆うキャンバスを作成するだけで、好きなように描くことができます。しかし、同時にOnChartEvent(id: CHARTEVENT_CHART_CHANGE)でKanvasを常に再描画しなければなりません。全体として、まずCCanvasの操作方法を学ぶ必要があります。しかし、もしあなたがプログラミングの初心者で、すべてを学ぶのが億劫なら、Freelanceはあなたの助けになります。
 
Galim_V:

はじめまして!このデザインで、SELECT_BY_POSと違い、SELECT_BY_TICKETの選択が機能しないのはなぜでしょうか?

SELECT_BY_TICKETはチケットで注文を 選択するため。そして、それらを順番に選択する(SELECT_BY_POS)チケットでオーダーを選択するには、インデックスではなく、チケットをOrderSelect関数に 報告します。

 
Mihail Matkovskij:

CCanvasを使えば、何でも描けます。時間(CopyTime を使用)と配列データをコピーします(時間配列のセルがデータ配列のセルと明確に一致するようにします) ChartTimePriceToXYで ピクセルに変換して完了です。取得した座標をもとに、点または線などのプリミティブを描画したり、矢印(Windingsフォント)を表示することができます。CCanvasはそのためのすべてのメソッドを持って います。画面全体を覆うキャンバスを作成するだけで、好きなように描くことができます。しかし同時に、OnChartEvent(id: CHARTEVENT_CHART_CHANGE) でキャンバスを常に再描画する必要があります。全体として、まずCCanvasの操作方法を学ぶ必要があります。しかし、もしあなたがプログラミングの初心者で、すべてを学ぶのが億劫なら、Freelanceはあなたの助けになります。

しゃい