StopLoss Take Profit в ордерах

 
стоплоссы и тейк профиты в ордерах - в меню изменения ордера хорошо сделано - "ближайший", но при первой постановке ордера этого нет.
в обоих случаях очень удобно наличие кнопочек которая или подставляет значение ближайший или установленный юзером в настройках - мой тейкпрофит - мой стоплосс
Например обе надписи рядом с окошком показывают:

Ближайший: (15 пунктов) 1.2345
Мой стандартный: (20 пунктов) 1.2355 - это значение можно сохранять также в профайле
при щелчке на надписи цифра переносится в поле ввода
и одна доп. кнопка между ними - подставить мои стандартные стопы

эту функцию лучше сделать и в установке ордера и в редактировании


Каждый ведь сталкивался - пока наберешь 4 числа вычисляя уровень стопов рынок уже ушел
Приходится сначала устанавливать ордер, а потом редактироать стоплоссы.

Отключение кнопки если уровень не тот и кнопочки инкремента это рулез, спасибо
 
А я вот как сделал:
Написал два скрипта "SetOrder_Sell" и "SetOrder_Buy", которые находят последний фрактал вниз (для SetOrder_Buy), и в OrderSend() подставляют это значение минус три пипса для StopLoss.
Теперь, запустив этот скрипт, получаю сразу ордер с нужными мне уровнями.
Одно плохо - нельзя запускать скрипты горячими клавишами и нет окон диалога для ввода каких-то моих параметров.

Вот отсюда и два вопроса к разработчикам:

1. Можно ли назначить горячие клавиши для скриптов?
2. Нельзя ли ввести диалоги с разными там кнопочками и полями для ввода?

Это не требование и даже не пожелание, просто вопрос :)

С уважением и т.д.
 
prodox , подобное предлагал, поэтому полностью поддерживаю.
 
1. мы думаем, как сделать назаначение горячих клавиш для скриптов
2. если Вы напишете соответсвующую по составу dll, то нет проблем. вот пример вызова стандартного виндосовского месседж бокса
#import "user32.dll"
int MessageBoxA(int,string,string,int);
#import

#define MB_OK                       0x00000000
#define MB_OKCANCEL                 0x00000001
#define MB_ABORTRETRYIGNORE         0x00000002
#define MB_YESNOCANCEL              0x00000003
#define MB_YESNO                    0x00000004
#define MB_RETRYCANCEL              0x00000005
#define MB_ICONHAND                 0x00000010
#define MB_ICONQUESTION             0x00000020
#define MB_ICONEXCLAMATION          0x00000030
#define MB_ICONASTERISK             0x00000040
// Dialog Box Command IDs
#define IDOK            1
#define IDCANCEL        2
#define IDABORT         3
#define IDRETRY         4
#define IDIGNORE        5
#define IDYES           6
#define IDNO            7
#define IDCLOSE         8
#define IDHELP          9

int some_func()
{
    string sret;
    int  retinit = MessageBoxA(0,"Return value from this MessageBox\nwill be analyzed",
                               "from some_func",
                               MB_ABORTRETRYIGNORE | MB_ICONASTERISK);

    switch(retinit)
    {
        case IDOK :     sret="IDOK";     break;
        case IDCANCEL : sret="IDCANCEL"; break;
        case IDABORT :  sret="IDABORT";  break;
        case IDRETRY :  sret="IDRETRY";  break;
        case IDIGNORE : sret="IDIGNORE"; break;
        case IDYES :    sret="IDYES";    break;
        case IDNO :     sret="IDNO";     break;
        case IDCLOSE :  sret="IDCLOSE";  break;
        case IDHELP :   sret="IDHELP";   break;
        default :       sret=retinit;
    }
    Print(sret);
}
 
круто конечно, но разработчика легче сделать щелчок для подстановки в поле
 
прочитал этот текст. скопировал в скрипт. поэксперементировал.
ни-че-го не получилось. даже откомпилировать не смог. пробовал создавать "user32.dll" и как-то их связать, но, опять же ничего...
Slawa, не могли бы вы дать пояснения к коду? Предвижу ответ: "изучайте С++", и не обижусь, если так и будет. Но, если, можно, помогите разобраться.
буду рад любому участию
 
Уважаемый компостер!
Вы, если уж ступили на тропу программирования, старайтесь мыслить системно :)
А то Ваш пост напоминает мне небезызвестное письмо в газету: "Уважаемые ученые! У нас в подвале что-то стучит. Не могли бы вы рассказать нам, что это такое" :)
Вы, когда задаете Ваши вопросы, пробуйте мысленно представить себя на месте спрашиваемого. Ну, как минимум, скажите хоть, что компилятор-то Вам говорит :)))
Библиотеку "user32.dll" не надо создавать! Это системная библиотека и она уже давно создана програмерами из Microsoft. Она лежит в папке "C:\WINDOWS\system32" и пусть себе там и лежит.
Попробуйте еще раз. Создайте новый скрипт, удалите полностью весь код, подставляемый по умолчанию и вставьте этот код:
#import "user32.dll"
int MessageBoxA(int,string,string,int);
#import

#define MB_OK                0x00000000
#define MB_OKCANCEL          0x00000001
#define MB_ABORTRETRYIGNORE  0x00000002
#define MB_YESNOCANCEL       0x00000003
#define MB_YESNO             0x00000004
#define MB_RETRYCANCEL       0x00000005
#define MB_ICONHAND          0x00000010
#define MB_ICONQUESTION      0x00000020
#define MB_ICONEXCLAMATION   0x00000030
#define MB_ICONASTERISK      0x00000040
#define IDOK     1
#define IDCANCEL 2
#define IDABORT  3
#define IDRETRY  4
#define IDIGNORE 5
#define IDYES    6
#define IDNO     7
#define IDCLOSE  8
#define IDHELP   9

int start() {
   string sret;
   int  retinit;
   retinit=MessageBoxA(0,"this is s message","this is a caption",MB_ABORTRETRYIGNORE | MB_ICONASTERISK);
   
   switch(retinit) {
      case IDOK: sret="IDOK"; break;
      case IDCANCEL: sret="IDCANCEL"; break;
      case IDABORT: sret="IDABORT"; break;
      case IDRETRY: sret="IDRETRY"; break;
      case IDIGNORE: sret="IDIGNORE"; break;
      case IDYES: sret="IDYES"; break;
      case IDNO: sret="IDNO"; break;
      case IDCLOSE: sret="IDCLOSE"; break;
      case IDHELP: sret="IDHELP"; break;
      default: sret="not case!!!";
   }

   Alert("sret= "+sret);
   return(0);
}



компильните. Если не компилится, напишите, что компилятор говорит.

С уважением и т.д.

 
Только перед запуском скрипта не забудьте поставить галку "Allow DLL imports" в "Options/Expert Advisors"

[img]C:\1.jpg[/img]
 
<img>C:\1.jpg</img>
 
не могу картинку вставить :(((
 
понятно. надо сначала картинку закинуть на какой либо сервер. а уже потом дать ссылку на нее.
Для особо сообразительных написано же
Картинки вставляются через

:) :) :)
Причина обращения: