//+------------------------------------------------------------------------------------------+//| DeleteObject.mq4 |//+------------------------------------------------------------------------------------------+//+------------------------------------------------------------------------------------------+//| script program start function |//+------------------------------------------------------------------------------------------+//---------------------------------------------------------------------------------------- 1 -#include <Копия WinUser32.mqh> //подключаемый файл, к-й неожходим для работы функции MessageBox: в этом файле в отличии от файла <WinUser32.mqh> в разделе MessageBox() Flags добавлена строка: #define MB_CANCELTRYCONTINUE 0x00000006 //---------------------------------------------------------------------------------------- 2 -int start()
{
double Timestart=GetTickCount(); //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта if(ObjectsTotal()==0) //если объектов на графике нет
{ //начало ifAlert("На графике нет графических объектов"); //то делаем сообщение на экран...return; //...и выходим
} //конец if Alert("На графике зафиксировано ",ObjectsTotal()," Объектов");
Sleep(3000);
int ret=MessageBox("Удалить ВСЕ графические объекты?","Удаление графических объектов",MB_YESNO|MB_ICONQUESTION);//функция MessageBox: вопрос на экранif(ret==6) //если ответ ДА,...
{
ObjectsDeleteAll(); //..., то удаляем ВСЕ объекты из ВСЕХ окон текущего графикаif(!ObjectsDeleteAll())Alert("При удалениии объектов возникла ошибка ",GetLastError());//если удаление не удалось, то сообщение на экранAlert("ВСЕ графические объекты успешно удалены"); //сообщение на экран в случае успешного удаления сех объектовreturn; //и выход из start
} //конец if //--------------------если ответ НЕТ? то перебираем объекты по списку---------------------- 3 -int obj_total=ObjectsTotal(); //получаем общее количество графических объектовstring obj_name; //объявляем переменную "имя объекта"for(int i=obj_total-1;i>=0;i--) //цикл по удалению объекта
{ //начало for
obj_name=ObjectName(i); //имя текущего удаляемого объектаAlert("Удаляется объект: ",obj_name); //сообщение на экран
ret=MessageBox("Удалить графический объект?","Удаление графического объекта",MB_YESNO|MB_ICONQUESTION);//функция MessageBox: вопрос на экранif(ret==7)continue; //если ответ НЕТ, то на следующую итерацию ObjectDelete(obj_name); //если ответ ДА, то удаляем текущий объект с именем obj_name int error=GetLastError(); //вычисляем код возможной ошибки, к-я могла появиться при неудачном удалении Графического объекта номер iif(error!=0)Alert("При удалении объекта ",obj_name," возникла ошибка ",error);continue;//если функция ObjectDelete(obj_name) вернуа значение ЛОЖЬ (т.е. не удалила текущий объект), то сообщение об ошибке при удаленииAlert("Объект ",obj_name," успешно удален"); //сообщение об успешном удалении
} //конец forComment("\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",MathFloor((GetTickCount()-Timestart)/1000)," секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000," миллисекунд");//печать сообщения вна экран//---------------------------------------------------------------------------------------- 3 -return(0);
}
//---------------------------------------------------------------------------------------- 4 -
int error=GetLastError(); //вычисляем код возможной ошибки, к-я могла появиться при неудачном удалении Графического объекта номер iif(error!=0)Alert("При удалении объекта ",obj_name," возникла ошибка ",error);continue;//если функция ObjectDelete(obj_name) вернуа значение ЛОЖЬ (т.е. не удалила текущий объект), то сообщение об ошибке при удаленииAlert("Объект ",obj_name," успешно удален"); //сообщение об успешном удалении
以下のスクリプトを書きました。
2語で。このスクリプトは、クライアント端末のウィンドウからグラフィカルオブジェクトを削除 するためのものです。このスクリプトは、すべてのオブジェクトを削除するか、一連のオブジェクトを経由してユーザーが選択したものだけを削除するかの2つの方法で使用することができます。
質問:次のオブジェクトが削除された後のwhile ループで、最後のAlert("Object ",obj_name," successfully deleted")関数が対応するメッセージを画面に表示せず、何も表示されないのはなぜですか(while ループ内でオブジェクトが削除されているのに)?
注:スクリプトのヘッダーにあるインクルードファイル#include < WinUser32.mqh> の行は、クライアント端末に付属するオリジナルのインクルードファイル#include <WinUser32.mqh> と異なるので、以下にも記載します。
P.S. フォーラムを散らかさないために、あらかじめご回答をお願いいたします。
具体的にどのインジケーターを交換すればいいのでしょうか?今でも別売りで出ているのでは?
例えばMAにはありますが、選択肢が少なく、おっしゃるようなものはありません。
したがって、ほとんどすべてのインジケーターを取り出して、その汎用性を自分で作ることができるのです。
質問:while ループで、次のオブジェクトが削除された後、最後の関数Alert("Object ",obj_name," successfully deleted") が対応するメッセージを画面に表示せず、自分自身も何も表示しないのはなぜですか(対応するオブジェクトはwhile ループで削除されているのに)。
私はまだ何も理解していないと言うことができる、私はそれがお金を稼ぐことについてのすべてであることを一つのことを理解し、彼らは負けている場合、なぜアドバイザーを行うには、週に一度プラットフォームを入力し、3000の預金で1000を獲得することができます。
こんにちは!ループのカウンター(例えばFOR)を現在の日中の注文を検索させる方法を教えていただけませんか?
ExistInHistoryToDay()です。
ただ、この迷宮入りプログラマーたちは、週に一度でも出社してシュッと稼ぐ心意気はない。みんな疲れていて、儲からないんです。
+100500 8-)
ただ、この迷宮入りプログラマーたちは、週に一度でも出社してシュッと稼ぐ心意気はない。嫌気がさして、金儲けしたいだけなんだよ。
風船はどうする?
これは私のアイデアです。
注文を開いて、それがどのようなバランスでクローズされたかによります。
残高が0より小さければ損失を計上し、0より大きければ初めからやり直す。
損失がゼロより小さい場合、それを確定して変数に割り当てた、例えば: マイナス
マイナス=OrderProfit(-45セント)。
AccountAqviti + Minus + 自分の価値(自分の良心)
次発
この注文の利益がAccountAqviti + マイナス + 私の値(私の良心)より高ければ、注文を閉じ、そうでなければ、ゼロより高く行き、それを修正する。
(AccountAqviti + OrderProfit) - (AccountAqviti + マイナス + 自分の価値(良心)) = マイナス
もしMinus >= 0なら、Minus = 0とする。