[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 272

[Удален]  

プログラマー諸氏、こんにちは。とても興味深いExpert Advisorを是非ご覧ください。私は何かを修正したい、すなわち、私は本当にそれに添付したい(できれば切り替え可能)テイクプロフィットで カスタマイズ可能なトロール。専門家であれば、それほど難しいことではないと思います(期待します)!

/*このフォーラムでのデコンパイルは法律違反です。

[Удален]  
Andrew1001:

プログラマー諸氏、こんにちは。とても興味深いExpert Advisorを是非ご覧ください。私は何かを修正したい、すなわち、私は本当にそれに添付したい(できれば切り替え可能)テイクプロフィットでカスタマイズ可能なトロール。専門家であれば、それほど難しいことではないと思います(期待します)!

/*このフォーラムでのデコンパイルは法律違反です。



ほらね!そして、それを見て、改善することが可能であることを、どのようにコードにレイアウトするか。(モデレータへの質問)
削除済み  
ANG3110:

まあ、そこはもっと簡単な例を書いたんですけどね。

***

また、全日程を描かずに最後の1日だけ描く場合は、少しやり方が違います。私は、よりプロフェッショナルなアプローチを提案しているだけです。

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int    hour = 5;
extern int    hrma = 24;
//==============================
double fx[];
double hm;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer(0,fx); SetIndexEmptyValue(0,EMPTY); 
   
   p=hrma*60/Period();
   
   return(0);
}
//************************************************************
int start()
{
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==1) cbi--;
   if (cbi>1) cbi=Bars-p-1;
   //-------------------------------
   for(int i=cbi; i>=0; i--)
   {
      hrp=TimeHour(Time[i+1]); 
      hr=TimeHour(Time[i]);
      
      if (hr==hour && hrp!=hr) 
      {
         fx[i+1]=EMPTY;
         hm=Close[i]; // я вставил закрытие оно работает на нижних таймфремах

//КАК ТУТ вставить High Low для  hour = 5 для ВСЕХ таймфремов ниже ограниченного таймфрема???????????

      }
      
      fx[i]=hm; 
   }
  
   return(0);
}
//***************************************************************

ONLY 特定の時間のiHighとiLowの入れ方がよくわからない、同じ時間=5; ?また同じ卵が出る.........。

PROFESSIONALLYiClose iHigh iLow を使っていたのですが、このバリエーションでどのようにコードが書かれていたのか忘れてしまいました......。原理は覚えているのですが、細かいところは忘れてしまいました。

int start()
  {
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240)  return(-1);

int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);

for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime LastD =  iTime(Symbol(), PERIOD_D1, i-1); 
int LastDay = iBarShift(Symbol(), PERIOD_D1, LastD);

if(PrevDay>LastDay)  /// что было дальше НЕПОМНЮ!!!!, НО вариант ЛУЧШЕ, можно непарясь ставить уровни iHigh iLow iClose iOpen
{ 
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time); 
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);
}

buffer[i]= CL;
}

return(0);
}

をよろしくお願いします??????????????????????

削除済み  

もう一度、助けてくださいPLEASE!!!!

特定の(H1)タイムフレームのiHigh iLowiCloseを 正しくバッファに入れ、下のチャートで正しく読めるようにするにはどうしたらよいか?

int start()
  {
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240)  return(-1);

int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);

for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime LastD =  iTime(Symbol(), PERIOD_D1, i-1); 
int LastDay = iBarShift(Symbol(), PERIOD_D1, LastD);

if(PrevDay>LastDay)  
/// что было дальше НЕПОМНЮ!!!!, НО вариант ЛУЧШЕ, можно непарясь ставить уровни iHigh iLow iClose iOpen
{ 
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time); 
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);
}

buffer[i]= CL;
}

return(0);
}
 

こんにちは、正しい書き方を教えていただけませんか?

しかし、ObjectSetTextは何もしないので、頂点のキャプションの代わりにテキストが表示されます。

ObjectCreate( "вершина",  OBJ_TEXT , WindowOnDropped( ) , Time[бар_вершина],  вершина+(10*Point)) ;  
       ObjectSet(  "вершина",  OBJPROP_COLOR, Crimson) ;
    ObjectSetText( "вершина", "вершина", 5, NULL, CLR_NONE) ;   
 
orb:

私はなぜ作成されたファイルでOpen=Close=High=Low -違いはなく、すべての価格は同じで、同じ価格の4列であることが理解できない。以下は、Expert Advisorがデータをアンロードするコードです。


インストゥルメントとタイムフレームに関連するデータがありません -- 正しいチャートを開いてください。

コードの未修正項目。

FileWrite(h,Wtime,Wday,DoubleToStr(iClose("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)),..

正解です。

FileWrite(h,Wtime,Wday,DoubleToStr(iClose("GBPUSD",0,0),MarketInfo("GBPUSD",MODE_DIGITS)),..

条件が揃えば、このコードは動作します。

 
Roll:


インストゥルメントとタイムフレームに関連するデータがありません -- 正しいチャートを開いてください。

コードの入力に誤りがある。

正解です。

条件を満たしている限り、コードは動作します。

よし、やってみよう!(笑)
 
nlp2311:

ただ、特定の時間のiHighとiLowの入れ方が不明で、同じ時間=5;になってしまい、また同じ卵になってしまいます...。

PROFESSIONALLY iClose iHigh iLow を使っていたのですが、このバリエーションでどのようにコードが書かれていたのか忘れてしまいました...。原理は覚えているのですが、細かいところは忘れてしまいました。

を理解できるようにお願いします。


他のタイムフレームから価格を取得することなく、1時間足チャート以下に時間足タイムフレームのバーを描画することができます。iHigh 等との連動は、インジケータの動作が遅くなり、他のタイムフレームをぶつける必要があるため、あまり意味がない。

1つの時間枠ですべてを行うことが可能であれば、その方が望ましい。

また、より小さなタイムフレームで1時間単位のデータで線を引くのは、現実的にどうなのでしょうか?こんな感じです。

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 Lime
//==============================
double H[],L[],O[],C[];
double hm,lm,om,cm;
int hr,hrp,di,f=0;
//************************************************************
int init()  
{   
   SetIndexBuffer(0,H);
   SetIndexBuffer(1,L);
   SetIndexBuffer(2,O);
   SetIndexBuffer(3,C);
   
   if (Period()>1440) f=1;
   
   di=60/Period();
   
   return(0);
}
//************************************************************
int start()
{
   if (f==1) {Comment("Период больше H1!"); return(0);}
   //-------------------------------
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==1) cbi--;
   if (cbi>1) 
   {
      cbi=Bars-1;
      hm=High[cbi]; 
      lm=Low[cbi]; 
      om=Open[cbi]; 
      cm=Close[cbi]; 
   }
   //-------------------------------
   for(int i=cbi; i>=0; i--)
   {
      hrp=TimeHour(Time[i+1]); 
      hr=TimeHour(Time[i]);
      
      if (hrp!=hr) 
      {
         for (int j=i+1; j<=i+di; j++)
         {
            H[j]=hm;
            L[j]=lm;
            O[j]=om;
            C[j]=cm;
         }
         
         hm=High[i];
         lm=Low[i];
         om=Open[i];
         cm=Close[i];
      }
      else
      {
         if (High[i]>hm) hm=High[i];
         if (Low[i]<lm) lm=Low[i];
         cm=Close[i];
      }
      
      H[i]=hm;
      L[i]=lm;
      O[i]=om;
      C[i]=cm;
   }
   
   return(0);
}
//***************************************************************
削除済み  
ANG3110:


時間足チャート以下では、1時間足のタイムフレームのバーと、他のタイムフレームから価格を取得せずに描画することができます。iHighなどとの連動は、インジケータの動作が遅くなり、他のタイムフレームをぶつける必要があるため、あまり意味がない。

1つの時間枠ですべてを行うことが可能であれば、その方が望ましい。

また、より小さなタイムフレームで1時間単位のデータを描くには、実際どうすればいいのでしょうか?まあ、だいたいこんな感じです。


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

ほらね!どのようにコードを公開すれば、それを見て、洗練させることができるのか?
EAの作者にソースコードを要求し、その許可を得て掲載する。