[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 105

 

皆さん、こんにちは。

45度の線を2本引くインジケータを作ったのですが、交差したときに水平になるようにしたいのです。

では、どのように交差点を計算すればよいのでしょうか。

前日のLow/Highで一点突破で描きました。

このような線を得るために、ある点から一日の始まりに線を引き、反対側には光線の点から線を引きます。

再計算するコードはどのように書けばいいのでしょうか?まだやってません。

Вот начну искат как цена двигается-толко надо увидет ее-первая ест,но вторая 0:
price1 = NormalizeDouble(ObjectGet("Dn",OBJPROP_PRICE1),Digits);
price2 = NormalizeDouble(ObjectGet("Dn",OBJPROP_PRICE2),Digits);
Time_start - ето синяя вертикалная линия
double b3=iBarShift(Symbol(),0,Time_start);      
double b4=iBarShift(Symbol(),0,TimeCurrent());
ну и цикл поиска
for(int j = b4;j <= b3;j++){
Ну що искат,если я не вижу то,что ищу?
Застрял.
 
bond007:
......そして、どうやってそれを知ることができるのだろうか?)
私はちょうど理解していない... 彼らはあなたがEAで取引することができると言う、他の人があなたができないと言う - 例えば証券会社は、EAを使用して許可する場合は、どのように? 私は、彼らが見つけるEAのコードに興味があるのですか?

証券会社がコードを見ることができない...。注文の強弱や注文時のコメントしか見てくれない・・・。端末でのEAの作業を禁止しているDTもあるようですが・・・。EAをチャートに貼り付けても、取引されないということです。サーバーの設定で許可されていない場合、ブローカーはエラー xxx または次のようなものを表示します 2013.01.18 22:45:03 '30xxxxx': 専門家による取引は禁止されています



つまり、なぜコードのことがそんなに気になるのかがわからないのです。

 
hoz:

ありがとうございます、これで食欲が湧きますね :)
よかったですね。単純なものから複雑なものへと徐々に理解していくことで、どんなプログラムでも書くのに必要なプログラミングができるようになります。がんばってください。
 
mario065:

皆さん、こんにちは。

45度の線を2本引くインジケータを作ったのですが、交差したときに水平になるようにしたいのです。

では、どのように交差点を計算すればよいのでしょうか。

前日のLow/Highで一点突破で描きました。

このような線を得るために、ある点から一日の始まりに線を引き、反対側には光線の点から線を引きます。

再計算するコードはどのように書けばいいのでしょうか?まだやってません。

助けるために
 
drknn:

対数グラフというのはどういう意味ですか?例を挙げてください。私など、対数チャートの目盛りという概念にしか出会ったことがありません。MT4ターミナルには、すでにこの目盛りが付いています。
対数スケールのことです。 MTではどのように検索すればよいのですか?長年使ってきて、もう何が何だかわからなくなった。
 
mario065:

皆さん、こんにちは。

45度の線を2本引くインジケータを作ったのですが、交差したときに水平になるようにしたいのです。

では、どのように交差点を計算すればよいのでしょうか。

前日のLow/Highで一点突破で描きました。

このような線を得るために、ある点から一日の始まりに線を引き、反対側には光線の点から線を引きます。

再計算するコードはどのように書けばいいのでしょうか?まだやってません。



イゴール・キムの

関数 CrossPointOfLines()

 

アレクセイ、アルテム、ありがとうございました。

イゴール・キムの機能を覚える

 

だから、ドットは2つではなく、1つしかないんです。

これがソーズです。

//+------------------------------------------------------------------+
//|                                                     TRIANGLE.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013,mario"
#property link      ""

#property indicator_chart_window
extern string   TimeStart  = "Час за начало";
extern datetime Time_start = D'17.01.2013';
extern int      Days       = 1;
bool            New_Bar    = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){
   ObjectsDeleteAll(0,OBJ_TRENDBYANGLE);
   ObjectsDeleteAll(0,OBJ_VLINE);
   Comment("");return(0);}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  { 
   datetime New_Time,time_next,time_barh,time_barl;
   time_next = Time_start + Days*86400;
   datetime new_day = iTime(Symbol(),PERIOD_D1,0);
//+------------------------------------------------------------------+
   if(New_Time != new_day)                        
           {
           New_Time = new_day;                         
           New_Bar  = true;
           }
//+------------------------------------------------------------------+ 
//Шифтвам 
   double b1=iBarShift(Symbol(),0,Time_start);      
   double b2=iBarShift(Symbol(),0,time_next);
   double min = 3,max = 0;
   for(int i = b2;i <= b1;i++){
      if(iHigh(Symbol(),0,i)>max){ max=iHigh(Symbol(),0,i);time_barh = Time[i];}
      if(iLow (Symbol(),0,i)<min){ min=iLow (Symbol(),0,i);time_barl = Time[i];}
      }
   if(New_Bar == true){ 
      ObjectsDeleteAll(0,OBJ_TRENDBYANGLE);
      ObjectsDeleteAll(0,OBJ_VLINE);
      DrawLine("Start",0,Time_start,0,Time_start,0,0,0,2,Aqua,false);
      DrawLine("Up",3,time_barh,max,0,0,315.0,0,2,DeepSkyBlue,true);
      DrawLine("Up1",3,time_barh,max,Time_start,0,315.0,0,2,DeepSkyBlue,false);
      DrawLine("Dn",3,time_barl,min,0,0,45.0,0,2,Orange,true);
      DrawLine("Dn1",3,time_barl,min,Time_start,0,45.0,0,2,Orange,false);
    }
//+------------------------------------------------------------------+
   double spead = MarketInfo(Symbol(),MODE_SPREAD);
//+------------------------------------------------------------------+ 
   Comment("\nВреме на брокера: ",TimeToStr(TimeCurrent(),TIME_SECONDS),", Локално време: "+TimeToStr(TimeLocal(),TIME_SECONDS),
           "\nТекущ спред: ",DoubleToStr(spead/10,1),
           "\n min:        ",DoubleToStr(min,Digits),
           "\n max:       ",DoubleToStr(max,Digits)
           );
   return(0);
  }
//+------------------------------------------------------------------+
void DrawLine(string name,int lines,datetime time1,double value,datetime time2,double value1,double grd,int style,int wid,color col,bool ray)
{
   ObjectCreate(name,lines,0,time1,value,time2,value1);
   ObjectSet(name,OBJPROP_ANGLE,grd);
   ObjectSet(name,OBJPROP_COLOR,col);
   ObjectSet(name,OBJPROP_STYLE,style);
   ObjectSet(name,OBJPROP_WIDTH,wid);
   ObjectSet(name,OBJPROP_RAY,ray);
}
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Вычисляет координаты точки пересечения двух прямых.            |
//|             Каждая прямая задаётся парой координат своих точек.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив абсцисс              x[0], x[1] - первая прямая              |
//|                                    x[2], x[3] - вторая прямая              |
//|    y - массив ординат              y[0], y[1] - первая прямая              |
//|                                    y[0], y[1] - вторая прямая              |
//|    t - массив искомых координат    t[0]       - абсцисса                   |
//|                                    t[1]       - ордината                   |
//+----------------------------------------------------------------------------+
void CrossPointOfLines(double& x[], double& y[], double& t[]) {
  double z=(y[3]-y[2])*(x[1]-x[0])-(y[1]-y[0])*(x[3]-x[2]);
  ArrayResize(t, 2);
  ArrayInitialize(t, 0.0);

  if (z==0) Print("CrossPointOfLines(): Не удалось найти точку пересечения!");
  else {
    double xy1=x[1]*y[0]-x[0]*y[1];
    double xy2=x[3]*y[2]-x[2]*y[3];
    t[0]=NormalizeDouble((xy1*(x[3]-x[2])-xy2*(x[1]-x[0]))/z, 0);
    t[1]=(xy1*(y[3]-y[2])-xy2*(y[1]-y[0]))/z;
  }
}

コード自体は非常にシンプルですが、ドットは1つだけです。

 

テスターでビジュアルモードのDailyPivotPointsインジケータが、すべての日付で今日のデータしか表示しない理由を知っている人はいますか?

また、可能であれば、履歴にあったものを表示するために、何を追加すべきでしょうか?ありがとうございました。

 
lenalebedeva:
具体的には対数スケールということですが、MTではどのように見つけるのでしょうか?長年使っていて、すでに何があるのかわからない。

参照

追伸

例えば、過去の安値のトレンドをチャートで見て、チャートの端に向かって、窓の外にさらに低くシフトしていることを確認します。チャートを未来に向かってスクロールさせると、チャートが自動的に上に移動し、下図のローソク足を見るためのスペースが空きます。そして、これまでチャートウィンドウの上部に見えていたものが、さらに上部、チャートウィンドウの外側に移動しています。これは、チャート上に対数価格スケールを実装したものです。これがないと、チャートを左右だけでなく、上下にスクロールさせなければなりません。そのため、チャートウィンドウにデータを表示しやすくするために、時間軸は線形、価格軸は対数になっています。

かつてコンピューターがなかった時代、トレーダーはミリメートルチャートを使い、そこに価格をプロットしてトレンドやターニングポイントを予測した。そのため、紙の上には価格と時間という2つの尺度があった。これは2つのリニアスケールです。この1年間の15分足のローソク足をすべて収めるには、1ミリの紙がどれほどの大きさになるか、想像がつくだろうか。確かに、部屋の壁と同じくらいの大きさ(大きくないとしても)でしょう。つまり、画面上でチャートをスクロールしているときに、壁に価格のローソク足チャートが描かれている、というモデルをイメージしてください。また、長方形(例:赤)の枠がありますが、これはモニターです。チャートに沿って移動するということは、この赤い長方形をトレンドに沿って移動させることに他なりません。でも、そうすると、モニターの中のスケールは両方ともリニアだと言うことになりますよね。これは真実ですが、部分的にしかありません - 私たちはその極端な間の距離を測定する場合、ポイントの数は同じままですが、チャートをスクロールすると、大きな(視覚的に大きく認識)キャンドルは、わずかなシフト後に小さくなっていることに注意してください。

ほら、同じチャートのスクリーンショットが2枚あるでしょ。最初のスクリーンショットは、あくまでスクリーンショットです。2枚目は同じ画面のスクリーンショットですが、マウスホイールを1クリック回した後、チャートがローソク足数本分後ろにずれています。紙を取り、最初のスクリーンショットに貼り付け、赤でマークされたローソクの高値と安値に印をつけます。そして、マークしたリスクを2枚目のスクリーンショットで同じローソク足に移動させます。何を言っているのか、対数尺度のシフトとは何か(ここでいう尺度の偏在の本質とは何か)が理解できるはずです。

また、なぜ対数スケールのニュアンスにこだわる必要があるのでしょうか?その中で、どんなことを期待していたのでしょうか?