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

 
pako:

バッファをポーリングする、例えば次のようにします。

どのようなバッファ数を設定しても、最後に計算された極値しか書き込まれません(
 
mavar:

どうすれば、コードにあるパラメータで正確にチャート上でボリンジャーを見ることができますか? 必要なインジケータのパラメータはどこで設定されていますか?


ボリンジャーは動いているが、間違った値を読み取っている。

つまり、高値や安値から始まる、指数に沿った チャートなどを作ることができるのです。コードで規制してチャートで見てEAを視覚的に制御するには?

Metatrader5を起動すると、Strategy Testerで使用しているインジケータが自動的に描画されます。
 
LBatters:
metatrader5でEAを実行すると、strategy testerで、使用しているインジケータが描画されます。

描いてもらってないんですよー。私は何を間違えているのだろう?

以下は私のコードです。


//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                                           Andrey |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Andrey"
#property link      "http://www.mql5.com"
#property version   "1.00"

int BolBandsHandle;                // хэндл индикатора Bolinger Bands
double BBUp[],BBLow[],BBMidle[];   // динамические массивы для хранения численных значений Bollinger Bands
//--- входные параметры
input int bands_period= 20;        // Период Bollinger Bands
input int dema_period= 20;         // Период DEMA
input int bands_shift = 0;         // Смещение относительно графика
input double deviation= 2;         // Стандартное отклонение
int demaHandle;                    // хэндл индикатора DEMA

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   printf("test string");
   
     //---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   printf("test string3");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

//Переменная типа MqlTick позволяет за один вызов функции SymbolInfoTick() получить значения time, Ask, Bid, Last и Volume.
      MqlTick last_tick;
      //---
      if(SymbolInfoTick(Symbol(),last_tick))
        {
         Print(last_tick.time,": Bid = ",last_tick.bid,
               " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume, "  LastPrice = ",last_tick.last );
        }
      else Print("SymbolInfoTick() failed, error = ",GetLastError());
      //---
      
        //---Читаем свечку
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(Symbol(),0,0,1,rates);
   if(copied>0)
     {
      //Print("Скопировано баров: "+copied);
      string format="open = %G, high = %G, low = %G, close = %G, volume = %d";
      string out;
      int size=fmin(copied,10);
      for(int i=0;i<size;i++)
        {
         //out=i+":"+TimeToString(rates[i].time);
         out=out+" "+StringFormat(format,
                                  rates[i].open,
                                  rates[i].high,
                                  rates[i].low,
                                  rates[i].close,
                                  rates[i].tick_volume);
         Print(out);
         Print(rates[i].open - rates[i].close );
        }
     }
   else Print("Не удалось получить исторические данные по символу ",Symbol());

//---=======-----\_____BOLLINGER____/--------========--//
//--- получить хэндл индикатора Bollinger Bands и DEMA
   BolBandsHandle=iBands(NULL,PERIOD_M30,bands_period,bands_shift,deviation,PRICE_CLOSE);
   demaHandle=iDEMA(NULL,PERIOD_D1,dema_period,0,PRICE_CLOSE);
   
//--- копируем новые значения индикаторов используя хэндлы
   if(CopyBuffer(BolBandsHandle,0,0,3,BBMidle)<0 || CopyBuffer(BolBandsHandle,1,0,3,BBUp)<0
      || CopyBuffer(BolBandsHandle,2,0,3,BBLow)<0)
     {
      Alert("Ошибка копирования буферов индикатора Bollinger Bands - номер ошибки:",GetLastError(),"!!");
      return;
     }
//********** это цикл надо добавить в код советника, выводит значения при наступлении нового бара
   for(int nbar=0; nbar < 1; nbar++)
     Print("nbar=", nbar, "  BBLow[nbar]=", DoubleToString(BBLow[nbar], _Digits), "  BBMidle[nbar]", DoubleToString(BBMidle[nbar], _Digits),
                    "  BBUp[nbar]=", DoubleToString(BBUp[nbar], _Digits));

  }
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
  {
//---
   printf("test string 1 ");
 
   
  }
//+------------------------------------------------------------------+


 
C-4:
MetaQuotesが主催するチャンピオンシップは、2012年が最後です。今はそんな選手権はない。しかし、今でも多くの証券会社が独自の選手権を開催しています。参加することができます。
このサイトは良いサイトです、自分も参加しています。EAが禁止されているものがほとんど ですが、EA付きや、賞金付きの無料のものもあります。_http://contestsarena.com/xm/ru#/login/
 
LBatters:
どんなバッファ数を設定しても、最後の 極限値しか計算されないと表示され、うまくいきません(
それは、最後の極限と言うことです
 

EA起動時にボリンジャーラインを描画させるには?

私は(上記のコード)いくつかのボリンジャー値を出力しているが、パラメータを視覚的に観察する必要があります。

 

助けてーーーーーーーーーーーーーーーーーーーー

メタトレーダー4ビルド711をダウンロードし、インストールしました。

InstaForex-Demo.comのデモ口座を ダウンロードし、インストールしました。

端末からもウェブサイトからも、無料シグナルを申し込むことができません。

端末の「Community」タブにパスワードを入力してログイン したところ

バランスショー

コネクションがある

を端末に表示します。

2014.10.15 23:35:16.541 Virtual Hosting: サーバー 'www.mql5.com' への接続に失敗しました (www.mql5.com:443 は失敗しました)


2014.10.15 23:08:20.101 MQL5.community: 認可に失敗しました。

2014.10.15 23:08:01.847 Signal: '61447950': シグナルのリスト取得に失敗、接続エラー。
2014.10.15 23:03:19.887 MQL5.community: 認可に失敗しました。
2014.10.15 23:03:01.696 Signal: '61447950': シグナル一覧の取得に失敗しました、接続エラーです。

ご理解のほど、よろしくお願いします...。

 
xscanerx:

H 2014.10.15 23:08:20.101 MQL5.community: 権限付与に失敗 しました。

これは、パスワードが正しくないことを示しています。考えられるエラー - スペースを挿入してしまった、"_"記号を見逃してしまった、入力時に大文字と小文字を間違えてしまった。
 
EAですでに開いている ポジションのロットを増やす方法を教えてください。MQL5です。もう、ありがとうございます。
 
ArkFatalist:
EAですでに開いている ポジションのロットを増やす方法を教えてください。MQL5です。もう、ありがとうございます。
すでにオープンしているポジションと同じ方向で、増加分と同じロットで追加のポジションをオープンします。MT5では、両方のポジションを勝手に1つの累積ポジションにマージしてしまいます。
理由: