HELP: Ручное подтверждение открытия ордера

От BlackWizard0, 29 сентября, 2014 в Архив

Автор#1

Здравствуйте.
У меня советник ищет условия входа. При нахождении таковых он отправляет на почту письмо. Я захожу удаленно на терминал, смотрю ситуацию и подтверждаю или отменяю открытие ордера.
Так было до сегодняшнего дня (29.09.2014).
Но сегодня обновился терминал до 711 версии и в нем отсутствует галочка "подверждать открытие сделок вручную".
Каким образом это можно запрограммировать самому в советнике?
Мне нужно, что б советник не открывал сразу ордер, а ждал моего подтверждения.
С уважением.


Добавлено: 29-09-2014 12:39:16

Решение подсказали. Нарисовать кнопку а на неё повесить открытие ордера.

Изменено 29 сентября, 2014 пользователем BlackWizard0

#2

windll еще полгяди
заморочка, но там много чего нужного
MSDN тебе в помощь

#3

BlackWizard0,не подскажете ли решение,как повесить подтверждение сделки на кнопку?Ситуация похожая.

#4
Цитата

BlackWizard0,не подскажете ли решение,как повесить подтверждение сделки на кнопку?Ситуация похожая.


Вот код на добавление кнопки:
Спойлер

bool ButtonCreate(){
ResetLastError();
const int CID = 0;
const int SWin = 0;
if(!ObjectCreate(CID,"Button",OBJ_BUTTON,SWin,0,0)) //Создаем кнопку
{Print(__FUNCTION__,": не удалось создать кнопку! Код ошибки = ",GetLastError());return(0);}
ObjectSetInteger(CID,"кнопка",OBJPROP_CORNER,CORNER_RIGHT_UPPER); // Устанавливаем угол, где будет кнопка
ObjectSetInteger(CID,"Button",OBJPROP_XDISTANCE,215); // расстояние от угла по горизонтали
ObjectSetInteger(CID,"Button",OBJPROP_YDISTANCE,18); // расстояние от угла по вертикали
ObjectSetInteger(CID,"Button",OBJPROP_XSIZE,210); // размер кнопки по горизонтали
ObjectSetInteger(CID,"Button",OBJPROP_YSIZE,25); // ...- по вертикали
ObjectSetString (CID,"Button",OBJPROP_TEXT,"Установить ордер"); // Имя кнопки
ObjectSetInteger(CID,"Button",OBJPROP_COLOR,clrBlack); // цвет текста
ObjectSetInteger(CID,"Button",OBJPROP_BGCOLOR,clrGreenYellow); // цвет кнопки
ObjectSetInteger(CID,"Button",OBJPROP_BORDER_COLOR,clrBlack); // цвет границы
ObjectSetInteger(CID,"Button",OBJPROP_STATE,false); // нажата/отжата
return(true);}



Вот что надо сделать для того, чтобы при нажатии кнопки что-нибудь происходило:
1. Создаём функцию void Имя функции ()
2. В функции создаем переменную типа bool, которой присваиваем значение ObjectGet("Button",OBJPROP_STATE)
3. объект "кнопка" может выть всего в двух состояниях: нажата/отжата = true/false, при создании мы указали, что кнопка находится в положении false, т.е. отжата.
4. создаём условие if(наша переменная п.2 == true), то происходит открытие ордера.
5. Не забываем после установки ордера вернуть кнопку в положение "отжата", для этого добавляем вот эту строку: ObjectSetInteger(0,"Button",OBJPROP_STATE,false);
6. Не забываем вызвать функцию открытия ордера в теле функции OnTick
7. Функцию создания кнопки лучше добавить в функцию OnInit, а в функцию OnDeinit добавить вот такую строчку: ObjectDelete("Button");
Пример функции на открытие ордера с кнопки:
Спойлер

void ButtonOpenOrders()
{
ResetLastError();
bool a = ObjectGet("Button",OBJPROP_STATE);
if(a==true)
{
if(!OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,Commentary,Magic,0,clrGreen))
{
Print(__FUNCTION__,": не удалось установить ордер! Код ошибки = ",GetLastError());
return;}
ObjectSetInteger(0,"Button",OBJPROP_STATE,false);
}
ObjectSetInteger(0,"Button",OBJPROP_STATE,false);
}



P.S. Как-то так :d

Изменено 6 февраля, 2015 пользователем Whitebars

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025