//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка текстовой метки, объект OBJ_LABEL. |//+----------------------------------------------------------------------------+//| Параметры: |//| nm - наименование объекта |//| tx - текст |//| cl - цвет метки |//| xd - координата X в пикселах |//| yd - координата Y в пикселах |//| cr - номер угла привязки (0 - левый верхний, |//| 1 - правый верхний, |//| 2 - левый нижний, |//| 3 - правый нижний ) |//| fs - размер шрифта (9 - по умолчанию ) |//+----------------------------------------------------------------------------+voidSetLabel(stringnm, stringtx, colorcl, intxd, intyd, intcr=0, intfs=9){if(ObjectFind(nm)<0)ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER , cr);
ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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] - ордината |//+----------------------------------------------------------------------------+voidCrossPointOfLines(double& x[], double& y[], double& t[]){doublez=(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{doublexy1=x[1]*y[0]-x[0]*y[1];
doublexy2=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;
}}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка объекта OBJ_REGRESSION канал линейной регрессии. |//+----------------------------------------------------------------------------+//| Параметры: |//| cl - цвет линии |//| nm - наименование ( "" - время открытия текущего бара) |//| t1 - время открытия бара ( 0 - Time[10]) |//| t2 - время открытия бара ( 0 - Time[0]) |//| ry - луч (False - по умолчанию) |//| st - стиль линии ( 0 - простая линия) |//| wd - ширина линии ( 1 - по умолчанию) |//+----------------------------------------------------------------------------+voidSetRegression(colorcl, stringnm="", datetimet1=0, datetimet2=0,
boolry=False, intst=STYLE_SOLID, intwd=1){if(nm=="")nm=DoubleToStr(Time[0], 0);
if(t1<=0)t1=Time[10];
if(t2<=0)t2=Time[0];
if(ObjectFind(nm)<0)ObjectCreate(nm, OBJ_REGRESSION, 0, 0,0, 0,0);
ObjectSet(nm, OBJPROP_TIME1, t1);
ObjectSet(nm, OBJPROP_TIME2, t2);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_RAY , ry);
ObjectSet(nm, OBJPROP_STYLE, st);
ObjectSet(nm, OBJPROP_WIDTH, wd);
}
もう一つ質問ですが、私が自分の関数で、いわば標準化のために、あなたの構文と変数名を使っても構いませんか?
自分が正しいと思うことをする。
SetLabel()関数です。
この関数は、現在のチャートにOBJ_LABEL テキストラベルオブジェクトを設定します。
SetLabel()の使用例です。
ZS. SetLabel()関数をテストするスクリプトを添付します。
inluder」ファイル(mqh)を作成し(おそらく「trade」と「other」の2つ)、その名前に合意して、「開発者」に強制的に配布物に含ませる。
アイデアを殺すことはできない、統合には長い時間がかかる。プロではない私の夢は、一般のユーザーに意思決定だけを任せ、ソフトウェアの複雑さから解放することです。
イゴールの開発したもの(その一貫性とディテールの見事さ)は、これに限りなく近いものであった。さらに、著者はプログラミングだけでなく、常に自分の作品をキープしています。
実際の取引で アドバイザーが活躍し、コードの実用的な価値を高めています。
Igorの開発したものをmqh-framingする可能性や、そのような実装の利点と欠点について、Igorの意見を聞くのは興味深いことです。
Igorの開発のmqhデザインの可能性、そのような実装の利点と欠点についてのIgorの意見を知りたいです。
可能性について...
MQHのファイルは以前からやってもらっていたのですが...。まだ掲載はしていませんが...。エースがいるんだ...。最後の和音は...全機能を掲載し、mqh-filesを掲載して総括する。
長所と短所...
MQH-fileは便利です。異なるExpert Advisorで使用することができます。特定のEAのコードが大幅に削減されます。むき出しのロジックといくつかのものだけが残され、ガジェットやラッピングはすべて外に出ています。
しかし、私はmqh-filesをほとんど使わず、基本的に1つしか使いません。stdlib.mqhなんです。Expert Advisorのファイルに必要な関数を全てコピーしています。そのほうが、私には便利なんです。この習慣は、注文の多い仕事をしていたときに、しばしば1つまたは別のmqhファイルをクライアントに送信するのを忘れてしまったときに身につきました。さらに、1つのEAファイルの後にinludeの山全体をドラッグするのではなく、異なるターミナルフォルダにコピーしたいのです。
もしかしたら、便利な関数で、記事http://www.kroufr.ru/content/view/1027/124/ に書かれている注文の開始を 行うことができるスクリプトがあるかもしれません。
ない場合は、どこで手に入るかアドバイスしてください。 .
CrossPointOfLines()関数です。
この関数は、2本の直線の交点の座標を計算する。各直線は、その点の座標の組で定義される。3つの配列がパラメータとして関数に渡されます。
CrossPointOfLines()関数の使用例です。
CrossPointOfLines()関数の使用例として、従来から私のスクリプトを提供しています(添付ファイル参照)。スクリプトが正しく動作するためには、現在のチャートに、垂直、水平、トレンドのいずれかのタイプの2本の交差する線を引く必要があります。そして、そのスクリプトをチャートに添付してください。このスクリプトは、2本の線の交点で左の価格をマーク する結果となります。
SZY. CrossPointOfLines()関数をテストするスクリプトを添付しています。
SetRegression()関数です。
この関数は、現在のチャートの線形回帰チャネルのOBJ_REGRESSION オブジェクトを設定します。