[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 295

 
isCloseLastPosByStop - 最後のポジションをストップで決済するフラグを返 します
isCloseLastPosByTake - 最後のポジションをテイクプロフィットで決済するフラグを返します。
 

Help fix, standard stockistik,added a alert that doesn't work correctly, can't figure out where the error is...といった具合です。

感謝

//+------------------------------------------------------------------+
//|                                                   Stochastic.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property  indicator_width1 1
#property  indicator_width2 1
#property indicator_level1 20
#property indicator_level2 50
#property indicator_level3 80
#property indicator_levelcolor DimGray
//---- input parameters
//+------------------------------------------------------------------+
extern bool Alerts  = true;
//+------------------------------------------------------------------+
extern int AlertBar = 1; 
//+------------------------------------------------------------------+
extern int KPeriod  = 5;
//+------------------------------------------------------------------+
extern int DPeriod  = 2;
//+------------------------------------------------------------------+
extern int Slowing  = 3;
//+------------------------------------------------------------------+
extern int MAMethod = 3; // 0=SMA,1=EMA,2=SSMA,3=LWMA
//+------------------------------------------------------------------+
//-------------------------------------------------------------------+
//-----
datetime LastAlertTime = -333;
//---- Buffers
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//----
int    MAMode;
string strMAType;
//----
int draw_begin1=0;
int draw_begin2=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
  string short_name;
//---- 2 additional buffers are used for counting.
  IndicatorBuffers(4);
//---- indicator lines
  SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
  SetIndexBuffer(0,MainBuffer);
  SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
  SetIndexBuffer(1,SignalBuffer);
//----
  SetIndexBuffer(2,HighesBuffer);
  SetIndexBuffer(3,LowesBuffer);
//----
  switch(MAMethod)
  {
    case 1:  strMAType="EMA";  MAMode=MODE_EMA;  break;
    case 2:  strMAType="SMMA"; MAMode=MODE_SMMA; break;
    case 3:  strMAType="LWMA"; MAMode=MODE_LWMA; break;
    default: strMAType="SMA";  MAMode=MODE_SMA;  break;
  }
//---- name for DataWindow and indicator subwindow label
  short_name="Stochastic ("+KPeriod+","+DPeriod+","+Slowing+","+strMAType+")";
  IndicatorShortName(short_name);
  SetIndexLabel(0,short_name);
  SetIndexLabel(1,"Signal");
//----
  draw_begin1=KPeriod+Slowing;
  draw_begin2=draw_begin1+DPeriod;
  SetIndexDrawBegin(0,draw_begin1);
  SetIndexDrawBegin(1,draw_begin2);
//----
  return(0);
}
//+------------------------------------------------------------------+
//| Stochastic oscillator                                            |
//+------------------------------------------------------------------+
int start()
{
  int i,k;
  int counted_bars=IndicatorCounted();
  double price;
//----
  if(Bars<=draw_begin2) return(0);
//---- initial zero
  if(counted_bars<1)
  {
    for(i=1;i<=draw_begin1;i++) MainBuffer[Bars-i]=0;
    for(i=1;i<=draw_begin2;i++) SignalBuffer[Bars-i]=0;
  }
//---- minimums counting
  i=Bars-KPeriod;
  if(counted_bars>KPeriod) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double min=1000000;
    k=i+KPeriod-1;
    while(k>=i)
    {
      price=Low[k];
      if(min>price) min=price;
      k--;
    }
    LowesBuffer[i]=min;
    i--;
  }
//---- maximums counting
  i=Bars-KPeriod;
  if(counted_bars>KPeriod) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double max=-1000000;
    k=i+KPeriod-1;
    while(k>=i)
    {
      price=High[k];
      if(max<price) max=price;
      k--;
    }
    HighesBuffer[i]=max;
    i--;
  }
//---- %K line
  i=Bars-draw_begin1;
  if(counted_bars>draw_begin1) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double sumlow=0.0;
    double sumhigh=0.0;
    for(k=(i+Slowing-1);k>=i;k--)
    {
      sumlow+=Close[k]-LowesBuffer[k];
      sumhigh+=HighesBuffer[k]-LowesBuffer[k];
    }
    if(sumhigh==0.0) MainBuffer[i]=100.0;
    else MainBuffer[i]=sumlow/sumhigh*100;
    i--;
  }
//---- last counted bar will be recounted
  if(counted_bars>0) counted_bars--;
  int limit=Bars-counted_bars;
//---- signal line is simple movimg average
  for(i=0; i<limit; i++)
  SignalBuffer[i]=iMAOnArray(MainBuffer,Bars,DPeriod,0,MAMethod,i);
//+------------------------------------------------------------------+ 
  if(Alerts)
  {
    if(AlertBar >= 0 && Time[0] > LastAlertTime)
    {
      if(MainBuffer[i+AlertBar] > SignalBuffer[i+AlertBar] && MainBuffer[i+AlertBar+1] <= SignalBuffer[i+AlertBar+1])
      {
        Alert("Stochastic BULL! ",Symbol()," TF: ",Period());
      }
      if(MainBuffer[i+AlertBar] < SignalBuffer[i+AlertBar] && MainBuffer[i+AlertBar+1] >= SignalBuffer[i+AlertBar+1])
      { 
        Alert("Stochastic BEAR! ",Symbol()," TF: ",Period());
      }
    }
    LastAlertTime = Time[0];
  }
//----
  return(0);
}
//+------------------------------------------------------------------+
 

マルチMAを作りたいのですが。つまり、2つのMAがチャート上に表示されている必要があります - 1つは現在の商品用、もう1つは2番目の商品用です。

商品ごとにボラティリティやポイントの多寡が異なるので、それらを束ねることに疑問がある。役に立つことが思いつかない...。助けて:)

 
Cmu4:

マルチMAを作りたいのですが。つまり、2つのMAがチャート上に表示されている必要があります - 1つは現在の商品用、もう1つは2番目の商品用です。

商品ごとにボラティリティやポイントの多寡が異なるので、それらを束ねることに疑問がある。役に立つことが思いつかない...。助けて:)

サブウィンドウで、問題が起きないことを祈ります。

課題にもよりますが、両チャートで周期の大きなMAをとって、それを基準にすることもできます。

例えば、ワーキングMAの場合、周期は12です。メインのシンボルはそのまま描きます。

その他の記号については、MA12とMA60の差を求め、この差に係数をかけたものを主記号のMA60に加算する必要があります。

 
artmedia70:

そして、明確にするために?最初のポジションは、オープン(市場)のものと、すでにクローズしているものと、どちらを選ぶべきでしょうか?最初のポジションが3年前に開設された場合はどうでしょうか。選択する必要があるのでしょ うか?

そして、それは何のためなのか?

空いている ポジションの中から最初に選ぶこと。

最初のオープンポジションと 最後のオープンポジションの距離をpips単位で確認する必要があります。

 
forexnew:
IsConnected() を使ってみました。) - 効果なし。何かアドバイスはありますか?

IsTradeAllowed()を返すものが他にあるか見てみるのもいいかもしれません。

よろしくお願いします。最後のポイントからN本先のバーに付けられた2つのポイントに従って、トレンドを作ろうとしています。すなわち、最初のポイントと2番目のポイントの時間価格と、Nは先のバーの数で 表されます(チェックボックスビーム=false)。2つ目のポイントは、現在のバー0からバー1にあり、そこから10バー先まで描画しなければならないと仮定すると、未来からバーの時間と価格をどのように計算すればよいのでしょうか。

 

よろしくお願いします。

時間High[3]を調べるにはどうしたらよいですか?

 
alex11230:

よろしくお願いします。

時間High[3]を調べるにはどうしたらよいですか?


時間[3]の場合
 
Roll:

試してみてください。
ありがとうございました :)
 

描画の仕方

/

を文字列にする?

例えば、こんな感じです。

文字列path=TerminalPath()+"/logs/"+tekTime+".log"。

はエラーを出し、スラッシュ "/" を削除すると

文字列path=TerminalPath()+"logs "+tekTime+".log";

- エラーなし