"ダミー "からの質問 - ページ 239

 
forward666:

ありがとうございます!何かコツがあれば、教えていただけると嬉しいです。

スタイライザーについて 詳しく読んでみます。

代わりにやってみてください。

bool first;

を書きます。

bool first=true;
 
親愛なる皆様へ市場からの無料のExpert Advisorをダウンロードする方法(というか場所)を "ダミー "に助言してください?標準のExpert Advisorをインストールする場所はわかっているのですが、Marketからではできません - どのアプリケーションを使えばいいのでしょうか?
 
Sokrat:

親愛なる皆様へ市場からの無料のExpert Advisorをダウンロードする方法(というか場所)を "ダミー "に助言してください?普通のEAをインストールする場所はわかっているのですが・・・マーケットからできないのですが、どのアプリケーションを使えばいいのでしょうか?
ターミナルから行う最も簡単な方法は、ToolboxにMarketタブがあることです
 
Sokrat:

親愛なる皆様へ市場からの無料のExpert Advisorをダウンロードする方法(というか場所)を "ダミー "に助言してください?標準のExpert Advisorをインストールする場所はわかっているのですが、Marketからではできません - どのアプリケーションを使えばいいのでしょうか?



 

forward666: У меня при запуске робота сразу открывается позиция,которая явно не отражает реалии графика,соответственно она уходит в глубокий минус. Как сделать,что при запуске робота эта позиция не открывалась сразу?где в коде нужно что-то добавить?

#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>

CTrade Trade;
CSymbolInfo Sym;
CPositionInfo Pos;

input int Shift=10; /*Shift*/ // Величина скачка цены для открытия позиции
input int Limit=100; /*Limit*/ // Величина убытка в пунктах для закрытия позиции
input int Prof=10;
input int MA_Period=50; // Период Moving Average 
int maHandle; // хэндл индикатора Moving Average
double maVal[3]; // статический массив для хранения значений индикатора Moving Average
bool first;
double a,b,Lots;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
  {
   maHandle=iMA(NULL,0,MA_Period,2,MODE_SMA,PRICE_CLOSE);
   if(maHandle<0)
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }
   first=false;
   if(!Sym.Name(_Symbol))
     {
      Alert("Ошибка инициализации CSymbolInfo, поворите попытку");
      return(-1);
     }
   Print("Инициализация эксперта выполнена");
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   IndicatorRelease(maHandle);
  }
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CopyBuffer(maHandle,0,0,3,maVal)<0)
     {
      Alert("Ошибка копирования буферов индикаторов - номер ошибки:",GetLastError());
      return;
     }
   if(!Sym.RefreshRates()) return;
   if(first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first=false;
      return;
     }
   Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)*0.66/1000/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);
   Lots=MathMin(999,MathMax(1,Lots));
   Lots=NormalizeDouble(Lots,2);
   if(Pos.Select(_Symbol))
     {
      if(Pos.Profit()>2)
        {
         Trade.PositionClose(_Symbol,Sym.Spread()*2);
        }
      else
        {
         if(Pos.PositionType()==POSITION_TYPE_BUY)
           {
            if((Pos.PriceOpen()-Sym.Ask())/Sym.Point()>Limit)// || Sym.Bid()<maVal[0]-0.0005)
              {
               Trade.PositionClose(_Symbol,Sym.Spread()*2);

              }
           }
         else if(Pos.PositionType()==POSITION_TYPE_SELL)
           {
            if((Sym.Bid()-Pos.PriceOpen())/Sym.Point()>Limit)// || Sym.Ask()>maVal[0]+0.0005)
              {
               Trade.PositionClose(_Symbol,Sym.Spread()*2);

              }
           }
        }
     }
   else
     {
      if(b-Sym.Bid()>=Shift*Sym.Point() && maVal[0]>maVal[1] && maVal[1]>maVal[2] && Sym.Bid()<maVal[0])
        {
         Trade.SetDeviationInPoints(Sym.Spread()*2);
         Trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lots,Sym.Bid(),0,0,""); //Sym.Bid()+0.0030
                                                                            // Trade.Sell(Lots,_Symbol,0,0,0,"");
         Print(__FUNCTION__,"():Sell");
        }
      if(Sym.Ask()-a>=Shift*Sym.Point() && maVal[0]<maVal[1] && maVal[1]<maVal[2] && Sym.Ask()>maVal[0])
        {
         Trade.SetDeviationInPoints(Sym.Spread()*2);
         Trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lots,Sym.Ask(),0,0,""); //Sym.Ask()-0.0030
                                                                           // Trade.Buy(Lots,_Symbol,0,0,0,"");
         Print(__FUNCTION__,"():Buy");
        }
     }
   a=Sym.Ask();
   b=Sym.Bid();
  }

最初のティックの前にあるのは、first==false で、変数 a と b は初期化されていない状態です。そのため、最初のティックで条件

   if(first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first=false;
      return;
     }

は動作せず、変数 a と b は初期化されないままです。

この問題を解決した後もポジションがオープンする場合は、MA、ask、bid、変数a、bの配列値を出力します。

 

こんにちは。

私は本当にダミーなので、蹴らないでくださいね(笑)

質問ですが、メタトレーダー5から気配値データを抽出するにはどうしたらいいのでしょうか?

見積書をエクセルファイルに変換して、インターネットに接続できない職場に持って行き、作業したことがあります。

しかし、5メタトレーダーでは、そのファイルをエクセルに変換する方法がわからない。教えてください。私は プログラミング言語を知らないのですが、スクリプト、エキスパートアドバイザーやインジケーターの使い方は知っています)。また、プログラミング言語の勉強を始めろというのは勘弁していただきたいですね。

2つのメタトレーダーで作業する必要がないように、MT5に永久に切り替えたいだけです。

本当にあなたの助けを期待して、知識のある人、墓に感謝されるでしょう=)。

アレクセイ、よろしく。

 
Hronoptal:

...

他のプログラム用にMetaTrader 5のクォートを準備 する方法です。

勉強したくない人は、ジョブズ コーナーで好きなものを注文してください。))

 

tol64様、どうもありがとうございました。

学習に関しては、残念ながらまだ時間が足りないということです。

ありがとうございました。

敬具、アレクセイ。

 
ビジュアルインジケーターテストで、1つのインジケーターだけでなく、2つ以上のインジケーターを表示することは可能ですか?
 
paladin800:
ビジュアルインジケーターテスト時に表示するインジケーターを1つだけでなく、2つ以上にすることは可能でしょうか?
必要なすべてのインジケータを含むファイル名tester.tplで テンプレートを保存し、可視化モードでテストを有効にしてください。