初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 226

 

Alexeyさん、ご回答、ありがとうございました。

新しい質問ですが、MT4でチャートタブを複製することは可能でしょうか?つまり、毎回チャートパラメータを設定するテンプレートではなく、選択した通貨、タイムフレーム、チャートパラメータを含むタブの完全コピーです。そんなものがあるのかないのか。

 
Rustam Bikbulatov:

試行錯誤中)

戦って、探して、見つけて、また隠す!?


ElenkaVladi:

新しい質問です。

ええ、どういたしまして。

一番簡単なのはパターンです。なぜ嫌いなんですか?タイムフレーム、スケール、背景色、ローソク足の色を設定し、必要なインジケータを設定し、default.tplとして保存しました。これで、新しいチャートを開くと、すべてが準備されています。

 
Aleksei Stepanenko:


一番シンプルなのは、テンプレートです。なぜ嫌いなんですか?タイムフレーム、スケール、背景色、ローソク足の色を設定し、必要なインジケータをスケッチしてdefault.tplとして保存します。これで、新しいチャートを開くと、すべてが準備されています。

いや、疑問は違うようだ。ユーザーがチャートを開き、インジケータをインストールしたとき、TFもシンボルも知らない。スクリプトは、シンボルとTFを選択する必要があります。(また、同時にインジケーターが読み込まれる場合や、テンプレートが選択される場合があります)。

 
Aleksei Stepanenko:

戦って、探して、見つけて、また隠す!?


ええ、どういたしまして。

一番シンプルなのはパターンです。なぜ嫌いなんですか?タイムフレーム、スケール、背景色、ローソク足の色を設定し、必要なインジケータを設定し、default.tplとして保存します。これで、新しいチャートを開くと、すべてが準備されています。

ああ、そういうことか、default.tplのことは思いつかなかった:))
 

MQL4 のコードを要求する@makssub の PM で、次にこのコード。

#property strict
//+------------------------------------------------------------------+
void OnStart()
{
   while(!IsStopped())
   {
      int ticket = -1;
      string ord_sym = "";
      int max_pips = INT_MIN;
      for(int i = OrdersTotal() - 1; i >= 0; i--)
      {
         if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES) || OrderType() > OP_SELL) continue;
         string _sym      = OrderSymbol();
         double sym_point = SymbolInfoDouble(_sym, SYMBOL_POINT);
         double sym_price = OrderType() == OP_BUY ? SymbolInfoDouble(_sym, SYMBOL_BID) : SymbolInfoDouble(_sym, SYMBOL_ASK);
         int ord_pips     = fabs(PriceToInteger(OrderOpenPrice(), sym_point) - PriceToInteger(sym_price, sym_point));
         if(max_pips < ord_pips)
         {
            max_pips = ord_pips;
            ticket = OrderTicket();
            ord_sym = _sym;
         }
      }
      if(ticket < 0) Comment("");
      else Comment("Max pips in order = ", max_pips, " , Symbol = ", ord_sym, " , ticket = ", ticket);
      Sleep(123);
      RefreshRates();
   }
   Comment("");
}
//+------------------------------------------------------------------+
int PriceToInteger( const double Price, const double point )
{
   return((int)(Price / point + 0.1));
}
//+------------------------------------------------------------------+


チケット注文の終了方法はこちらhttps://www.mql5.com/ru/forum/131859 をご覧ください。

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Alexey Viktorov:

まあ、簡単に言えば、こんな感じです。

datetime型の変数を作成し、利益確定時に現在のD1ローソクの時刻をその変数に記録します。そして、別の注文を出す前に、この変数の値を現在のD1ローソクの時刻で チェックします。従って、現在の時刻が高くなれば、開くことができる。それ以外は、煙草を吸う。

例を示してもらえますか?私は、あなたが言ったことを実装するのに十分な経験がないだけなのです。
 
みなさん、こんにちは。最新のMQL4チュートリアルを教えてください。
 
Nikolay Grigoryev:
みなさん、こんにちは。現在のMQL4チュートリアルを教えてください。

教科書はただ一つ、昔のコバレフの教科書です。2016年くらいまででしたね。それから、5のいろいろなものが4に移管されました。受注体制が維持されたのはありがたい。教科書はもうない(私も見つからなかったし、他の人も見つからなかった)。ここの記事とインターネット検索のみ。

 
Valeriy Yastremskiy:

教科書はただ一つ、昔のコバレフの教科書です。2016年くらいまででしたね。それから、5のいろいろなものが4に移管されました。受注体制が維持されたのはありがたい。教科書はもうない(私も見つからなかったし、他の人も見つからなかった)。ここの記事とネットでの検索のみ。

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

 

簡単なインジケータを書きました。ゼロを横切るとき、バッファに値があっても線を引かない。どこで間違ったのか、教えてください。

#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 clrGreen
#property indicator_color2 clrRed

//---- input parameters
extern int    FastEMA=12;  
extern int    SlowEMA=26;  
extern int    Signal=9;  

//---- buffers
double DiffBuffer_up[];
double DiffBuffer_dn[];
//
double MainBuffer[];
double SignalBuffer[];

ENUM_TIMEFRAMES TimeFrame;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   int    draw_begin=MathMax(FastEMA,SlowEMA);
   string short_name="MACD Stephen";
   //---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,DiffBuffer_up);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,DiffBuffer_dn);
   short_name=StringConcatenate(short_name," ("+(string)FastEMA+","+(string)SlowEMA+","+(string)Signal+")");
   IndicatorShortName(short_name);
   SetIndexDrawBegin(0,draw_begin);
   SetIndexDrawBegin(1,draw_begin);
   SetIndexLabel(0,"Up");
   SetIndexLabel(1,"Down");
   IndicatorDigits(6);
   SetLevelValue(0,0);
   
   TimeFrame=GetTF();
   
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{

   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
  int limit, iChart, iTF, delta=0;
  datetime TimeArray[];
  //if(TimeFrame>Period()) delta=(int)MathCeil(TimeFrame/Period());
  int counted_bars=IndicatorCounted();
  //---- check for possible errors
  if(counted_bars<0) return(-1);
  //---- the last counted bar will be recounted
  if(counted_bars>0) counted_bars--;
  limit=Bars-counted_bars+delta;

  ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
  ArraySetAsSeries(MainBuffer,true);
  ArraySetAsSeries(SignalBuffer,true);
  ArrayResize(MainBuffer,  100000);
  ArrayResize(SignalBuffer,100000);
  
  iTF=0;
  for(iChart=0; iChart<limit; iChart++)
  {
      while(Time[iChart]<TimeArray[iTF]) iTF++;
      MainBuffer[iChart]=EMPTY_VALUE;
      SignalBuffer[iChart]=EMPTY_VALUE;
      MainBuffer[iChart]  =iMACD(Symbol(),TimeFrame,FastEMA,SlowEMA,Signal,PRICE_CLOSE,MODE_MAIN,iTF);
      SignalBuffer[iChart]=iMACD(Symbol(),TimeFrame,FastEMA,SlowEMA,Signal,PRICE_CLOSE,MODE_SIGNAL,iTF);
      double diff=MainBuffer[iChart]-SignalBuffer[iChart];
      
      if (diff>0) {
         DiffBuffer_up[iChart]=diff;
         DiffBuffer_dn[iChart]=EMPTY_VALUE;
      }
      else {
         DiffBuffer_dn[iChart]=diff;
         DiffBuffer_up[iChart]=EMPTY_VALUE;
      }
  }
  return(0);
}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES GetTF() {

   switch (Period()) {
      case PERIOD_M1:  return PERIOD_M5;
      case PERIOD_M5:  return PERIOD_M15;
      case PERIOD_M15: return PERIOD_M30;
      case PERIOD_M30: return PERIOD_H1;
      case PERIOD_H1:  return PERIOD_H4;
      case PERIOD_H4:  return PERIOD_D1;
      case PERIOD_D1:  return PERIOD_W1;
      case PERIOD_W1:  return PERIOD_MN1;
   }
   
   return (ENUM_TIMEFRAMES)Period();

}
//+------------------------------------------------------------------+