Торговая панель на классах библиотеки МТ4. Дополнение |
//extern int StopDelta = 150; // отступ от цены Stop ордеров
//extern int LimitDelta = 150; // отступ от цены Limit ордеров
//+------------------------------------------------------------------+
//| class CTradePanel |
//+------------------------------------------------------------------+
class CTradePanel : public CAppDialog
{
private:
// CLabel Lots_label; // Display label " Lots"
CEdit Lots; // Display volume of next order
// CEdit LotsSell; // Display volume of next order SELL
// CEdit LotsBuy; // Display volume of next order BUY
CButton SELL,BUY; // Sell and Buy Buttons
// CButton CloseAll; // Close buttons
// добавлены кнопки
// 1 колонка
CButton CloseSell; // CloseAllSell buttons
CButton CloseSellProfit; // CloseSellProfit buttons
CButton CloseAll; // Close buttons
CButton SellLimit; // SellLimit buttons
CButton SellStop; // CloseAllSell buttons
CButton CloseStopOrders; // CloseAllStopOrders buttons
CButton ClosePendingOrders; // CloseAllPendingOrders buttons
// 2 колонка
CButton CloseBuy; // CloseAllBuy buttons
CButton CloseBuyProfit; // CloseBuyProfit buttons
CButton CloseAllProfit; // CloseAllProfit buttons
CButton BuyLimit; // BuyLimit buttons
CButton BuyStop; // BuyStop buttons
CButton CloseLimitOrders; // CloseAllLimitOrders buttons
CButton GroupOrdersVLine; // GroupOrdersVerticalLine buttons
//--- Create Label object
bool CreateLabel(const long chart,const int subwindow,CLabel &object,const string text,const uint x,const uint y,label_align align);
//--- Create Button
bool CreateButton(const long chart,const int subwindow,CButton &object,const string text,const uint x,const uint y,const uint x_size,const uint y_size);
//--- Create Edit object
bool CreateEdit(const long chart,const int subwindow,CEdit &object,const string text,const uint x,const uint y,const uint x_size,const uint y_size);
//--- On Event functions
void LotsEndEdit(void); // Edit Lot size
// void LotsSellEndEdit(void); // Edit Lot size Sell
// void LotsBuyEndEdit(void); // Edit Lot size Buy
//--- variables of current values
double cur_lot; // Lot of next order
// double cur_lotsell; // Lot of next order Sell
// double cur_lotbuy; // Lot of next order Buy
void BuyClick(); // Click BUY button
void SellClick(); // Click SELL button
// void CloseClick(); // Click CLOSE button
// добавлены кнопки
// 1 колонка
void CloseSellClick(); // CloseSell buttons
void CloseSellProfitClick(); // CloseSellProfit buttons
void CloseClick(); // Close buttons
void SellLimitClick(); // SellLimit buttons
void SellStopClick(); // SellStop buttons
void CloseStopOrdersClick(); // CloseStopOrders buttons
void ClosePendingOrdersClick(); // ClosePendingOrders buttons
// 2 колонка
void CloseBuyClick(); // CloseBuy buttons
void CloseBuyProfitClick(); // CloseBuyProfit buttons
void CloseAllProfitClick(); // CloseAllProfit buttons
void BuyLimitClick(); // BuyLimit buttons
void BuyStopClick(); // BuyStop buttons
void CloseLimitOrdersClick(); // CloseLimitOrders buttons
void GroupOrdersVLineClick(); // GroupOrdersVerticalLine buttons
//+------------------------------------------------------------------+
//| CTradePanel |
//+------------------------------------------------------------------+
bool CTradePanel::Create(const long chart,const string name,const int subwin=0,const int x1=20,const int y1=20,const int x2=320,const int y2=420)
{
// At first call create function of parents class
CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2);
// Calculate coordinates and size of BID object
// Create object
// CreateLabel(chart,subwin,LotsSell_label,"LOT",55,5,0);
CreateEdit(chart,subwin,Lots,"0.1",3,3,45,20);
// CreateEdit(chart,subwin,LotsSell,"0.1",3,3,45,20);
CreateButton(chart,subwin,SELL,"SELL",3,25,45,20);
CreateButton(chart,subwin,CloseSell,"Sell[X]",3,48,45,20);
CreateButton(chart,subwin,CloseSellProfit,"SPrf[X]",3,71,45,20);
CreateButton(chart,subwin,CloseAll,"CLOSE",3,94,45,20);
CreateButton(chart,subwin,SellLimit,"S-Lim",3,117,45,20);
CreateButton(chart,subwin,SellStop,"S-Stop",3,140,45,20);
CreateButton(chart,subwin,CloseStopOrders,"Stp[X]",3,163,45,20);
CreateButton(chart,subwin,ClosePendingOrders,"PO[X]",3,186,45,20);
////////// 2 колонка
CreateEdit(chart,subwin,Lots,"0.1",50,3,45,20);
// CreateEdit(chart,subwin,LotsBuy,"0.1",50,3,45,20);
CreateButton(chart,subwin,BUY,"BUY",50,25,45,20);
CreateButton(chart,subwin,CloseBuy,"Buy[X]",50,48,45,20);
CreateButton(chart,subwin,CloseBuyProfit,"BPrf[X]",50,71,45,20);
CreateButton(chart,subwin,CloseAllProfit,"Prft[X]",50,94,45,20);
CreateButton(chart,subwin,BuyLimit,"B-Lim",50,117,45,20);
CreateButton(chart,subwin,BuyStop,"B-Stop",50,140,45,20);
CreateButton(chart,subwin,CloseLimitOrders,"Lim[X]",50,163,45,20);
CreateButton(chart,subwin,GroupOrdersVLine,"Group",50,186,45,20);
return(true);
}
//+------------------------------------------------------------------+
//| Event Handling |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CTradePanel)
ON_EVENT(ON_END_EDIT,Lots,LotsEndEdit)
//ON_EVENT(ON_END_EDIT,LotsSell,LotsEndEdit)
//ON_EVENT(ON_END_EDIT,LotsBuy,LotsEndEdit)
ON_EVENT(ON_CLICK,SELL,SellClick)
ON_EVENT(ON_CLICK,BUY,BuyClick)
//ON_EVENT(ON_CLICK,CloseAll,CloseClick)
// добавлены кнопки
// 1 колонка
//ON_EVENT(ON_CLICK,CloseSell,CloseSellClick)
//ON_EVENT(ON_CLICK,CloseSellProfit,CloseSellProfitClick)
ON_EVENT(ON_CLICK,CloseAll,CloseClick)
//ON_EVENT(ON_CLICK,SellLimit,SellLimitClick)
//ON_EVENT(ON_CLICK,SellStop,SellStopClick)
//ON_EVENT(ON_CLICK,CloseStopOrders,CloseStopOrdersClick)
//ON_EVENT(ON_CLICK,ClosePendingOrders,ClosePendingOrdersClick)
////////// 2 колонка
//ON_EVENT(ON_CLICK,CloseBuy,CloseBuyClick)
//ON_EVENT(ON_CLICK,CloseBuyProfit,CloseBuyProfitClick)
//ON_EVENT(ON_CLICK,CloseAllProfit,CloseAllProfitClick)
//ON_EVENT(ON_CLICK,BuyLimit,BuyLimitClick)
//ON_EVENT(ON_CLICK,BuyStop,BuyStopClick)
//ON_EVENT(ON_CLICK,CloseLimitOrders,CloseLimitOrdersClick)
//ON_EVENT(ON_CLICK,GroupOrdersVLine,GroupOrdersVLineClick)
//
EVENT_MAP_END(CAppDialog)
// Create Trade Panel
TradePanel.Create(ChartID(),"Panelka",0,100,1,206,240);
18 декабря 2021
|
22 декабря 2021
|
Комментарии (14)
34 AM2 Сообщений: 15882 - Андрей
34 AM2 Сообщений: 15882 - Андрей
Могу там разметку панели с этими полями и кнопками сделать Редактирован: 22 декабря 2021, 14:47
11 preasto Автор Сообщений: 445
34 AM2 Сообщений: 15882 - Андрей
www.opentraders.ru/downloads/3205/
34 AM2 Сообщений: 15882 - Андрей
34 AM2 Сообщений: 15882 - Андрей
Окна для дистанции отложек с записью прямо в панеле тоже весьма удобны при работе.
По окнам дистанций для отложек:
Для Sell всё нормально:
Для Sell Limit берёт значение из правого окна, под кн. «Lim[X]»
для Sell Stop берёт дистанцию из левого окна под кн. «St[X]»
Но для Buy и Limit и Stop — всё берёт из левого окна под кн. «St[X]».
Просьба поправить, сделать взятие дистанции для Buy Limit из правого окна, под кн. «Lim[X]»
Т.е. левое окно дистанций отложек — для всех Стоп-ордеров,
правое — для всех Лимит-ордеров
Также панелька не работает в тестере… Хорошо бы, чтобы и в тестере заработала.
И, по-возможности, добавить параметр/функцию — виртуальные отложки (да/нет), когда выводит линию места отложки, а ордер открывает при достижении её ценой, для того же тестера в т.ч.
11 preasto Автор Сообщений: 445
правое окно селллимит селлстоп. тоже по лотам
34 AM2 Сообщений: 15882 - Андрей
правое окно — только селллимит
левое байстоп байлимит, и селлстоп
Редактирован: 28 декабря 2021, 21:27
11 preasto Автор Сообщений: 445
34 AM2 Сообщений: 15882 - Андрей
она ни с того, ни с сего пропадает из окна через неск. мин,
*глюк был в версии от 25.12.21, в версии от 28.12.21 пока всё норм.
Но когда открываешь свойства советника кнопкой с графика из меню и снова сохраняешь, появляется со сдвигом слоёв,
при этом меняешь в параметрад отступ(дельту) на 250 или др. — а вылазит в окнах всегда 300**:
**проблема начала решаться, см. след пост ниже
Редактирован: 29 декабря 2021, 11:26
11 preasto Автор Сообщений: 445
левое байстоп байлимит,
правое окно селллимит селлстоп.
И глюков при перезапуске и смене ТФ, в новой версии от 28.12.21 вроде нет, пока всё норм.
Но при смене лотов и делты в параметрах (на 0.2 и 250) — в окнах остаются те же значения: 0.1 и 300**
**проблема начала решаться, см. след пост ниже
Редактирован: 29 декабря 2021, 11:26
11 preasto Автор Сообщений: 445
34 AM2 Сообщений: 15882 - Андрей
стало в окна выводить то, что задано в этих параметрах свойств советника.
При компиляции по этим строкам пишет предупреждение:
implicit conversion from 'number' to 'string' TradePanel_28.12.21.mq4 162(строка) 33(столбец)
внесённые надписи и Lot и Delta там выделены тёмно-красным (остальной код черным)
Может что-то некорректно по правилам кода?
Что подправить?
Редактирован: 28 декабря 2021, 23:53
11 preasto Автор Сообщений: 445
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий