初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 752

 
非常に単純な質問で申し訳ありませんが、どのように私はオープンポジションを 閉じるのですか? mql4は、OrderClose()関数を持っていたが、どのように?
 
RogozaIV:
非常に単純な質問で申し訳ないのですが、オープンポジションを クローズするにはどうすればいいのでしょうか? mql4にはOrderClose()関数がありますが、どのようにすればいいのでしょうか?

mql5では、反対側のポジションを開く必要があります。 それは、ターミナルの履歴のタブで明確に見ることができます。最も簡単な方法は、標準ライブラリの CTrade クラスを使用することです。
 
Alexey Volchanskiy さん、ありがとうございました。
 
MT5で暗号通貨を取引できる場所を教えてください。ブローカー、取引所?MT4は見つけたのですが、MT5がないようです。
 

皆さん、どこが間違いなのか教えてください。

EAで呼び出すインジケータを準備しています。

インジケータからバッファを送信したい。

その結果が、バーに付けられた int 値である。

タスクは、インジケータからExpert Advisorに2次元配列を渡すことですが、その方法がわかりません。

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2

int per[];

int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,per,INDICATOR_CALCULATIONS); //также пробовал INDICATOR_DATA и INDICATOR_COLOR_INDEX
...

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
{
      for(int b=1; b<Bmax; b++) //отбор по x
        {
         for(int p=1; p<Pmax; p++) // отбор по y
           {
            if(arrayZ[6][p][b]>0||arrayZ[6][p][b]<0)
            {
             per[b]=p;
            }
           }
        }
 }

だから、EAで呼び出す

int OnInit()
  {
//--- create timer
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA); 
   ResetLastError(); 
   MA_handle=iCustom(NULL,0,"Topqw",0,1); 

   Print("MA_handle = ",MA_handle,"  error = ",GetLastError()); 
...

void OnTick()
//void OnTimer()
  {
//--- 
int copy=CopyBuffer(MA_handle,0,0,1000,Label1Buffer); 
   Print("copy =",copy," ",Label1Buffer[999]);//

 
Top2n:

皆さん、どこが間違いなのか教えてください。

EAで呼び出すインジケータを準備しています。

インジケータからバッファを送信したい。

結果は、バーにバインドされているint値です。

タスクは、インジケータからExpert Advisorに2次元配列を渡すことですが、その方法がわかりません。

EAで呼び出す



1.INDICATORでは、インデックス "0 "のデフォルトインディケーターバッファは、チャート上の一番左のバーに対応することを忘れないでください。

2.Expert Advisor には「SetIndexBuffer」コマンドがありません。

3. iCustomはカスタムインジケーターを 作成しており、バッファリクエストではありません(したがって、",0,1 "ではなく、すべて明示的に記述する必要があります)。あなたの場合、このフォームを使用することができます

//--- create handle of the indicator Topqw
   ResetLastError();
   handle_Topqw=iCustom(Symbol(),Period(),"Topqw",PRICE_CLOSE);
//--- if the handle is not created 
   if(handle_Topqw==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the Topqw indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }

4.CopyBufferは正しく書き込まれているようです。

5.2 次元配列は渡せない - 配列指示バッファを 2 つ作成する。

 
Vladimir Karputov:


1.INDICATORでは、デフォルトでインデックス "0 "のインジケーターバッファは、チャート上の一番左のバーに対応することを忘れないでください。

2.EAには "SetIndexBuffer "コマンドはありません。

3. iCustomはカスタムインジケーターを 作成しており、バッファリクエストではありません(したがって、すべて「,0,1」ではなく、明示的に記述する必要があります)。あなたの場合、このフォームを使用することができます

4.CopyBufferは正しく書き込まれているようです。

5.2次元の配列を渡すことはできません。配列指示のバッファを2つ作ってください。


修正ありがとうございます、しかし、私は理解していない、私は明示的に配列の転送を設定した場合、それはどのように形式化されていますか? 私は2つの配列を抽出する必要があることをどこに指定するのでしょうか?

MA_handle=iCustom(Symbol(),Period(),"TopFidCounselor",per,bar); per,bar - же массивы, а данные должны быть imput,
в индикаторе записываю в массивы
   SetIndexBuffer(0,per,INDICATOR_CALCULATIONS);
   SetIndexBuffer(1,bar,INDICATOR_CALCULATIONS);

если я сделаю такую запись
int OnCalculate(
...
  {
//--------------------------------------------------------------
  for ( int i = 0; i < rates_total; i ++ ) per[i] = price[i];  -
//--------------------------------------------------------------
ТО СОВЕТНИК РАБОТАЕТ БЕЗ ОШИБКИ
а если такую
//----------------------------------------------------------------
      for(int b=1; b<200; b++) //отбор по х			-
        {							-
         for(int p=1; p<200; p++) // отбор по у			-
           {							-
            if(arrayZ[6][p][b]>0||arrayZ[6][p][b]<0)		-
            {							-
             per[b]=p;						-
             bar[b]=b;						-
            }							-
           }							-
        }							-
//----------------------------------------------------------------
ТО ОШИБКА код 4002

IndicatorCreate() に目を通しましたが、方法を教えていただけませんか?そうしないと、理解するのに何週間もかかり、思考ブロックが完成するまでに残り少なくなって しまいました。近々、タイガでミツバチの採餌をしながら夏を過ごす予定なので、幻想を抱かないように出発前に確認したいです。
 

INDICATOR_CALCULATIONSの インジケーターで使用しているものは正しいですか?

   SetIndexBuffer(0,per,INDICATOR_CALCULATIONS);
 

4002エラーは解消されました。

のみで、抽出する配列をどこに書けばいいのかが不明です。

   int copy=CopyBuffer(MA_handle,0,0,bars,per); //per?
 
Top2n:

4002エラーは解消されました。

のみで、抽出する配列をどこに書けばいいのかが不明です。


配列perは EAで、コピーを行うプロシージャの中で宣言します。動的な配列([]と宣言され、次元を持たない)でなければなりません。
理由: