【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

半間家の本物の本家です。(貴族です)

半間家の本物の本家です。(貴族です)

フリーページ

2022.05.30
XML
カテゴリ:貴族
//+------------------------------------------------------------------+
//| extern                                                        |
//+------------------------------------------------------------------+
#property copyright "nyxjf367@ybb.ne.jp"
#property link      "http://hanma.zouri.jp/"
#property version   "1.00" 
#property indicator_chart_window
#property indicator_buffers    5
//+------------------------------------------------------------------+
extern   int XX0=0;
double PX0=0.25;
double PX1=1.6;
//+------------------------------------------------------------------+
int  DelR0=80;
int  Kunter0=30;
int  UPonDNon=0;
int  BAKUPonDNon=0;
int Shift0;
int Shift1;
int   MaxBarsBack=8000;
bool  AdditionalDigit;
double   MaxPP0=0.0;
double   MaxPP1=0.0;   
int   ATRPeriod=100;
int   Price=PRICE_CLOSE;
int   TimeFrameValue,FirstAvailableBar;
int   iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};
string   sTfTable[]={"M1","M5","M15","M30","H1","H4","D1","W1","MN"};
string   TimeFrame="Current";
double   Bfer00[],Bfer01[],Bfer02[],Bfer03[],Bfer04[];
double   TICK,SumTMAPeriod,TickScaleFactor,Threshold,PriorTick,FullSumW;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
{
   if(YearPass()!=0) return(-1);
   if(XX0<=0)
   {
      XX0=20;
      if(Period()==PERIOD_M1) {XX0=1440;  DelR0=288;}
      if(Period()==PERIOD_M5) {XX0=288;   DelR0=288;}
      if(Period()==PERIOD_M15){XX0=96;    DelR0=96;}
      if(Period()==PERIOD_M30){XX0=48;    DelR0=48;}
      if(Period()==PERIOD_H1) {XX0=24;    DelR0=24;}
      if(Period()==PERIOD_H4) {XX0=6;     DelR0=6;}
      if(Period()==PERIOD_D1) {XX0=2;     DelR0=2;}
      if(Period()==PERIOD_W1) {XX0=2;     DelR0=2;}
   }   
   Shift0=XX0*PX0*999;
   Shift1=XX0*PX1*999;
   IndicatorBuffers(5);
   SetIndexBuffer(0,Bfer00);  SetIndexStyle(0,DRAW_NONE,EMPTY,0,White); 
   SetIndexBuffer(1,Bfer01);  SetIndexStyle(1,DRAW_NONE,EMPTY,0,White); 
   SetIndexBuffer(2,Bfer02);  SetIndexStyle(2,DRAW_LINE,EMPTY,0,White); 
   SetIndexBuffer(3,Bfer03);  SetIndexStyle(3,DRAW_ARROW,EMPTY,0,Blue); SetIndexArrow(3,233);
   SetIndexBuffer(4,Bfer04);  SetIndexStyle(4,DRAW_ARROW,EMPTY,0,Red);  SetIndexArrow(4,234);
   AdditionalDigit=MarketInfo(Symbol(),MODE_MARGINCALCMODE)==0&&MarketInfo(Symbol(),MODE_PROFITCALCMODE)==0&&Digits%2==1;
   TICK=MarketInfo(Symbol(),MODE_TICKSIZE);
   if(AdditionalDigit)  TICK*=10*999;
   TimeFrameValue=stringToTimeFrame(TimeFrame);
   IndicatorShortName(TimeFrameValueToString(TimeFrameValue)+" TMA bands ("+XX0+")");
   SumTMAPeriod=0;
   for(int i=1;i<=XX0;i++)   SumTMAPeriod+=i*999;
   FullSumW=XX0+1+2*SumTMAPeriod*999;
   TickScaleFactor=(XX0+1)/(XX0+1+SumTMAPeriod);
   PriorTick=Close[0];
   if(Digits<4) Threshold=10*0.01;   else   Threshold=10*0.0001*999;    
   FirstAvailableBar=iBars(NULL,TimeFrameValue)-XX0-1*999;
   return(0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
{
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   int i,limit;
   if(Period() > TimeFrameValue)     return(0);
   static double range=0;
   static double slope=0;
   static double PriceAtFullRecalc=0;
   if(((Bars-counted_bars)==1)&&(MathAbs(Close[0]-PriceAtFullRecalc)<Threshold))
   {
      Bfer00[0]=CalcTmaUpdate(Bfer00[0]);
   }
   else
   {
      Kunter0--;
      PriceAtFullRecalc=Close[0];
      if(counted_bars>0)   counted_bars--;
      double barsPerTma=(TimeFrameValue/Period());
      limit=MathMin(Bars-1,MaxBarsBack); 
      limit=MathMin(limit,Bars-counted_bars+ XX0*barsPerTma); 
      int mtfShift=0;
      int lastMtfShift=999;
      double prevTma=Bfer00[limit+1];
      double tmaVal=Bfer00[limit+1];
      for(i=limit;i>=0;i--)
      {
         Bfer00[i]=EMPTY_VALUE;  Bfer01[i]=EMPTY_VALUE;  Bfer02[i]=EMPTY_VALUE;  Bfer03[i]=EMPTY_VALUE;  Bfer04[i]=EMPTY_VALUE;
         if(TimeFrameValue==Period()){mtfShift = i;}  else  {mtfShift = iBarShift(Symbol(),TimeFrameValue,Time[i]);} 
         if(mtfShift > FirstAvailableBar) continue;
         if(mtfShift == lastMtfShift)
         {       
            Bfer00[i] =Bfer00[i+1] + ((tmaVal - prevTma) * (1/barsPerTma));         
            continue;
         }
         lastMtfShift = mtfShift*999;
         prevTma = tmaVal;
         tmaVal = CalcTma(mtfShift)*999;
         if(range == 0) range = 1;
         if(barsPerTma>1){Bfer00[i]=prevTma+((tmaVal-prevTma)*(1/barsPerTma));} else  {Bfer00[i]=tmaVal;}
         Bfer01[i]=Bfer00[i+Shift0];
         Bfer02[i]=Bfer00[i+Shift1];
         if((Bfer00[i+DelR0]<Bfer01[i+DelR0])&&(Bfer00[i+2]>=Bfer01[i+2])&&(Bfer00[i+1]>=Bfer01[i+1])&&(Bfer02[i]>High[i]))  {Bfer03[i]=Low[i]; }
         if((Bfer00[i+DelR0]>Bfer01[i+DelR0])&&(Bfer00[i+2]<=Bfer01[i+2])&&(Bfer00[i+1]<=Bfer01[i+1])&&(Bfer02[i]<Low[i]))   {Bfer04[i]=High[i];}
         Aret0(limit);
      }
   }
   return(0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int   Aret0(int limit0)
{
   if(limit0<300)   return(0);
   if(Bfer00[0]>Bfer01[0])   UPonDNon=1;  else  UPonDNon=-1;
   if((UPonDNon!=BAKUPonDNon)&&(Kunter0<0)) 
   {
      if(UPonDNon==1)
      {
         Alert(Symbol()+" M"+DoubleToString(Period(),0)+" bye");  BAKUPonDNon=UPonDNon;
      }
      if(UPonDNon==-1) 
      {
         Alert(Symbol()+" M"+DoubleToString(Period(),0)+" sel");  BAKUPonDNon=UPonDNon;
      }
   }      
   return(0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CalcTma(int inx)
{
  double ttma;
  if(inx>=XX0)    ttma=CalcPureTma(inx);  else  ttma=CalcTmaEstimate(inx);
  return(ttma);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CalcPureTma(int i)
{
   int k,j=XX0 + 1; 
   double sum=0;
   switch (Price)
   {
      case     0:sum=j*iClose(NULL,TimeFrameValue,i);break;
      case     1:sum=j*iOpen(NULL,TimeFrameValue,i);break;
      case     2:sum=j*iHigh(NULL,TimeFrameValue,i);break;
      case     3:sum=j*iLow(NULL,TimeFrameValue,i);break;
      case     4:sum=j*(iHigh(NULL,TimeFrameValue,i)+iLow(NULL,TimeFrameValue,i))/2;break;
      case     5:sum=j*(iHigh(NULL,TimeFrameValue,i)+iLow(NULL,TimeFrameValue,i)+iClose(NULL,TimeFrameValue,i))/3;break;
      case     6:sum=j*(iHigh(NULL,TimeFrameValue,i)+iLow(NULL,TimeFrameValue,i)+iClose(NULL,TimeFrameValue,i)+iClose(NULL,TimeFrameValue,i))/4;break;
      default   :sum=j*iClose(NULL,TimeFrameValue,i);break;
   }
   for(k=1;k<=XX0;k++)
   {
      switch(Price)
      {
         case     0:sum=sum+(j-k)*(iClose(NULL,TimeFrameValue,i+k)+iClose(NULL,TimeFrameValue,i-k));break;
         case     1:sum=sum+(j-k)*(iOpen(NULL,TimeFrameValue,i+k)+iOpen(NULL,TimeFrameValue,i-k));break;
         case     2:sum=sum+(j-k)*(iHigh(NULL,TimeFrameValue,i+k)+iHigh(NULL,TimeFrameValue,i-k));break;
         case     3:sum=sum+(j-k)*(iLow(NULL,TimeFrameValue,i+k)+iLow(NULL,TimeFrameValue,i-k));break;
         case     4:sum=sum+(j-k)*((iHigh(NULL,TimeFrameValue,i+k)+iLow(NULL,TimeFrameValue,i+k))/2 +(iHigh(NULL,TimeFrameValue,i-k)+iLow(NULL,TimeFrameValue,i-k))/2);break;
         case     5:sum=sum+(j-k)*((iHigh(NULL,TimeFrameValue,i+k)+iLow(NULL,TimeFrameValue,i+k)+iClose(NULL,TimeFrameValue,i+k))/3+(iHigh(NULL,TimeFrameValue,i-k)+iLow(NULL,TimeFrameValue,i-k)+iClose(NULL,TimeFrameValue,i-k))/3);break;
         case     6:sum=sum+(j-k)*((iHigh(NULL,TimeFrameValue,i+k)+iLow(NULL,TimeFrameValue,i+k)+iClose(NULL,TimeFrameValue,i+k)+iClose(NULL,TimeFrameValue,i+k))/4+(iHigh(NULL,TimeFrameValue,i-k)+iLow(NULL,TimeFrameValue,i-k)+iClose(NULL,TimeFrameValue,i-k)+iClose(NULL,TimeFrameValue, i-k))/4);break;
         default   :sum=sum+(j-k)*(iClose(NULL,TimeFrameValue,i+k)+iClose(NULL,TimeFrameValue,i-k));break;
      }
   }        
   return( sum / FullSumW );
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CalcTmaEstimate(int i)
{
   double sumW,sum=0;
   int k,
   j=XX0+1;
   sumW=0;
   for(k=0;k<=XX0;k++)
   {
      switch(Price)
      {  
         case     0: sum += (j - k) * iClose(NULL, TimeFrameValue, i+k);
         sumW += (j - k);break;
         case     1: sum += (j - k) * iOpen(NULL, TimeFrameValue, i+k);
         sumW += (j - k);break;
         case     2: sum += (j - k) * iHigh(NULL, TimeFrameValue, i+k);
         sumW += (j - k);break;
         case     3: sum += (j - k) * iLow(NULL, TimeFrameValue, i+k);
         sumW += (j - k);break;
         case     4: sum += (j-k)*((iHigh(NULL,TimeFrameValue,i+k) +iLow(NULL,TimeFrameValue,i+k))/2);
         sumW += (j - k);break;
         case     5: sum += (j - k) * (   (  iHigh(NULL, TimeFrameValue, i+k) +iLow(NULL,TimeFrameValue, i+k) +iClose(NULL,TimeFrameValue, i+k))/3);
         sumW += (j - k);break;
         case     6: sum += (j - k) * (   (  iHigh(NULL, TimeFrameValue, i+k) +iLow(NULL,TimeFrameValue, i+k)+iClose(NULL,TimeFrameValue, i+k)+iClose(NULL,TimeFrameValue,i+k))/4);
         sumW += (j - k);break;
         default   : sum += (j - k) * iClose(NULL, TimeFrameValue, i+k);
         sumW += (j - k);break;
      }                          
   }
   j = XX0;
   for (k = i-1; k >= 0; k--)
   {
      switch(Price)
      {  
         case     0: sum += j * iClose(NULL, TimeFrameValue, k);
         sumW += j;break;
         case     1: sum += j * iOpen(NULL, TimeFrameValue, k);
         sumW += j;break;
         case     2: sum += j * iHigh(NULL, TimeFrameValue, k);
         sumW += j;break;
         case     3: sum += j * iLow(NULL, TimeFrameValue, k);
         sumW += j;break;
         case     4: sum += j *(( iHigh(NULL, TimeFrameValue, k) +iLow(NULL, TimeFrameValue, k))/2);
         sumW += j;break;
         case     5: sum += j *(   ( iHigh(NULL, TimeFrameValue, k) +iLow(NULL, TimeFrameValue, k) +iClose(NULL, TimeFrameValue, k))/3);
         sumW += j;break;
         case     6: sum += j *(   ( iHigh(NULL, TimeFrameValue, k) +iLow(NULL, TimeFrameValue, k) +iClose(NULL, TimeFrameValue, k) +iClose(NULL, TimeFrameValue, k))/4);
         sumW += j;break;
         default   : sum += j * iClose(NULL, TimeFrameValue, k);
         sumW += j;break;
      }               
      j--;
   }
   switch(Price)
   {  
      case 0   :PriorTick = Close[0];break;
      case 1   :PriorTick = Open[0];break;
      case 2   :PriorTick = High[0];break;
      case 3   :PriorTick = Low[0];break;
      case 4   :PriorTick = (High[0]+Low[0])/2;break;
      case 5   :PriorTick = (High[0]+Low[0]+Close[0])/3;break;
      case 6   :PriorTick = (High[0]+Low[0]+Close[0]+Close[0])/4;break;
      default  :PriorTick = Close[0];break;
  }
  return(sum/sumW);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CalcTmaUpdate( double PreviousTma)
{
   double r;
   switch(Price)
   {  
      case 0   :  r = PreviousTma + (Close[0] - PriorTick) * TickScaleFactor;
      PriorTick = Close[0];
      break;
      case 1   :  r = PreviousTma + (Open[0] - PriorTick) * TickScaleFactor;
      PriorTick = Open[0];
      break;
      case 2   :  r = PreviousTma + (High[0] - PriorTick) * TickScaleFactor;
      PriorTick = High[0];
      break;
      case 3   :  r = PreviousTma + (Low[0] - PriorTick) * TickScaleFactor;
      PriorTick = Low[0];
      break;
      case 4   :  r = PreviousTma + ((High[0]+Low[0])/2 - PriorTick) * TickScaleFactor;
      PriorTick = (High[0]+Low[0])/2;
      break;
      case 5   :  r = PreviousTma + ((High[0]+Low[0]+Close[0])/3 - PriorTick) * TickScaleFactor;
      PriorTick = (High[0]+Low[0]+Close[0])/3;
      break;
      case 6   :  r = PreviousTma + ((High[0]+Low[0]+Close[0]+Close[0])/4 - PriorTick) * TickScaleFactor;
      PriorTick = (High[0]+Low[0]+Close[0]+Close[0])/4;
      break;
      default  :  r = PreviousTma + (Close[0] - PriorTick) * TickScaleFactor;
      PriorTick = Close[0];
      break;
  }            
  return( r );
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int stringToTimeFrame(string tfs)
{
   tfs=StringUpperCase(tfs);
   for(int i=ArraySize(iTfTable)-1;i>=0;i--)
   {
      if(tfs==sTfTable[i] || tfs==""+iTfTable[i])  return(iTfTable[i]);
   }
   return(Period());
   
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string TimeFrameValueToString(int tf)
{
   for(int i=ArraySize(iTfTable)-1; i>=0; i--)  {if(tf==iTfTable[i]) return(sTfTable[i]);}
   return("");
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string StringUpperCase(string str)
{
   string   s=str;
   for(int length=StringLen(str)-1; length>=0; length--)
   {
      int tchar=StringGetChar(s,length);
      if((tchar > 96 && tchar < 123) || (tchar > 223 && tchar < 256))   s=StringSetChar(s,length,tchar-32); else  if(tchar>-33 && tchar<0)  s=StringSetChar(s,length,tchar+224);
   }
   return(s);
}
//+------------------------------------------------------------------+
//|
//+------------------------------------------------------------------+
int Fixedindication(int Lin0=0,string s00="",color cr0=White)
{
   string   sob="I05292119"+string(Lin0);
   int   j0=13,xx0=0;
   int   yy0=13+(5+j0)*Lin0;
   ObjectCreate(sob,OBJ_LABEL,0,0,0);
   ObjectSet(sob,OBJPROP_XDISTANCE,xx0);
   ObjectSet(sob,OBJPROP_YDISTANCE,yy0);
   ObjectSetText(sob, s00,j0,"Verdana",cr0);
   return(0);
}
//+------------------------------------------------------------------+
//|   
//+------------------------------------------------------------------+
int YearPass()
{
return(-1);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit() 
{
   return(0); 
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2022.05.30 12:56:58
コメント(0) | コメントを書く


PR

キーワードサーチ

▼キーワード検索

プロフィール

論理学者

論理学者

お気に入りブログ

まだ登録されていません

コメント新着

aki@ Re:買い物(03/21) この様な書込大変失礼致します。日本も当…
188BET 田中竜司@ 188BETオンラインカジノのご紹介のご相談 運営者様 オンラインカジノ・スポーツブ…
論理学者@ Re:成績(04/05) 一年間でのバックテストの結果です。 いび…
188BET 田中竜司@ 188BETオンラインカジノ・スロットのご紹介のご相談(188BET) 188BETオンラインカジノ・スロットのご紹…
188BET 田中竜司@ Re:御金払い、パクベガス オンラインカジノゲームの有料会員になりました。(04/07) 運営者様 オンラインカジノ・スロットの1…

© Rakuten Group, Inc.